# Como saber si pic ya no sirve



## quevon24 (Feb 26, 2012)

Hola a todos, vengo a consultarles una duda que me ha surgido, tengo un programador minipic 2.2 clon, estoy aprendiendo a prograr pics pero me ha surgido un problema, el pickit 2 detecta el programador y el pic, pero al momento de cargar el hex me echa un error que dice:

Device Error -  hex file not loaded

Y en la pantalla del programa despues de ese error, me aparece No device found.

He probado varias veces pero me sigue echando ese error

Y he probado con un 16f84a y si me deja grabar bien.

Mi pregunta es, el pic ya no sirve? o como puedo saber si ya no sirve?


----------



## Juan Mesa (Feb 26, 2012)

creo tendrias que poner software de grabacion (debe ser pickit o mplab no?) y pic que usaste

proba a hacer un "read" en el programa a ver si te lo lee


----------



## quevon24 (Feb 26, 2012)

Juan Mesa dijo:


> creo tendrias que poner software de grabacion (debe ser pickit o mplab no?) y pic que usaste
> 
> proba a hacer un "read" en el programa a ver si te lo lee




Es pickit 2 programmer, y el pic es el 16f628a.

Ya hice lo que mencionas, despues de darle click en read, me aparece en amarillo: No Device Detected.


----------



## Juan Mesa (Feb 26, 2012)

el pic era nuevo o ya usado? y cuanto tiempo


----------



## quevon24 (Feb 26, 2012)

Nuevo, tiene como una semana que lo compre.

Se pudo haber quemado o algo asi por estatica?



Juan Mesa dijo:


> el pic era nuevo o ya usado? y cuanto tiempo


----------



## Juan Mesa (Feb 26, 2012)

todo componente electronico de este tipo son sensibles a estatica... personalmente nunca queme uno (o nada directamente) por estatica, pero es posible...

cuando lo colocaste o sacaste del zocalo para programar tenias el programador conectado? (a la placa zif o al puerto usb si es todo en la misma plaqueta)

hasta donde se el 84 y el 628 son casi identicos, pero revisa las conecciones del programador/pic

probaste con un programa que sepas que funciona? para descartar, igual el problema es programador/pic si dijiste que en "read" te da el mismo problema...

proba con otro cable USB (si es posible y no esta soldado a la placa)

y nuevamente revisa las conecciones para descartar eso, si no si, seguramente este malo

si compraste otro en el mismo momento proba a ver si te hace lo mismo (pudo venir malo) y si podes (no se lo barato que sera en donde lo compras) consegui otro del mismo lugar, si esta malo tambien reclamalo y que prueben uno nuevo ellos con sus cosas a ver si esta bien (puede venir alguna partida mala o ... ser pirata? :S )


----------



## Daniel Meza (Feb 26, 2012)

lee los últimos comentario de este post, allí menciono una posible solución a este error (siempre y cuando utilices el reloj interno del PIC y el pin MCLR como entrada), no se si sea tu caso
Saludos


----------



## quevon24 (Feb 27, 2012)

En cuanto pueda probare aver si ya funciona, creo que comprare otro para checar si si graba vien, por que El 84a si me deja grabar y eso


----------



## ilcapo (Feb 27, 2012)

HOla amigo los pickit 2 suelen tener un jumper que se debe cambiar segun la cantidad de "patitas" que tenga el chip tal vez te haz olvidado de seleccionar adecuadamente esto !! saludos!


----------



## quevon24 (Feb 27, 2012)

ilcapo dijo:


> HOla amigo los pickit 2 suelen tener un jumper que se debe cambiar segun la cantidad de "patitas" que tenga el chip tal vez te haz olvidado de seleccionar adecuadamente esto !! saludos!



Si gracias por la informacion, ya cheque y vienen 2 opciones dspic y pic, esta colocado en pic.



Ya solucionado, compre otro pic 16f628a y ya lo detecta y lo graba bien.

Aunque una duda, a fuerza le tiene que dar los 5 Volts exactos al pic? ya que la fuente que use con el anterior pic que no funciona era de 5 pero daba un poco mas de los 5, no se si eso tal vez haya causado el problema.


----------



## Juan Mesa (Feb 27, 2012)

por las dudas pone un 7805 para regular la fuente antes del circuito del pic, no tengo la hoja de datos aca, fijate ahi los voltajes maximos que aguanta, deberia aguantar un poco mas de 5 pero tampoco 7 seguramente


----------



## quevon24 (Feb 27, 2012)

bueno para aprovechar y no crear otro tema, les expongo otra duda, estoy usando microcode studio 4 y picbasic pro 2.6 para programar el pic 16f628a y ahora me esta apareciendo un error al momento de compilar que dice: 

Cannot open file (Include File "P16F628A.INC" not found) y el dia de ayer estaba funcionando perfecto.


----------



## Juan Mesa (Feb 28, 2012)

no conozco el microcode studio, pero tenes problema al llamar al archivo include, o sea, o especificaste mal la direccion en donde se encuentra el archivo o no existe

en asm y mplab seria asi (no se si es igual)

#include   <P16F628A.INC>


no se si es igual en lo uqe estas usando (las <> creo se puede poner "" pero siempre lo pongo asi y funka...) 

revisa las propiedades de archivos include en las opciones del programa

salutes


----------



## ilcapo (Feb 29, 2012)

probá poniendole un nombre mas corto al programa que estas haciendo a veces me tira error si el nombre es muy largo, por ejemplo si se llama juancitoperez.asm  nombralo   jp.asm  , aunque este no parece ser este tipo de error probalo por las dudas , saludos!


----------



## quevon24 (Mar 3, 2012)

es que en el progra  de microcode uno escoje de una lista el pic, y ya en base a el modelo que selecciones es como lo compila, por el momenot para compilarlo tengo que compilarlo como un 16f628a.

Una nueva duda, ya que estoy todavia aprendiendole, cuanto es el valor del 0 y 1 logico de este pic ya que le busque en el datasheet pero no le haye.

Y otra duda, como puedo conectar un qrd1114 al pic, necesita algo especial? ya que tambien por eso pregunto lo de arriba

ya que lo que quiero hacer es que la patita del qrd que indica si si detecto una linea negra o no vaya conectada al pic y del pic, salga a un led, pero veo que a fuerzas necesita tener un 0 o 1 logico en la patita.

Lo estoy programando en basic, el codigo va asi:



> IF portb.0 =1 THEN ; Aqui va la parte del qrd que indica si detecto o no la linea
> HIGH porta.2 ; enciende el led
> ENDIF



La salida del qrd lo tengo conectado a un tip41c para darle potencia, pero aun asi no se como hacer que me de un 0 o 1 logico (creo es es 0=0v y 1=5v)


----------



## Yeey (Mar 8, 2012)

Tienes otros microcontroladores?


----------



## josb86 (Mar 11, 2012)

quevon24 dijo:


> es que en el progra  de microcode uno escoje de una lista el pic, y ya en base a el modelo que selecciones es como lo compila, por el momenot para compilarlo tengo que compilarlo como un 16f628a.
> 
> Una nueva duda, ya que estoy todavia aprendiendole, cuanto es el valor del 0 y 1 logico de este pic ya que le busque en el datasheet pero no le haye.
> 
> ...




hola mira encontre este circuito de como se monta y se conecta a la entrada de un pic







no necesitas nada mas lo que no entiendo es para que es el tip41c? es para encender el led? si es para esto no necesitas eso colo coloca una resistencia  y el led.


----------



## quevon24 (Abr 2, 2012)

Coloco la solucion por si a alguein mas le pasa,hice lo de conectar el mclr creo era a Vdd como me indicaron aqui y quedo perfecto, ya no fallaba ni nada por el estilo.


----------



## Charleeslee (May 18, 2017)

Tengo un PIC16F887 y estaba haciendo un proyecto de un servo, cuando todo dejó de funcionar.
Una amiga le conectó 12 V. aunque sé que sí los aguanta. Creo que fue por eso.

Luego de ello, probé con un programa simple un LED que se prendía y el led no prendió.
En cambio, si toco el PIC,  (ninguno de los pines, la parte negra) empieza a prender.
El servo sigue sin funcionar.

¿Estará quemado, es mágico, o me estoy volviendo loco? Ya no lo sé.

Código del servo:

```
sbit lon at portc.b7;   // led indicador de encendido y programa corriendo

//****************** para servo
sbit pruebas at portb.b0; // botón para probar el servo

sbit servo at portd.b4; // salida para servo


unsigned short onoffs = 0;  // variable para controlar el on y off de prueba del servo
unsigned int cuenta;
unsigned short tl, stop;

const unsigned short ciclos = 50;   // con esto da 41.2us aprox de tiempo
//****************** para servo fin

                                 // ************ sub rutinas *********

void interrupt()
 {
  if (INTCON.T0IF)
  {
    cuenta++;
    if (cuenta <= tl)
    {
      servo = 1;
    }// if cuenta
    else
    {
      servo = 0;
    }// else cuenta t1

    if (cuenta > 412)  //485 teorico
    {
      cuenta = 0;
      servo = 1;
    } // cuenta 485

    tmr0 = ciclos;       // con este valor la int es cada 10us
    INTCON.T0IF = 0;
  }
 } // interrupt
// ********************************** Fin función para las interrupciones *********

void main() {

//osccon = 0x71;

// OSC externo 20MHz

//Inicialización puerto A
porta = 0;
ansel = 0;
trisa = 0x0F;            // puerto de A0 - A5     1 entrada 0 salida  xxDD DDDD
//Inicialización puerto B
portb = 0;
anselh = 0;
wpub = 0xff;            // habilita todas las pull - up
trisb = 0xFF;           // puerto todo de entrada
OPTION_REG.b7 = 0;      // habilitación general de las pull - ups
//Inicialización puerto C
portc = 0;
trisc = 0x50;           // RC4 SDI, RC5 SDO, RC3 SCK, RC6 IRQ, RC1 CE, RC2 CSN, RC7 Lon, restante salida
//Inicialización puerto D
portd = 0;
trisd = 0x00;           // salida
//Inicialización puerto E
porte = 0;
trise = 0x03;           // RE0 - RE2, xxxx xDDD     RE0 in, RE1 in, RE2 out

// configuración de las pull-up (otra vez), interrupciones y timer
option_reg = 0x08; //tim0 fosc/4, etc...

intcon = 0x60;
tmr0 = ciclos;       // con este valor la int es cada 41.2us

tl = 30;          // teorico: valor pos izq = 24, central 36, der 48
cuenta = 0;

intcon.B7 = 1;  // habilita interrupciones
// ******************** fin de la configuración del micro *********************

lon = 1;


while (1) // ciclo infinito
 {
       if (pruebas == 0) // botón para probar servo
       {
         delay_ms(30);

         while (pruebas == 0)
         {

          if (onoffs == 0)
          {
           if (tl < 40)   // 48 limite derecho teorico
           {
            tl++;          // teorico: valor pos izq = 24, central 36, der 48
           } // if tl
           delay_ms(20);
          }
          else
          {
           if (tl > 20)   //24 limite izquierdo teorico
           {
            tl--;          // teorico: valor pos izq = 24, central 36, der 48
           } // if tl
           delay_ms(20);
          } // if onoffs
         } // del while pruebas
         delay_ms(20);
         onoffs = ~ onoffs;

       } // if pruebas
 } // del while 1

} // del main
```


----------



## Daniel Meza (May 19, 2017)

No no, el PIC no soporta 12V de alimentación en ningún pin, salvo el MCLR pero ese ya es otro cantar. Puede ser que le dañaste solo algunos pines pero el micro siga funcional. 
Por lo general lo que se daña son los diodos de protección en los pines del micro.

Una manera de revisarlos es con el multímetro. En la escala de diodos, colocas la punta negra en el terminal VCC del PIC y con la punta roja vas probando los pines E/S , en todos debe de darte una caída de tensión de ~0,6V (en caso de que el diodo este bien).
Luego se repite la secuencia pero ahora colocando la punta roja en la terminal VSS del PIC y vas probando con la punta negra; debe de darte también lecturas de ~0.6V.

Esta prueba se hace con el PIC desconectado de todo.

Saludos


----------



## D@rkbytes (May 19, 2017)

Charleeslee dijo:


> Tengo un PIC16F887 y estaba haciendo un proyecto de un servo, cuando todo dejó de funcionar.
> Una amiga le conectó 12 V. aunque sé que sí los aguanta. Creo que fue por eso.


Ese PIC no soporta 12 V. Máximo 6.5 V. Según lo especifica la hoja de datos.
​


Charleeslee dijo:


> Luego de ello, probé con un programa simple un LED que se prendía y el led no prendió.
> En cambio, si toco el PIC,  (ninguno de los pines, la parte negra) empieza a prender.


Si el PIC no se dañó por sobre voltaje, entonces por lo que comentas, puede ser que no estés usando la palabra de configuración correcta.
Por eso es que al tocarlo empieza a oscilar.
Debido al mismo motivo, también puede ser que el MCLR no tenga conexión y esté configurado cómo reset y no cómo entrada.


----------

