Estoy experimentando con la programación PIC controlada por un Arduino Uno, y estoy usando PIC12F675 . Ayer conseguí el PIC para ingresar al modo de programación / verificación y pude leer en voz alta el ID del dispositivo, pero antes de que eso ocurriera, quemé un PIC, pero no estoy seguro de qué fue lo que hice mal.
El problema estaba relacionado con el MCLR / VPP. Para ingresar al modo de programación / verificación, este debe ser conducido a un alto voltaje (al menos 3.5V más alto que la fuente de energía) como parte de una secuencia de eventos de inicialización. Así que conecté el Arduino a una fuente de alimentación de 12V y utilicé 5V para alimentar el Vdd en el PIC y el 12V al MCLR (el máximo es de 13.5V). En ese momento, pensé que, dado que el MCLR era la primera señal de alta, simplemente podía vincularlo permanentemente a una fuente de alto voltaje (12 V). Pero después de encender el tablero, el PIC se calentó rápidamente y (como resultó más tarde) se quemó. La razón por la que lo conecté directamente sin resistencia fue que la especificación de programación ( enlace ) dijo:
En el PIC12F629 / 675 / PIC16F630 / 676, la alta tensión de programación es generado internamente. Para activar el modo de programación, alta tensión. debe aplicarse a la entrada MCLR. Dado que el MCLR se utiliza para una A nivel de fuente, el MCLR no dibuja ninguna corriente significativa.
En otras palabras, la entrada de alto voltaje no se usa como una fuente de alimentación real, es solo una forma de señalizar que desea ingresar al modo de programación. Así que leí lo anterior (especialmente el "MCLR no extrae ninguna corriente significativa") de la manera en que el PIN MCLR del PIC tendría una alta impedancia interna y, por lo tanto, no generaría ninguna corriente significativa, por lo que no debería ser necesario proporcionar cualquier resistencia, etc. Tampoco hay ninguna nota en la hoja de datos que indique la cantidad de corriente que puede transferir a través de cualquiera de los PIN. Pero claramente no es así como realmente funcionó. También al principio de la experimentación, estaba trabajando con voltajes más pequeños (8.5 V), donde también conecté directamente a la red, y esto no causó que se calentara, por lo que no puede ser un cortocircuito simple ya que los 8.5 V deberían quemarse también.
Otra pregunta en la misma línea: cuando se conectan los PIN analógicos del arduino al PIN GP0 / GP1 en el PIC, ¿es necesario usar resistencias? Nuevamente, cuando los GP0 / GP1 en el PIC están en modo de entrada, deberían tener una alta impedancia, por lo que no veo por qué podría simplemente conectarlo directamente al Arduino. Ahora, en este caso particular, el PIN de datos (GP0) en realidad cambia entre entrada / salida en puntos específicos durante la programación y el Arduino tiene que hacer lo mismo, así que supongo que hay que tener cuidado al cambiar al mismo tiempo para que no sean ambos en el estado de salida simultáneamente (ya que no tiene alta impedancia). Pero para estar seguro, agregué algunas resistencias pequeñas (470R) para limitar cómo pueden ir las cosas. Pero sería bueno saber si esto es realmente necesario, ya que nuevamente la hoja de datos no indica cuánta corriente puede transferir a través de los PIN's.
(en el nuevo circuito que hice, realmente funciona, tengo 15K ohmios entre 12V y MCLR y también controlo el MCLR a través de un transistor para que pueda activarlo en el punto correcto de la secuencia)