Manual Program Ad Or Gpic

Art Portada - GPIC USB 25/5/11 16:19 Página 17 Programación Serial “In-Circuit” (ICSP) El Programador que hemos desc

Views 189 Downloads 7 File size 316KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Art Portada - GPIC USB

25/5/11

16:19

Página 17

Programación Serial “In-Circuit” (ICSP) El Programador que hemos descripto en el Artículo de Tapa de esta edición puede programar microcontroladores que estén en un zócalo del tipo zif preparado para tal función, o bien instalados en un circuito de aplicación, mediante la utilización de la Programación Serial In-Circuit (ICSP). En esta nota explicamos el procedimiento. www.sitionica.com.ar

UTILIZACIÓN DE LA PROGRAMACIÓN SERIAL “IN-CIRCUIT” EN EL PROGRAMADOR GPIC de trabajo muy completas. J INTRODUCCIÓN

(ICSP)

es aplicado, el microcontrolador entra en el modo Programación. 4- VDD: Suministro de tensión (positivo).

La comunicación ICSP requiere cinco señales: 1- ICSPDAT o PGD: Datos de Programación; es una línea de datos bidireccional sincrónica serial. 2- ICSPCLK o PGC: Reloj de Programación; es una línea unidireccional sincrónica serial de reloj que va desde el programador hasta el microcontrolador. 3- VPP: Tensión de Programación; cuando

5- VSS: Suministro de tensión (negativo).

En caso de programar un microcontrolador individualmente sobre un zócalo para después trasladarlo a la aplicación, el diagrama de conexionado es como el de la figura 1. En los “data sheet” o manuales de componentes suministrados por el fabricante Microchip, y accesibles desde su página de Internet, están detallados los pines adecuados para la conexión ICSP de cada tipo de dispositivo PIC.

Figura 1 - Diagrama de conexiones para la programación por ICSP.

Saber Electrónica

17

Art Portada - GPIC USB

25/5/11

16:19

Página 18

Artículo de Tapa

Figura 2 - Circuito típico de aplicación para programación ICSP.

En general la disposición de los pines según el microcontrolador es la siguiente: Microcontroladores de 8 pines línea 12F Pin 1 = Vdd (tensión positiva) Pin 4 = Vpp (tensión de programación) Pin 6 = Ck (ICSPCLK - PGC) Pin 7 = Data (ICSPDAT - PGD) Pin 8 = Gnd (negativo, Vss)

Pin 28 = Data (ICSPDAT - PGD) Pin 8 - 19 = Gnd (negativo Vss) Microcontroladores de 40 pines línea, 16F / 18F Pin 11 - 32 = Vdd (tensión positivo) Pin 1 = Vpp (tensión de programación) Pin 39 = Ck (ICSPCLK - PGC) Pin 40 = Data (ICSPDAT - PGD) Pin 12 - 31 = Gnd (negativo Vss)

Microcontroladores de 18 pines, línea 16F Pin 14 = Vdd (tensión positiva) Pin 4 = Vpp (tensión de programación) Pin 12 = Ck (ICSPCLK - PGC) Pin 13 = Data (ICSPDAT - PGD) Pin 5 = Gnd (negativo Vss) Microcontroladores de 28 pines, línea 16F / 18F Pin 20 = Vdd (tensión positiva) Pin 1 = Vpp (tensión de programación) Pin 27 = Ck (ICSPCLK - PGC)

18

Saber Electrónica

Nota: El pin PGM debe conectarse a Vss en los PIC que sean aptos para programación a baja tensión (LVP) o bien poner en off esta función en la configuración del dispositivo, ya que en todos los casos se utiliza el tipo de programación normal y no la característica LVP. Sugerimos consultar el “data sheet” correspondiente del microcontrolador a programar para la identificación de este pin. Un pin PGM no conectado puede interferir con la programación. Para la programación “in-circuit”, el circuito de aplicación debe estar diseñado para permitir que todas las señales de programación se conecten al microcontrolador sin que las mismas se distorsionen.

Art Portada - GPIC USB

25/5/11

16:19

Página 19

Programación Serial “In-Circuit” (ICSP) La figura 2 muestra un circuito típico como punto de partida para diseñar un circuito de aplicación para ICSP.

ICSPCLK o PGC es una línea de reloj unidireccional sincrónica serial desde el programador al microcontrolador.

Nota: En los microcontroladores PIC con capacidad de programación a bajo tensión LVP, configurar esta función como LVP = off en los registros de configuración. En su defecto es necesario conectar el pin PGM hacia Vss para evitar errores en la programación.

ICSPDAT o PGD es una línea bidireccional sincrónica serial de datos de programación.

Para una programación exitosa con ICSP debemos tener las precauciones que se detallan a continuación.

Si el diseño lo permite, destinemos estos pines para ICSP. Sin embargo, si el circuito requiere que esos pines sean utilizados por la aplicación, diseñemos el circuito de tal manera que no altere el nivel de señal. El aislamiento del circuito variará de acuerdo a la aplicación. La figura 2 muestra una posibilidad utilizando resistencias en serie para aislar las señales ICSP del circuito de aplicación.

Aislar el pin VPP/MCLR Cuando es aplicado el tensión Vpp, el circuito de aplicación necesita tomar en consideración que la tensión típica de Vpp es +12V. 1 - Si el pin Vpp es utilizado como un pin MCLR: el circuito de aplicación es conectado típicamente a una resistencia/capacitor de “pull up”, tal como se recomienda en las especificaciones (data sheet) del microcontrolador. Hay que tener la precaución de que el circuito asociado no baje la velocidad y exceda el tiempo de elevación de Vpp. Si se coloca una interfaz con algún botón para el pin MCLR, se recomienda que los mismos sean aislados de la tensión Vpp mediante el empleo de un diodo o una resistencia limitante tal como se muestra en la figura 2. 2 - Si el pin Vpp es utilizado como un pin de puerto I/O: el circuito de aplicación que conecta al pin I/O quizá no esté habilitado para manejar la tensión de +12V. Se recomienda utilizar un diodo o una resistencia limitante, para aislar el circuito. Aislar los pines ICSPCLK o PGC, y los pines ICSPDAT o PGD Es necesario aislar del circuito a los pines ICSPCLK o PGC y los pines ICSPDAT o PGD, para prevenir que las señales de programación sean afectadas por el propio circuito de aplicación.

VDD

Durante la programación ICSP, es necesario que el microcontrolador sea conectado de acuerdo a la especificación del mismo. Típicamente, el suministro de tensión del microcontrolador es conectado al suministro de tensión del circuito de aplicación. La aplicación puede ser alimentada por el programador o externamente. Es muy importante, cuando el programador suministra la tensión Vdd al circuito, asegurarse que el capacitor o los capacitores conectados a Vdd de la aplicación no estén alterando el tiempo de subida de Vdd, específicamente cuando el programador solo eleva Vdd durante el proceso de programación. En estos casos es recomendable utilizar el suministro de tensión externa o un suministro constante desde el programador.

LONGITUD

DE LOS

CABLES

Debe minimizar la distancia que deben recorrer las señales ICSP colocando el conector de ICSP tan cerca del circuito de aplicación

Saber Electrónica

19

Art Portada - GPIC USB

25/5/11

16:19

Página 20

Artículo de Tapa como sea posible. Hay que minimizar la longitud de cualquier cable entre el programador y el dispositivo del circuito de aplicación. El objetivo es mantener las señales ICSP dentro del nivel y las especificaciones de rango para que la programación sea exitosa.

NOTAS Y CAMBIOS RECOMENDABLES PROGRAMADOR GPIC USB

EN EL

A los efectos de obtener el mejor resultado en el uso de nuestro programador, sugerimos algunas consideraciones a saber: Nota 1: Consulte los “data sheet” correspondientes para el conexionado de programación ICSP de estos microcontroladores. El diagrama general para la tensión VDD es como el representado en la figura 3 para los distintos micros. Para los dispositivos LF, la tensión VDDCORE de 2.5 volt puede ser suministrada con un diodo 1N4148 conectado a los 3V de VDD. Nota 2: Toda la familia PIC18F/LF xxJxx admite los 5V correspondientes a las señales de Datos y Reloj que suministra el programador. Nota 3: Los registros de configuración en esta familia de microcontroladores PIC están implementados físicamente en la memoria flash de programa, por este motivo todos los algoritmos de programación, lectura y verificación se realizarán sobre el 100% de la memoria y no sobre el porcentaje utilizado del programa como ocurre en otros dispositivos que disponen de un sector especial de memoria para los registros de configuración.

20

Saber Electrónica

Figura 3 - Conexionado ICSP para diferentes microcontroladores PIC.

Nota 4: los microcontroladores 18FxxJxx trabajan con tensiones de 3 volt, tanto en Vdd como en Vpp, no obstante admiten tensiones de 5 volt en los pines I/O para compatibilidad con otros dispositivos. Tenemos que tener especial precaución de seleccionar previamente esta familia de dispositivos desde la interfaz de usuario del programador antes de realizar la programación, lectura, etc. Al seleccionar dicha familia la tensión de Vpp será de 3 volt y para Vdd debemos utilizar el suministro de Vdd2 de 3 volt. Recordemos que el programador no puede predecir los errores cometidos por nosotros si intentamos programar los dispositivos de 3 volt estando seleccionada otra familia con tensiones más elevadas y diferentes. Un suministro de 12 volt en Vpp por un error cometido en la selección de la correspondiente familia, seguramente llevará a la destrucción del microcontrolador con tensión de trabajo de 3.6 volt

Art Portada - GPIC USB

25/5/11

16:19

Página 21

Programación Serial “In-Circuit” (ICSP)

Figura 5 Arreglo que permite mayor suministro de corriente durante la programación de PICs de 3,3V.

máximos. Para prevenir los accidentes de este tipo puede implementarse el circuito de la figura 4,

pero no es estrictamente necesario, el Figura 4 - Circuito de diodo dejará pasar solaprotección para la programación de mente los niveles de 0 PICs de 3,3V. volt y el nivel alto es tomado a través de la resistencia que puede estar comprendida entre 2.2kΩ/4.7kΩ directamente de la tensión de 3.3 volt. De esta forma ante un error en la selección de dispositivo nunca entrarán por el pin del microcontrolador los 12 volt de Vpp de otras familias de microcontroladores. Nota 5: Para la programación de PICs de 3,3V sugerimos realizar un cambio en el valor de la resistencia R20 del programador GPIV original, de 4.7kΩ del programador conectada a Gnd, en el sector de suministro de 3,3 volt según puede verse en el esquema de la figura 5. El nuevo valor será de 1kΩ. El motivo de este cambio es debido a que necesitamos aumentar la carga en algunos mA

Saber Electrónica

21

Art Portada - GPIC USB

25/5/11

16:19

Página 22

Artículo de Tapa y lo resolvemos disminuyendo el valor de dicha resistencia, es decir, el consumo del microcontrolador bajo programación es insignificante especialmente si se trabaja sobre el mismo en forma individual y sin el consumo típico en un circuito de aplicación, debido a esto y como las señales de Data y reloj del programador tienen sus niveles altos a 5 volt los diodos internos del Pic, ver figura 6, elevan la tensión de Vdd de 3.3 volt al ritmo de las señales de Data y Reloj. Para suprimir lo explicado necesitamos aumentar la carga de Vdd disminuyendo la resistencia R20 a un valor de 1kΩ como habíamos dicho. Así mismo también podemos reemplazar el capacitor C12 de 100nF por un electrolítico de 1µF y mejorar el filtrado. Nota 6: Otro que hubo que realizar sobre el diseño original, para poder programar micros de 3,3V es sobre los valores de las resistencias de las líneas de Datos y Reloj, R6 y R7, los valores originales eran de 33Ω para ambas resistencias, las reemplazamos con valores de 100Ω en ambos casos, de esta forma estamos limitando la corriente por estas líneas y contribuimos a mejorar lo comentado en la nota anterior. Para finalizar, los cambios mencionados anteriormente no son necesarios de implementar si no se trabaja con las familias de microcontroladores de 3.3 volt.

LAS TENSIONES

DEL

troladores. Esto es muy importante tenerlo presente y puede ser una buena referencia ante posibles fallos en la programación de algún tipo de PIC, debido a causas ajenas al programador y al software de programación. Puede estar todo funcionando correctamente y sin embargo encontrarnos con la imposibilidad de grabar un PIC determinado simplemente por una deficiente alimentación durante la programación del microcontrolador. La tensión que suministra el puerto USB, puede variar entre un mínimo y un máximo según la computadora. Los niveles de tensión que podemos encontrar en VBUS podemos observarla en la siguiente tabla: Tipo de HUB

Vmin.

Vmáx.

High Power

4,75V

5,25V

Low Power

2,4V

5,25V

PUERTO USB

El programador se alimenta directamente con la tensión suministrada por VBUS del puerto USB. A su vez, por portabilidad y practicidad puede proporcionar el voltaje VDD para la programación de los dispositivos PICs soportados. Esta última característica puede ser utilizada siempre y cuando la tensión VBUS del puerto se mantenga dentro de los márgenes mínimos admitidos en las especificaciones de programación de estos microcon-

22

Figura 6 - Modificación para el aumento de carga de Vdd.

Saber Electrónica

Incluso podemos medir valores aún inferiores a 4.4 volt en muchas PC, situados en 4.35 volt. Teniendo presente lo anterior y volviendo específicamente a los microcontroladores PIC generales utilizados en nuestros proyectos, que funcionan con una tensión nominal de 5 volt, podemos observar en las especificaciones de programación que la tensión mínima necesaria para realizar un borrado completo de la mayoría de estos chips se sitúa en 4.5

Art Portada - GPIC USB

25/5/11

16:19

Página 23

Programación Serial “In-Circuit” (ICSP)

volt, según la tabla 1 de especificaciones. Esto significa que si la tensión que suministra el puerto USB es menor a 4.5 volt, corremos el riesgo que no pueda ser borrado el microcontrolador PIC y en consecuencia producirá un error al intentar grabarlo ya que es necesario realizar un borrado general (memoria de programa, memoria de datos y registros de configuración) antes de la programación. En este supuesto caso debemos recurrir a una alimentación externa para solucionar los problemas durante la programación. Tanto la lectura, verificación e identificación del dispositivo, no están afectados por una tensión del puerto USB menor a 4.5 volt. Un microcontrolador PIC en "blanco" también puede ser programado. Sólo afecta al borrado y a la secuencia borrado - grabación.

Esto está probado y puede ser causa de muchos problemas tanto en suministro de tensión, corriente y transferencia de datos. Un puerto USB puede tener los márgenes de tensión - corriente adecuados, pero se verán afectados por un cable de dudosa calidad. Un ejemplo: La tensión medida en el programador sobre el conector USB terminal VBUS era de 4.75 volt, con un cable de conexión "normal", por lo tanto el puerto USB de mi PC estaba dentro de los márgenes requeridos. Cambiando el cable por otro de menor calidad, la tensión medida cayó a 4.33 volt. Insuficiente, como fue comprobado, para realizar un borrado adecuado en muchos dispositivos PIC.

EL HARDWARE EL CABLE PC - PROGRAMADOR

El cable de comunicación puerto USB - programador, es muy importante para evitar problemas como los planteados anteriormente. Un cable de mala calidad o calidad dudosa, puede producir una caída de tensión de unos cuantos mili volts que son sumamente importantes para nuestros requerimientos.

DEL

PROGRAMADOR

El circuito electrónico del programador USB no tiene elementos críticos, se suministra el esquema del PCB y la distribución de los componentes para construirlo correctamente sobre un circuito impreso. También puede ser realizado sobre una placa experimental como las que se adquieren en los comercios de electrónica, del tipo pads individuales, y realizar todas las conexiones de

Saber Electrónica

23

Art Portada - GPIC USB

25/5/11

16:19

Página 24

Artículo de Tapa los componentes manualmente. Esto es viable, pero puede llevar a cometer errores en el caso de los menos experimentados. Además, para la construcción del programador en una placa experimental, hay que tener presente lo siguiente: El conversor DC-DC conformado por el MC34063 y los elementos asociados elevan la tensión de +5 volt a los niveles necesarios para la programación de los PIC, en este tipo de conversión por conmutación donde esté involucrada una bobina, es proclive a generar interferencia sobre la línea de alimentación si no se toma un mínimo de recaudo para el filtrado de las tensiones de este bloque. Esto es así en este y en cualquier circuito, como dije antes, en este tipo de conversores. Todas las conexiones deben ser cortas, bien filtradas por los capacitores que figuran en el esquema electrónico, tomar los 5 volts de entrada de alimentación al conversor, directamente y no de retornos de otra sección del circuito. Observar la disposición del MC34063 y sus componentes en el PCB y realizarla de la misma forma. Se deben tomar en cuenta los detalles mencionados, en caso que se arme el programador en una placa experimental, porque de lo

contrario podríamos sufrir algún tipo de interferencia en la línea de alimentación producto de la conversión, sólo visible con un osciloscopio. UN CLÁSICO: PROGRAMADOR

POR

Si bien son muchos los circuitos disponibles en la Web que permiten programar microcontroladores PIC, hace unos años decidimos tomar lo mejor de cada uno de ellos y elaborar uno propio con las características que lo hacen ideal para nuestra región (componentes económicos y fáciles de conseguir, software fácil de usar y en español). El programador que proponemos: “PIC Pablin” (www.pablin.com.ar) permite leer y grabar PICmicros de 8 y 18 pines así como memorias EEPROM seriales. La figura 7 muestra el circuito de este “clásico”. Dispone de un zócalo de 18 pines el cual permite conectar, tal como se ve en la plantilla, tanto PICs como memorias EEPROM seriales. Los PICs de 18 pines se colocan ocupando la totalidad del zócalo mientras que los PICs de 8 pines se colocan ocupando la parte superior del zócalo. En tanto las memorias seriales se

Figura 7 - Circuito de un programador de PICs clásico.

24

Saber Electrónica

PUERTO LPT

Art Portada - GPIC USB

25/5/11

16:19

Página 25

Programación Serial “In-Circuit” (ICSP) colocan una hilera anterior al fin del zócalo (el pin 1 de la memoria debe coincidir con el 5 del zócalo). El LED marcado como "Enc." permite observar que el sistema se encuentra alimentado mientras que el LED marcado como "PIC" se enciende indicando que es seguro insertar o quitar un chip (PIC o memoria) y se apaga por instantes breves cuando una lectura o programación de un PIC está en curso. Mientras este último LED este apagado no se debe quitar o insertar ningún integrado del zócalo. El funcionamiento del circuito es muy simple: los pines del puerto paralelo 2, 3, 5 y 10 permiten interconectar el circuito con la PC. El pin 2 es el encargado de traer los datos (desde la PC hacia el integrado). El pin 3 es el envío de los pulsos de reloj (desde la PC hacia el integrado). En tanto el pin 10 permite a la PC leer los datos desde el programador. El pin 5, por último, es el encargado de controlar la tensión de programación (Vpp) necesaria para cuando queremos leer o escribir en un PIC. Los microcontroladores PIC se programan utilizando el mismo protocolo que las memorias EEPROM seriales, por consiguiente el programador sirva tanto para PICs como para memorias. La tensión de programación VPP es necesaria para indicarle al PIC que deseamos leerlo o programarlo. Si en este pin (que es compartido con la entrada de RESET del micro) ponemos masa el PIC sufre un reset, si

Figura 8 - Fotografía del programador por LPT armado.

ponemos el pin en alto (5V) el PIC trabaja normalmente mientras que si ponemos el pin a 12V el PIC se inicializa en modo programación, quedando dos de los pines de E/S destinados a datos (SDA) y reloj (SCL). El integrado 74LS04 está formado internamente por seis buffers inversores. Estos nos permiten por un lado obtener niveles TTL a su salida y por el otro no cargar de forma excesiva al puerto. Algunos programadores, como el NOPPP utilizan diodos y resistencias para conectar el PIC directamente el puerto paralelo. Esto funciona en muchas computadoras de escritorio con fuentes poderosas pero en la mayoría de las portátiles que no disponen de tanta corriente el funcionamiento es errático o directamente no funciona. Gracias a la utilización de este buffer podremos utilizar el circuito en cualquier puerto paralelo ya sea de una computadora de escritorio o en un portátil. Se colocan las compuertas en serie para obtener a la salida el mismo nivel de entrada, sin invertir. Las resistencias de 1kΩ dan seguridad al sistema para evitar que circule corriente excesiva. El control de la tensión de programación lo efectúa el transistor NPN. Estando el pin 5 del puerto paralelo a masa (en 0) tendremos al transistor abierto por lo que la corriente proveniente de +V (12V) pasará por el diodo LED el cual no encenderá y se portará como un diodo común polarizado en directa, pasará por la resistencia limitadora de corriente del LED la cual no ofrecerá mucha resistencia y será inyectada al PIC en su terminal MCLR/VPP. Poniendo en 1 el bit que controla el pin 5 del puerto paralelo, en cambio, el transistor se cierra y hace circular masa hacia el PIC haciendo, además, encender el LED al quedar a masa el otro extremo de la resistencia limitadora de corriente. El circuito requiere como única alimentación 12V de continua con una corriente de 200mA. Puede usarse cualquier fuente universal siempre que se respete la polaridad. De tener una fuente de mas tensión (13.5V como mucho) no hay problema, se la puede utilizar sin inconve-

Saber Electrónica

25

Art Portada - GPIC USB

25/5/11

16:19

Página 26

Artículo de Tapa nientes. No es necesario que la fuente sea regulada. Si se tiene una fuente de 12V con mas corriente 1A o incluso mayor se la puede utilizar también sin inconvenientes. Para conectarlo a la PC se puede utilizar un conector hembra Centronics para circuito impreso (igual al que tienen las impresoras) o un cable directo hacia el macho DB25. La figura 8 muestra la foto del prototipo terminado, en nuestro caso optamos por poner un segundo zócalo para las memorias seriales y dejar el zócalo grande para los PICs. La resistencia de 1kΩ demás junto al integrado quedó de la etapa de práctica pero no tiene conexión a ninguna parte. El programa que recomendamos para este programador es el IC-Prog dado que reúne varias características mas que interesantes: * Es muy fácil de usar. * Posee una interfaz gráfica con botones de acceso rápido a las principales funciones. * Permite ver el archivo ASM del programa que se esta por cargar en el PIC (lo obtiene desde el HEX). * Incluye varios idiomas, entre ellos español. * Dispone de cinco espacios de memoria (Buffers) para poder tener hasta cinco programas simultáneos. * Dentro de una única ventana reúne memoria de programa, memoria EEPROM y bits de configuración. * Hay actualizaciones periódicas con funciones nuevas y problemas resueltos. * Funciona tanto bajo Windows 95 como Windows 7 así como en versiones intermedias. Vemos en la figura 9 una captura de pantalla del programa. Para configurarlo sólo es necesario presionar F3 y especificar el tipo de hardware programador (seleccionar ProPic 2), indicar el puerto paralelo al cual está conectado y establecer como

26

Saber Electrónica

método de transferencia de información al puerto Direct I/O (en caso de usar Windows 95, 98 o ME) o Windows API (en caso de usar Windows NT, 2000 o XP). El retardo de I/O debe establecerlo en 10 que es un valor que funciona siempre. Se puede ir reduciendo y probando para lograr el menor retardo posible y así obtener la mayor velocidad de operación. En tanto se debe indicar como única línea invertida la de MCLR. Las demás líneas son normales. El programa no requiere instalación, bastará con descomprimir los únicos dos archivos que lo conforman (el EXE y el SYS) en cualquier carpeta (nosotros usamos C:\ICPROG). Una vez hecho esto debe ejecutar el EXE con doble clic y establecer la configuración (lo pide una única vez). Si al momento de terminar la configuración del programa los dos LED's están encendidos es señal de buen funcionamiento. Dentro del menú ajustes hay una opción para probar el funcionamiento del programador. Para comprobar si hay nuevas revisiones debe visitar www.ic-prog.com Aclaración: Nosotros utilizamos para el proyecto un regulador de tensión 7805 de 1A dado que es lo que teníamos a mano, pero puede utilizarse un regulador 78L05 (los de

Figura 9 - Pantalla del IC-Prog, empleado como interfaz gráfica.