ICPROG
DISPOSITIVOS LÓGICOS MICROPROGRAMABLES Programación de PIC con ic-prog

Índice / Introducción ICSP Programador PIC y EEPROM JDM

Programación de PIC con ic-prog

Índice de contenidos

Introducción

En unión del hardware adecuado, el software IC-PROG permite programar gran cantidad de dispositivos electrónicos.

Esta guía se va referir únicamente a la programación de dispositivos PIC de Microchip del tipo 16F84A con un programador serie tipo JDM como el JDMD (JDM Directo).

Material necesario

El material mínimo necesario e imprescindible para la programación de los microcontroladores PIC, es el siguiente:

Instalación del software IC-PROG

La instalación de este software es muy sencilla, y basta con descomprimir el archivo icprog.zip, cuya última versión puede encontrarse en la página web http://www.ic-prog.com, este archivo consta del archivo Icprog.exe que contiene todo el código necesario para su funcionamiento para Windows. También puede obtenerse un archivo de ayuda Icprog.chm (en inglés, italiano y español), si bien este archivo no es necesario para el funcionamiento del programa.

En el caso de utilizar este software con Windows 2000, Windows NT ó Windows XP, también es necesario tener en el mismo directorio que el ejecutable, el archivo icprog.sys para Windows XP (se encuentra en la misma página), sin el cual no se puede tener acceso a los puertos del ordenador.

Elección de idioma

Una vez instalado el software, al utilizarlo por primera vez, y aceptando las configuraciones por defecto, se nos presentarán las pantallas en inglés, y para cambiar el idioma se deberán de seguir estos pasos:

Configurar el Hardware

El paso siguiente es configurar el hardware necesario para programar los PIC.

En la pantalla principal de IC-PROG, podemos acceder a la configuración del hardware pulsando el icono o bien mediante la pestaña Ajustes y después el comando Tipo Hardware, o bien pulsando la tecla de función F3, de cualquiera de las maneras accederemos a la pantalla siguiente:

Esta es la configuración que deberemos elegir para el correcto funcionamiento del programador JDM.

Una vez elegido el tipo de programador como JDM y seleccionado el puerto serie adecuado, es importante no olvidarse de elegir el tipo de Interface como Direct I/O, y en cuanto al tiempo de Retardo I/O, si hubiese problemas se pueden probar tiempos más largos. En ordenadores rápidos quizás se puedan poner tiempos de retardo más pequeños, lo que nos daría una velocidad de grabación más rápida.

Explicación de los menús

Los menús principales de IC-PROG tienen un icono gráfico en la pantalla principal, de tal forma que con estos iconos prácticamente se puede leer, borrar, programar y verificar cualquier dispositivo.

Abrir un nuevo archivo   Guardar el buffer a un archivo
Configurar el hardware   Opciones
Leer un dispositivo   Grabar un dispositivo
Borrar un dispositivo   Verificar un dispositivo
Mostrar en ensamblador  Mostar en hexadecimal
Asistente Smartcard      

Igualmente en la pantalla principal de IC-PROG se nos presenta toda la información relativa al dispositivo en cuestión.

Esta ventana muestra el tipo de dispositivo que se ha seleccionado. Pulsando en la flecha de la ventana podemos elegir cualquiera de los dispositivos soportados por el software de programación IC-PROG (también se puede elegir el dispositivo mediante la pestaña Ajustes y la opción Dispositivo).

También se pueden ver las opciones de configuración del dispositivo seleccionado.

Se muestra información del tipo de oscilador usado por el microcontrolador en cuestión (RC, XT, HS).

También se muestran los diferentes bits de configuración que tiene el microcontrolador. Estos bits serán diferentes para cada uno de los microcontroladores utilizados. Los de la imagen son los bits de configuración del PIC 16F84A, y que muestran el estado del Wachtdog (WDT), el Power on Reset (PWRT) y la protección de código (CP).

Si el programa ya tiene una palabra de configuración determinada aquí aparecerán estas opciones marcadas.

En el caso de se quiera modificar el estado de alguno de estos bits, basta con marcarlo o no en esta pantalla.

También tenemos información del Checksum (chequeo que se genera de todo el archivo de datos), y la posible identificación (Valor ID) del microcontrolador, si este lo tuviera.

En la parte inferior de la ventana principal podemos ver que existen unas pestañas para indicar el contenido de 5 buffers diferentes.

Disponemos de 5 buffers diferentes donde almacenar datos en memoria. En cada uno de estos buffer podemos tener almacenado bien el contenido de un PIC o bien el contenido de un archivo. Con los datos contenidos en cualquiera de estos buffer se puede realizar cualquiera de las operaciones que hemos visto en los iconos anteriores. Es decir que se pueden guardar en un archivo en disco, o bien se puede programar un PIC con ellos. También se puede comparar el contenido de estos buffers entre sí para saber si existen diferencias entre ellos o no.

Ajustes

Cuando seleccionamos el idioma de utilización, vimos la pestaña Ajustes y el comando Opciones del principal. Vamos a ver ahora un poco más en detalle los ajustes necesarios para el correcto funcionamiento del programa.

Los comandos posibles de esta pestaña son los siguientes:

Dispositivo. Sirve para elegir el dispositivo con el que queremos trabajar. (PIC16F84A).

Dispositivos recientes. Muestra el tipo de los últimos dispositivos utilizados.

Tipo Hardware F3. Aquí se elige el tipo de hardware que vamos a usar para programar el dispositivo elegido anteriormente. (JDM Programmer).

Prueba hardware. Se puede realizar una prueba de que el hardware elegido está conectado al ordenador en el puerto elegido, y por tanto está listo para usarse.

Opciones. Desde este comando se pueden realizar las configuraciones que van a hacer que el uso de IC-PROG sea mucho más sencillo, práctico y además fiable.

El idioma ya lo cambiamos al principio de esta guía, así es que vamos a configurar las opciones de programación.

Activaremos la casilla de Verificar tras la programación, para que el programa cada vez que realice la programación de un dispositivo, automáticamente después de escribir el dispositivo, verifique que el contenido del dispositivo es el mismo que el buffer activo en ese momento.

Al activar también la casilla de Verificar durante la programación, le indicamos al programa que cada bloque de datos que escriba en el dispositivo vaya comparando que se ha escrito correctamente, leyéndolo y verificando su contenido con el buffer activo.

Esto hace que el tiempo empleado en programar un PIC sea mayor, pero también nos aseguramos de que los errores de programación son mínimos.

Otra de las pestañas que se pueden configurar es la de los Atajos, para que nos sea mucho más fácil el uso del programa.

Como el número de dispositivos que pueden programarse con este software es muy grande, mediante estos atajos podemos hacer que elegir uno u otro para trabajar con él sea muy sencillo.

Basta con elegir aquí los más utilizados y asignarles una de las combinaciones de teclas que se muestran, para que después desde la pantalla principal baste con teclear la combinación de teclas CTRL + F1 para que automáticamente el dispositivo elegido quede seleccionado en el buffer activo, con el consiguiente ahorro de tiempo.

En el caso de trabajar con los sistemas operativos Windows NT, Windows 2000 o Windows XP, como ya se comentó anteriormente, se deberá tener en el mismo directorio que el archivo ejecutable de IC-PROG, el archivo icprog.sys para Windows XP, y además de esto, activar la opción de Habilitar Driver NT/2000, que se encuentra en la pestaña de Miscelánea de esta opción de Ajustes. Esta opción solamente podrá activarse en uno de estos sistemas operativos, ya que en Windows 95, 98 ó Me no se encuentra habilitada.

El resto de opciones que puedan aparecer están configuradas por defecto para un correcto funcionamiento en la mayoría de los ordenadores y sistemas operativos actuales, y en caso de duda siempre se podrá acceder a la ayuda del archivo icprog.chm de la página web http://www.ic-prog.com.

Programación de un PIC 16F84A

Los pasos que se exponen a continuación son prácticamente idénticos en cualquier tipo de dispositivo a programar, con las únicas variaciones de las características particulares de cada uno de los dispositivos, pero el proceso se puede generalizar para cualquier dispositivo a programar.

Se supone que el software IC-PROG ya se encuentra configurado como se ha explicado anteriormente, y también el hardware de programación se encuentra conectado y configurado correctamente.

Abrir archivo HEX

Mediante el icono o bien con la pestaña Archivo y el comando Abrir datos, se accede al directorio dónde se guardan los archivos, como se observa en la figura.

Los archivos de datos que usan para programar un PIC normalmente tendrán la extensión .hex (formato Intel hexadecimal de 8 bits).

Ajustar configuración

Una vez cargados los datos del archivo correspondiente, la pantalla de IC-PROG presentará un aspecto como el mostrado a continuación.

Se observa que los datos se han cargado en el área de código de programa y si existieran, se mostrarían los datos de la EEprom interna de PIC.

En el caso de que se haya programado la palabra de configuración, los bits correspondientes aparecerán marcados. Si se quiere cambiar alguno de ellos se puede hacer pinchando directamente sobre él. También se puede cambiar el tipo de oscilador con que trabajará la aplicación una vez cargada en el PIC. Si en la aplicación no se programó ninguna palabra de configuración, se nos mostrarán los datos por defecto del programa (oscilador tipo RC y Watchdog WDT activados). En la aplicación de ejemplo tenemos configurados (oscilador tipo XT, Watchdog WDT y Power on Reset PWRT).

Cualquiera de las áreas de datos (código de programa o datos EEprom), puede ser aquí modificada, ya que IC-PROG permite la edición de los datos que están presentes en el buffer del ordenador antes de ser enviados al PIC. Esto deberá hacerse con sumo cuidado pues la edición de los datos se llevará a cabo en hexadecimal directamente, con el consiguiente riesgo de cometer errores y causar un mal funcionamiento del programa cargado.

Programar el PIC 16F84A

Para proceder a la programación física del PIC, basta con pinchar sobre el icono , o bien activar la pestaña Comando y después Programar todo, o bien pulsar la tecla de función F5, de cualquiera de estas tres formas, y después de solicitarnos confirmación de la orden dada, el PIC comenzará a ser programado con los datos cargados en el buffer activo.

El proceso de grabación se nos irá mostrando, tal como puede verse en la figura.

El tiempo empleado en la grabación del PIC 16F84A dependerá de la rapidez del ordenador en que se esté trabajando.

Después de programar el código se programarán los datos de la memoria EEprom y posteriormente la palabra de configuración de nuestro programa, todo ello sin requerir para nada de la atención del usuario.

Una vez terminada la programación se procederá automáticamente a la verificación de los datos escritos en el PIC (si se activó la verificación tras la programación). Del proceso de verificación también se nos irá informando, tal como muestra la figura.

Serán verificados igualmente el código de programa, los datos de la memoria EEprom y los bits de la palabra de configuración.

En el caso de que la verificación haya sido correcta se nos informará mediante la ventana representada en la figura siguiente, y el proceso de grabación habrá finalizado.

Una buena práctica para evitar errores en la programación, es que una vez terminado el proceso de grabación, como se ha descrito hasta aquí, cambiar el Buffer activo, leer el PIC programado (esto se explica más adelante) y proceder a la comparación entre los contenidos de los dos buffers, es decir comparar el archivo con el contenido del PIC. En realidad estamos volviendo a realizar la comprobación que ya se ha realizado automáticamente al programar el dispositivo. Esta nueva comprobación trae consigo el empleo de más tiempo, pero a veces más vale prevenir.

Errores frecuentes en la programación

Cuando por alguna causa la programación no se realiza correctamente también el programa nos informará de ello mediante el aviso oportuno.

El error más frecuente en la programación de un PIC es el que se muestra en la ventana siguiente, que nos informa de que se produjo un error al verificar el contenido en la primera posición de memoria, la 0000h.

Este error suele estar motivado por algún fallo en la comunicación entre el ordenador y el programador, tal como una mala conexión del cable serie, o una colocación errónea del PIC en el programador, o hasta incluso por tener mal configurado el puerto serie con el que comunicamos el ordenador y el programador. También puede estar producido porque el PIC que estamos intentando programar se encuentre defectuoso o se haya estropeado por un mal uso.

Cuando aparece este error podemos tratar de evitarlo siguiendo los pasos que se enumeran a continuación:

En el caso de que ninguna de estas comprobaciones diera un resultado que nos permita volver a programar el PIC, lo mejor es repetir la programación con otro microcontrolador que esté en buen estado, para descartar completamente que el fallo esté en el software o hardware del ordenador o programador y poder asegurar que se trata del PIC que se encuentra en mal estado.

Cuando se trabaja en uno de los sistemas operativos Windows XP, Windows NT o Windows 2000, además del anterior se puede dar el error que se muestra en la figura.

Este error en realidad está indicándonos que el sistema no puede acceder a los puertos del ordenador y por tanto al programador conectado a ellos, y como se indicó anteriormente, para solucionarlo se deberá instalar el archivo icprog.sys en la carpeta donde se encuentra el ejecutable y además habilitar el driver para NT/2000 en las opciones de Miscelánea en la pestaña de Ajustes.

Una vez habilitado este driver el programa pedirá volver a iniciarse, y a partir de ese momento ya está perfectamente habilitado para realizar la programación de los dispositivos necesarios.

Lectura de un PIC

La lectura de un dispositivo mediante el software IC-PROG y el programador adecuado, es idéntica para todos los dispositivos soportados, sin embargo en esta guía todo lo relativo a la lectura de un dispositivo se realizará sobre un PIC tipo 16F84A.

Es muy importante seleccionar el tipo de dispositivo que vamos a leer, pues el programa IC-PROG al indicarle el tipo de dispositivo ajusta automáticamente la capacidad del buffer de lectura al tamaño del PIC en cuestión.

Así si elegimos un PIC 16F84A, veremos que el buffer de código de programa se ajusta al tamaño de 1 Kbytes de memoria (0000h - 03FFh).

Al leer un dispositivo, no se realiza una posterior verificación, con lo cual si el buffer elegido es de menor capacidad que el PIC leído, los últimos datos no se almacenarán en él y se perderá su contenido.

No es necesario activar ningún bit de la palabra de configuración, ni elegir el tipo de oscilador, ya que una vez leído el PIC, será el propio IC-PROG quien nos muestre la información de todos ellos, si es que existe en el programa leído.

Pulsando sobre el icono comienza la lectura de los datos del PIC, secuencialmente se irán leyendo el código de programa, los datos de la memoria EEprom y finalmente los bits de configuración.

El buffer de código de programa, y en su caso el de la EEprom interna, se llenará con los datos leídos, y estos se mostrarán en hexadecimal. Para poder ver el código en ensamblador se puede activar el icono de la barra de tareas.

Una buena medida es cambiar el buffer activo y volver a leer el dispositivo para posteriormente comparar los contenidos de ambos buffers y tener seguridad de que la lectura ha sido correcta. Recordad que al leer no se verifican los datos.

La comparación de los dos buffers de datos se realiza en la pestaña Buffer con el comando Comparar, y si la comparación es correcta se nos indica el resultado tal como se muestra en la figura siguiente.

 

En el caso de que la comparación de los buffers de datos de cómo resultado que estos no son iguales, el programa nos irá informando de las diferencias que se vayan encontrando entre uno y otro buffer.

De esta manera podemos averiguar también las diferencias entre los contenidos de un microcontrolador y otro que aunque estén programados con el mismo programa, no funcionen correctamente, o de un archivo y otro que al ensamblarlos no sean exactamente iguales.

Lecturas especiales de datos

Si un PIC no ha sido nunca programado, o está completamente borrado, su contenido será 3FFF (son posiciones de 13 bits), una prueba de ello se muestra a continuación:

Esta lectura de un PIC completamente borrado es lo que se conoce como verificación de blanco, y puede realizarse automáticamente mediante la orden Verificar blanco, que se encuentra en la pestaña Comando.

Más tarde veremos la opción de borrado de un dispositivo, que lo que realiza es una escritura de 3FFF en todas las posiciones del PIC y una posterior lectura del mismo, para verificar que está en blanco.

Si el PIC está protegido contra lecturas (CP activado) su contenido al leerlo será de todas las posiciones a 0, como se muestra a continuación:

Si solo estuviese protegida una parte del código, al leer el PIC, la parte que no está protegida se lee normalmente y la parte de código que esté protegida se leerá con todas las posiciones a 0000.

Cuando un programa ocupa sólo una parte de la memoria de código, si leemos el PIC, el resto de posiciones no ocupadas por el programa se leerán como si estuviesen en blanco 3FFF.

Los datos de la memoria EEprom son de 8 bits y por eso al leerlos, si están vacíos se muestran como se puede ver a continuación :

Verificación de un dispositivo

Aunque ya se ha explicado anteriormente que al realizar la programación de un dispositivo, este es automáticamente verificado, en el menú principal de IC-PROG se dispone del icono , mediante el cual se accede a la verificación del dispositivo elegido. También se puede realizar la verificación mediante la opción Verificar dentro de la pestaña Comando o bien pulsando la tecla de función F6.

De cualquiera de estas tres formas el programa IC-PROG compara el contenido del PIC colocado en el programador, con los datos cargados en el buffer activo.

La verificación del PIC se realiza en dos pasos:

Al final de la comparación, si no han existido diferencias entre los datos, se nos informa de que se ha tenido éxito en la verificación del dispositivo, con una pantalla como la adjunta.

Borrado de un dispositivo

Cuando se quiere realizar el borrado completo de un PIC, antes de proceder a una nueva programación, esto se puede hacer con el icono del menú principal, o bien con la opción Borrar todo que se encuentra en la pestaña Comando.

Si dentro de la pestaña de Ajustes, en el menú de Opciones la casilla de Borrar un dispositivo (como se muestra en la figura) está activada, antes de proceder al borrado del PIC, se nos pedirá que confirmemos la opción elegida mediante una pantalla de aviso, caso de no estar activada esta casilla no se pedirá confirmación y el PIC se borrará perdiendo todos sus datos.

El borrado del PIC se lleva a cabo en un tiempo muy breve, y al finalizar el mismo se nos informa de que el proceso ha finalizado.

La comprobación de este proceso se puede realizar de dos maneras:

Opciones Finales

A continuación se muestran unas figuras con las opciones de cada una de las pestañas del menú principal de IC-PROG.

Estas figuras se dan a nivel informativo, y en ningún caso se pretende explicar exhaustivamente su uso, ya que eso no es misión de este tema. Para una mayor información consultar el archivo icprog.chm o la página http://www.ic-prog.com


Índice / Introducción ICSP Programador PIC y EEPROM JDM