Você está na página 1de 5

ICSP: Cmo Usar "Programacin Serial En Circuito" con Microcontroladores PIC

Escrito por Ral Alvarez.

Cuando se desarrollan sistemas microcontrolados resulta muy ineficiente tener que sacar el PIC de su circuito para reprogramarlo una y otra, y otra vez... Si el proyecto es relativamente largo, esto no solamente consume un tiempo considerable, sino que tambin puede afectar la vida til del PIC (los pines podran doblarse y romperse) y si se est prototipando en breadboard, tambin se reduce la vida til del breadboard. En este tutorial se muestra un circuito prctico con la conexin de todas las seales ICSP para programar y reprogramar el PIC "en circuito", sin la necesidad de extraerlo de su circuito de aplicacin. Este tutorial sirve a su vez como un desarrollo introductorio de los conceptos bsicos de la Programacin Serial En Circuito (ICSP).

Video Demostrativo

Que es ICSP?
ICSP es el acrnimo de la frase en ingls: "In Circuit Serial Programming" (Programacin Serial En Circuito); es una tecnologa incluida en todos los microcontroladores PIC de Microchip ms recientes y posibilita la reprogramacin de los mismos sin que sea necesaria la remocin de stos de su circuito de aplicacin. Esta caracterstica es extremadamente til no solamente en la etapa de desarrollo debido a que ahorra tiempo y trabajo, sino que su utilidad se extiende a la etapa de mantenimiento y actualizacin de los sistemas, dando la posibilidad de reprogramar los mismos "en el campo" en sus respectivas placas ya soldadas, ya sea para corregir errores de software o para la mejora del sistema con la implementacin de nuevas funciones. Este mtodo de programacin (lectura, escritura y verificacin) no es exclusivo de los microcontroladores Microchip, ya que otras marcas como Atmel, Parallax y otros usan tambin mtodos similares conocidos de manera genrica como ISP (In System Programming) y en la arquitectura de Procesadores ARM se utiliza un mtodo similar conocido como JTAG.

Programadores ICSP
Todos los modelos recientes de microcontroladores PIC se programan usando ICSP con voltaje alto de programacin y una variante con LVP (LVP es "Low Voltage Programming" - ms adelante hablaremos de esto). As mismo, todos los programadores modernos de PIC utilizan este mtodo para programarlos, aunque esto no sea aparente en algunos programadores que cuentan por ejemplo con un socket ZIF, como el mostrado en la figura.

En el caso de los programadores con socket ZIF, El mtodo de programacin sigue siendo ICSP (Programacin En Circuito), slo que en este caso todas las seales ICSP estn cableadas al socket ZIF; sin embargo debido a que el PIC debe ser removido del circuito para ubicarlo en el socket, se contradice el propsito inicial de la idea, la cual es justamente no remover el PIC de su circuito. Para los principiantes el uso del socket ZIF es ms conveniente; sin embargo para quien debe realizar un trabajo de largo aliento, con muchas iteraciones de reprogramacin, programar el PIC sin tener que removerlo cada vez de su circuito es mucho ms conveniente. En la siguiente fotografa vemos un ejemplo de un sistema siendo programado "en circuito":

Seales y Conexiones en el Cabezal ICSP


Las seales conectadas entre el PIC y el dispositivo programador para realizar la escritura, lectura y verificacin del programa son las siguientes:

VPP (Voltaje de Programacin): Es un voltaje entre 12-14 VDC aplicado al pin MCLR/VPP del PIC, y es usado para poner al PIC en estado de programacin. PGC (Program Clock): Seal de reloj provista al PIC para sincrona. PGD (Program Data): Lnea serial de datos para escritura, lectura y verificacin de la memoria de programa (ROM Flash) del microcontrolador. VDD (Voltaje de Alimentacin 5/3.3 VDC): Voltaje de alimentacin provisto al PIC. En el caso de los programadores Pickit 2 y Pickit 3, estos primeramente consultan este pin para verificar si el PIC ya est siendo alimentado externamente (recomendado) de otro modo, existe la posibilidad de configurar al programador para que ste mande voltaje de alimentacin al PIC a travs de esta lnea. GND (Ground): Conexin a tierra.

El siguiente diagrama de circuito muestra un mtodo muy usual para la implementacin de ICSP:

Como se puede observar, el mtodo ICSP utiliza pines en el microcontrolador que tambin pueden cumplir potencialmente otras funciones; en el caso del PIC16F628A tenemos por ejemplo:

El pin RA5/MCLR/VPP, adems de ser el pin VPP es el pin RA5 del puerto A y la entrada de reset (MCLR). El pin RB7/T1OSI/PGD, adems de la conexin serial de datos para la programacin (PGD) es tambin el pin RB7 del Puerto B y la entrada de oscilador del Timer1 (T1OSI). El pin RB6/T1OSO/T1CKI/PGC, es la entrada de reloj para ICSP, adems de ser el pin RB6 del Puerto B, la salida de oscilador del Timer1(T1OSO) y la entrada de reloj del Timer 1 (T1CKI).

Por tanto, los pines anteriores cumplen bsicamente dos funciones: 1) Funciones relacionadas a la aplicacin principal del circuito, y 2) Funciones para la conexin con el dispositivo programador que posibilite la lectura, escritura y verificacin de la memoria de programa "en circuito".

Circuito de Aislacin
Para que la programacin se lleve a cabo de manera correcta y segura, es necesario aislar el circuito de aplicacin del circuito de programacin. El circuito ejemplo mostrado en la figura anterior nos muestra de qu manera se puede lograr esto:

Conectar un diodo de seal (como el 1N4148 u otro similar) entre el pin MCLR/VPP y el circuito de reset (resistencia + capacitor) de la aplicacin. Esto aisla al circuito de reset y la fuente de voltaje del microcontrolador de los 12-13 voltios generados por VPP en el momento de la programacin. Conectar otro diodo de seal entre el pin VDD y la alimentacin de voltaje del circuito de aplicacin. Esto posibilita que en caso de que el VDD del circuito del microcontrolador est encendido, ste sea aislado de la alimentacin de voltaje provista por el programador; en todo caso es ms recomendable y seguro usra la alimentacin propia del circuito de aplicacin para energizar el PIC que usar la alimentacin de voltaje provista por el programador, sobre todo para los principiantes. Conectar resistencias (tpicamente 10K) entre los pines PGD y PGC y el circuito de aplicacin a fin de que la reactancia vista desde estos pines no afecte la integridad de las seales de datos y reloj utilizadas en la escritura, lectura y verificacin del programa. Si la aplicacin lo permite, es recomendable dejar libres estos pines para ser usados exclusivamente para la programacin ICSP.

Respecto a la aislacin de los pines PGD y PGC es importante recalcar que si bien este tpico ejemplo de circuito de aislacin funciona para la mayora de los casos, no es una receta segura para todos, y en algunos casos podra requerirse ligeras modificaciones o incluso un planteamiento diferente para lograr dicha aislacin.

Depuracin con ICSP


Cabe notar tambin que ICSP, aparte de proveer el mtodo para la escritura, lectura y verificacin del cdigo de programa en el microcontrolador, provee tambin mtodos para la depuracin y la emulacin "en circuito"; capacidades que vienen adicionalmente implementadas en ciertos dispositivos conocidos en ingls como "programers/debuggers/emulators" (programadores/depuradores/emuladores). Ambas capacidades adicionales complementan grandemente la "caja de herramientas" de todo desarrollador de sistemas microcontrolados.

Programacin Con Bajo Voltaje (LVP)


La Programacin Con Bajo Voltaje LVP (Low Voltaje Programming) es una opcin adicional de programacin presente en los PICs la cual permite obviar VPP (12-14 VDC) y utilizar bajo voltaje. Para ello los PICs cuentan con otro pin denominado PGM (el pin RB4/PGM en el caso del PIC16F628A) atravs del cual el dispositivo programador toma control del PIC para su programacin. Los detalles de este mtodo salen del alcance de este tutorial, simplemente aadiremos que, si se va a usar ICSP con VPP (12-14 VDC), es recomendable dejar deshabilitada la Programacin Con Bajo Voltaje (LVP) en el microcontrolador (mediante la escritura del bit correspondiente en la palabra de configuracin (registro CONFIG) del microcontrolador, esto para evitar desprogramaciones accidentales del PIC. La desventaja de LVP es que cualquier ruido o pico de voltaje ms o menos fuerte puede desprogramar accidentalmente el PIC, por lo cual, es mejor deshabilitarlo y usar la programacin ICSP con voltaje alto.

Conclusin

Implementar ICSP se hace imprescindible en un proyecto que requiere muchas iteraciones de re-programacin en la etapa de desarrollo; por otra parte brinda tambin la posibilidad de actualizacin y mejora del programa cuando los componentes ya estn soldados en la placa y el sistema ya est en funcionamiento. Para quienes nunca antes programaron "en circuito", implementarlo puede parecer un poco intimidante al principio, sin embargo es un paso necesario a dar, a fin de mejorar la eficiencia en el desarrollo de sistemas microcontrolados. Nada reemplaza la adecuada investigacin y bsqueda de informacin antes de probar herramientas y tcnicas nuevas para uno, por lo cual es muy recomendable revisar tambin la documentacin oficial de fabricante respecto a la Programacin Serial En Circuito, a fin de contar con la informacin detallada y de primera mano respecto a este tpico.

Você também pode gostar