Guía de uso del programa ICprog 

Introducción.

Cada vez que un aficionado a la electrónica alcanza cierto nivel, se ve capacitado para dar un nuevo paso más en la escala del conocimiento, siente como, un impulso que le hace verse alcanzando nuevas metas, atravesando fronteras, logrando nuevos retos y conocimientos, algo personal. Así, pensando que nuestro lector, dispone de los conocimientos previos y básicos de electrónica y que haya decidido iniciarse en el mundo de los microcontroladores, es por lo que, vamos a intentar dar unos consejos y recomendaciones.   

Para que usted logre la grabación o 'quemado' correcto de los microcontroladores y EEproms, con el software más flexible para los programadores como es el TE20se (al que yo he modificado y llamo PoliChip), utilizando un software como el IcProg (originales por Jens Dyekj æ Lar Madsen, JDM) que es gratuito. Se ha hecho este trabajo sabiendo que este tema está bien tratado por muchos otros autores, sin embargo, he querido hacerlo porque son mis experiencias y de este modo lo tenemos todo a mano, aquí. 

Consideraciones previas:

    - Comprobar la versión del ICPROG, versiones del programa para los sistemas operativos: Windows98, Windows NT y 
    Windows 2000. 
    Por tanto, utilizar la adecuada.
    - La velocidad del puerto serie (donde debe estar conectado el programador) no debe superar los 9600bps (bits por segundo) se recomienda 2400bps. 
    - NUNCA se debe insertar un CI en el programador TE20se, estando éste conectado al PC. Siempre hay que separar el programador del cable antes de insertar o quitar cualquiera de los integrados. No hace falta desconectar el cable del PC. 
    - Siempre se debe programar primero el PIC, luego la EEprom si la necesita. 
    - Siga las instrucciones de este documento exhaustivamente, no se salte nada.
    - El programador TE20se permite la programación de chips según la versión, pertenecientes a las siguientes familias:
    Microcontroladores: PIC12Cxx, PIC16Cxx, PIC16Cxxx, PIC16Fxx  y PIC16Fxxx
    Memorias EEPROMs: 24Cxx, 24Cxxx , 24LCxx   y  24LCxxx.

El programador, ver bajo, de reducido tamaño y fácil de usar no requiere de ningún tipo de fuente de energía externa, cuyo manual puede encontrar en la red y en este sitio. También lo puede adquirir en el comercio para su montaje.

El autor de este artículo, advierte que: no se hace responsable del uso que se realice con el software que se encuentra en te sitio, tan sólo se expone en este sitio para las prácticas legales que se describen en los artículos y tutoriales expuestos, lo que se hace saber, eludiendo cualquier responsabilidad ajena a esta declaración.

Ajustes del programa IcProg.

Para instalar el programa sólo se debe descomprimir el archivo bajado y es aconsejable crear una carpeta con un nombre y alojar en ella el programa icprog.exe y el icprog.sys (si es un XP o W2000) para que funcione, hacer una copia del icprog.sys y pegarlo en el subdirectorio del sistema (por defecto, C:\WINNT\SYSTEM32\), sin lo cual no podremos seguir. Ahora a ejecutarlo y tener el TE20se a mano, se recomienda que se lea el artículo 'manual del TE20se' , pero siga estos pasos:

1. Conectar el cable en un puerto serie libre (puerto COM) sin estar conectado el programador en el otro extremo del cable. El cable de un ratón nos puede servir (ver imagen más abajo).

2. Crear un directorio en el disco duro en el cual desee instalar el programa de grabación y que usara para guardar allí los ficheros que contendrán los programas o datos que desee grabar.

3. Partimos del programa de grabación ICprog, versión adecuada a nuestro sistema operativo.

4. Tras la instalación, ejecutar el programa icprog.exe para configurar el hardware del siguiente modo:

a. Ir al submenú Ajustes / Tipo Hardware (Tecla rápida: F3) 
b. Comprobar las siguientes opciones y cambiar las que no se encuentren en el estado indicado a continuación: 

Entre en los Ajustes - >  menú del hardware, cambiar a "JDM Programmer", seleccionar Puerto (COM1, COM2 ...?). Seleccionar Interfaz I/O Directa, bueno para (Windows 9x) o API (Windows ME/NT/2000/XP). I/O Retardo de entrada Retardo 0, No invierta ninguna señal en comunicación y aceptamos.

En (Puertos del sistema) debe estar seleccionado COM1 o COM2, dependiendo del puerto serie en el cual se encuentre conectado el programador. Vamos a configurar el puerto del PC. Para ello vamos a tomar como ejemplo el COM2 (el que elegimos en los ajustes de hardware). Para llegar a la ventana de configuración de los puertos le damos a Inicio >Panel de control / Sistema / Administrador de dispositivos / Puertos (Com & LPT) y damos doble click en el COM2. Lo ponemos todo como está en la siguiente imagen.

En la pestaña Confirmación, deben estar activados los dos primeros, es decir marcados, excepto "Proteger código de dispositivo critico" y "Sobrescribir archivo". 

Activar "Verificar durante programación". La primera opción sobre todo es necesaria para ciertos PIC16F87xA, ya que IC-Prog no verifica estos chips durante el programa. La segunda opción asegura que nos será notificado sobre un error de programación inmediatamente.

En la pestaña Miscelánea, Prioridad de Proceso "Normal" y habilitar 1ª y deshabilitar 2ª, 3ª y 4ª opción.  

En algunos casos de habilitar estas últimas tres opciones, mostrará el fatídico aviso de instrucción privilegiada ?? 

En el menú Archivo, buscamos en la carpeta donde están los archivos .hex y elegimos el deseado.

A continuación elegimos el chip que vamos a programar.

En el menú lateral derecho debemos dejar sin activar las opciones PWRT y CP, para evitar quemar los bits de seguridad de no lectura, probablemente no permita volver a programar el chip si se trata de un reprogramable.

Llegados hasta aquí, vamos al menú superior y elegimos la acción que nos interese en ese momento: Leer, Grabar, Borrar o Verificar.

En caso de verificación, es mejor ir a Comando/Verificar Blanco, esta opción es más efectiva y nos aseguramos que está en blanco la memoria. 

Unas pruebas más.

Sin embargo y además de lo descrito hasta aquí, ahora probaremos otras señales que también participan del icprog, las cuales conviene conocer por intervenir en distintos PIC's y son:

  • Preparar el multímetro en ca. y comprobar los voltajes sobre el programador.
    Nota:
     
    - Cuando una señal es inhabilitada, el voltaje cae a 0V muy muy despacio, ya que los condensadores no se descargan sin una carga. No se preocupe por los valores de señales inválidas, solamente compruebe señales indicadas.
    - Los voltajes se cambiarán a los valores correctos y especificados cuando un PIC esté en el zócalo. El objetivo de la comprobación de hardware no es, ver los voltajes correctos, pero si asegurar que las señales pueden ser controladas (cambiado Act./Desact.) por su computador personal. Si se quiere asegurar que el voltaje bajo carga, no es demasiado alto para verificar si el circuito está montado correctamente, temporalmente conectar una resistencia de 1kilohm entre Vss y el "pin en prueba".

  • Entre en el menú Ajustes > Tipo Hardware.

  • ¡¡Asegure que ningún PIC está en el zócalo del programador!!!

  • Activar "Invertir MCLR", medir el voltaje entre Vss (pin 5) y MCLR (pin 4), para evitar causar problemas al puerto serie del computador personal, es conveniente tomar Vss del (pin 1) del zócalo de 8 pines: indicará 14 V ca.

  • Deshabilite todas las señales.

  • Activar "Invertir Vcc ", medir el voltaje entre Vss (pin 5) y Vdd (pin 14) del zócalo de 18 pines:  5 V ca.

  • Si esto falla, asegurarse que está habilitado el "controlar Vcc para JDM" en el submenú Miscelánea (Ajustes > Opciones).

  • Deshabilite todas las señales.

  • Activar "Enable clock", medir el voltaje entre Vss (pin 15) y RB6 (pin 12): 5 V +/-1 V ca. 

  • Deshabilite todas las señales.

  • Active "Enable Data Out", la tensión medida entre Vss (pin 5) y RB7 (pin 13) es: 5 V +/-0.5 V ca.

  • Ahora insertar el PIC en su zócalo.

  • Orden "Leer Todo" (tecla rápida F8).

  • Durante la lectura:
    El voltaje medido entre Vss (pin 5) y MCLR (pin 4): 13.7 V ca.
    El voltaje medido entre Vss (pin 5) y Vdd (pin 14): 5.1 V ca.
    No tiene ningún sentido medir los voltajes sobre otros pines, ya que estos son conmutados demasiado rápido.
    Nota: El programador JDM no trabajará, mientras se sondan estos pines con un alcance (GND-> problema de Tierra)

  • Si usted no mide 13.7V entre Vss y MCLR cuando el PIC es insertado, se puede aumentar/disminuir el voltaje con el "I/O Delay" del menú Hardware. ¡Retardos inferiores aumentarán el voltaje, retardos más altos disminuirán el voltaje! Yo noté, que no puede alcanzar 13.7V cuando el JDM es accedido vía las funciones Windows API.

  • Menú Archivo: Abrir Archivo, cargar el programa (archivo .hex) en el icprog.

  • Menú Comando: "Programar todo" (tecla F5)

  • Esto tarda (dependiendo del PC) APROXIMADAMENTE 30 segundos hasta que el PIC sea programado. Si la escritura no funciona, el IC-Prog notificará esto como "Verificación fallida" con el "Verificar después del programa" y "Verificar durante el programa" es registrando los Ajustes - > Opciones - > Programa del submenú.
    Nota:  Esto aparece con algunos PC el procedimiento de programa sólo pasa, cuando el pin 5 (GND) del conector SubD está conectado a los tiradores metálicos (carcasa y malla de tierra) del conector.

Consejos:

  1. - Imprima de este documento, como ayuda para el uso del programa.

  2. - Tener los ficheros que contengan los programas y/o datos a programar en el mismo directorio que haya instalado el software de programación.

  3. - Tener activada la opción de (verificar tras programación) en: Ajustes / Opciones / Programación.
       De este modo, el software verificará la correcta programación de cualquier chip.

El cable de conexión al PC (RS232), puede servir el de un viejo ratón, al que hay que soldar un conector BD9, en los comercios del ramo suelen tener este cable RS232.

Conectar el cable de RS232 sin el TE20se, comprobar que la tensión en el conector DB9 (marcadas en rojo) respecto de masa, se corresponden con las siguientes: -11V entre pin 3, 4, 11 y masa, si es así es correcto. Ahora conectar el TE20se, sin ningún chip, comprobar que la tensión entre los pines 8 (+) y 4 (-) del zócalo pequeño (E²prom) es de 5V, la misma tensión habrá entre el pin 14 (+) y el pin 5 (-) del zócalo grande del PIC, en caso contrario repasar las soldaduras y contactos. 

Esta información se puede encontrar en la red, este es un archivo pdf, del autor 'mortimer', al que quiero agradecer desde aquí su trabajo que, me parece bien desarrollado y servirá para muchos interesados.

Este otro archivo de ayuda es muy bueno y puede ser de refuerzo a lo descrito por mi aquí y en este enlace.

Pasos a seguir para programar un PIC:

Nota: En este ejemplo usaremos un PIC16F84, para empezar el TE20se debe estar desconectado del cable RS232.

1. Colocar el PIC en el zócalo correspondiente (en el zócalo de 18 pines) , de modo que el pin 1 del chip concuerde con el pin 1 del zócalo del programador.  

2. Ahora, conectar el programador TE20se al cable previamente instalado en el puerto serie, sea COM1 o COM2.

3. Seleccionar el tipo de PIC a programar en: Ajustes / Dispositivo / Microchip PIC / PIC16F84 o en el menú desplegable.

4. Indicar el reloj que va a usar el programador para acceder al PIC:  En (Oscilador) debes seleccionar la opción XT del menú desplegable.

5. Verificar que el PIC está vacío, con el comando: Comando / Verificar blanco.

En el caso de que no se encuentre en blanco, hay que borrarlo antes de programar un nuevo programa, poniendo en los casilleros de la derecha los siguientes ajustes:

El Watch Dog (WDT o Perro Guardián) debe estar desactivado, es decir sin marcar.
El Power Reset (PWRT) debe estar desactivado, es decir sin marcar..
El Code Protection (CP) debe estar desactivado, es decir sin marcar.
Después, hay que usar el siguiente comando:   Comando / Borrar todo.

6. Cargar el programa a 'quemar' (programar) con:   Archivo / Abrir.

7. Ajusta si es necesario los casilleros de la derecha con los siguientes valores:

El Watch Dog (WDT o Perro Guardián) debe estar desactivado, es decir sin marcar.
El Power Reset (PWRT) debe estar desactivado, es decir sin marcar..
El Code Protection (CP) debe estar desactivado, es decir sin marcar 
Y el programa del PIC con el fichero cargado con el comando: Comando / Programar Todo (Tecla Rápida: F5) 

8. Tras la grabación, el programa verificará si la misma ha sido realizada sin errores si se tiene activada la opción: (Verificar tras programación) en Ajustes / Opciones / Programación. Es mejor la opción Verificar mientras programa, para evitar este paso.

Si no la tiene activada, es recomendable que la active o que la realice manualmente con:  Comando / Leer Todo (Tecla Rápida: F8)

9. Tras todo este proceso, desconectar el grabador del cable y sacar el PIC del zócalo con la ayuda de un destornillador o pinzas con sumo cuidado, para no dañar ni doblar los pines.  

Pasos a seguir para programar una EEPROM:

Nota: En este ejemplo usaremos una EEPROM 24LC16B

  1. Coloca la EEPROM en el zócalo correspondiente (en este caso en el zócalo de 8 pines) , de modo que el pin 1 del chip concuerde con el pin 1 del zócalo del programador.
  2. Conectar el programador al cable previamente instalado en el puerto COM
  3. Selecciona el tipo de PIC a programar en:   Ajustes / Dispositivo / I2C EEPROM / 24C16 ó en el menú desplegable.
  4. Nota: En cuanto a programación, el 24C16 y el 24LC16B son equivalentes.

  5. 4. Carga el programa a programar con: Archivo / Abrir
  6. 5.  Programa la EEPROM con el fichero cargado con el comando:   Comando / Programar Todo (Tecla Rápida: F5).
  7. 6. Tras la grabación, el programa verificará si la misma ha sido realizada sin errores si se tiene activada la opción:
     (verificar tras programación) en Ajustes / Opciones / Programación.
  8. Si no la tiene activada, es recomendable que la actives o que la realices manualmente con:  Comando / Leer Todo (Tecla Rápida: F8)
  9. 7. Tras todo este proceso, desconectar el grabador del cable y sacar el PIC del zócalo con la ayuda de un destornillador con sumo cuidado, para no dañar ni doblar los pins.  

Solución del problema 0000H:

Si durante el uso del programador éste no lee, no programa o se genera un  error de verificación (error de verificación en 0000H), puede intentar solucionar este problema de la siguiente manera:

1º Compruebe que sólo hay un elemento a programar o leer, en el zócalo correspondiente, es decir un PIC ó una EEPROM. Los chips no pueden  programarse o leerse ambos al mismo tiempo y sólo puede haber uno en su zócalo correspondiente.

2º Compruebe que el PIC o la EEPROM son los correctos y han sido insertados con su muesca coincidiendo con la muesca del zócalo de programación y/o con la serigrafía de la placa.  La muesca del zócalo indica cuál es el pin 1, estando marcado en la serigrafía con un 1.

3º Compruebe que ha sido seleccionado en el menú el dispositivo que está  programando en ese momento, es decir, si se procede a programar un PIC12C508A,  el elemento seleccionado ha de ser el PIC12C508A. Si quiere programar una EEPROM 24C01A debe seleccionar 24C01A. Por cierto, no confunda los zócalos, no es el mismo revise la figura más arriba.

Para programar una EEPROM de la familia 24LCxxx, se debe de seleccionar el equivalente de la familia 24Cxxx.
   - Donde xxx, indica la capacidad de la EEPROM.
Para seleccionar el dispositivo a programar debe entrar en el siguiente menú:
   - Ajustes/Dispositivo/MICROCHIP PIC/PIC12C508A para seleccionar el 12C508A. 
   - Ajustes/Dispositivo/I2C EEPROM/24C01A para seleccionar el 24C01A (o 24LC01A).

4º Compruebe en la parte derecha de la pantalla, cuando se vaya a programar un PIC de la familia PIC16xXXx los siguientes elementos:

El Watch Dog (WDT o Perro Guardián) debe estar desactivado, es decir sin marcar..
El Power Reset (PWRT) debe estar desactivado, es decir sin marcar.
El Code Protection (CP) debe estar desactivado, es decir sin marcar..

Nota: Esto es, en caso de los PIC16C71, PIC16C84, PIC16F83, PIC16F84 y PIC16F84A 

5º Compruebe en el siguiente menú que el programa está bien configurado: Ajustes/Tipo Hardware (Tecla rápida: F3)

En (Programador) debe estar seleccionado: "JDM programmer"
En (Puertos) debe estar seleccionado COM1 o COM2, dependiendo del puerto serie en el cual se encuentre conectado el programador, recuerde la velocidad, 2400.
En (Interfaz) debe estar seleccionado: Direct I/O.
En (Comunicación) debe estar todo desactivado, es decir sin marcar.
En (Retardo I/O) debe estar puesto a 5 o menos (a < valor >, Tensión).

6º El PIC y la EEPROM necesitan ser programados despacio, si su puerto está configurado a mucha velocidad esto puede originar fallos en la programación y verificación del mismo. (Bueno, esto es lo que se dice, personalmente creo que es por otra razón, quiero decir que, al bajar el valor del Retardo I/O, lo que ocurre es que aumenta la tensión hasta los 13V, mas o menos).

Para reducir la velocidad de su puerto siga la siguiente secuencia de comandos con el ratón:   >Vaya a:

Mi PC / Panel de control / Sistema /Administrador de dispositivos /
Puertos COM y LPT / Puertos de comunicación COM1 (ó COM2) / Configuración del puerto.
Compruebe que el puerto esté configurado de la siguiente manera:  

Bits por segundo:   4800  (ó menos en caso de errores) 
Bits de datos:   8 
Paridad:   Ninguna 
Bits de paridad:   1 
Control de flujo:   Xon/Xoff 

7ª Un caso detectado por mi experiencia que también muestra el fatídico "Falló la dirección 0000h", esto puede producirse cuando se verifica el chip desde una pestaña de buffer que no esté en "todo FFFF" como el buffer 3 por ejemplo si no lo ha usado.

Nota.- A la hora de quemar un chip, debemos tener en cuenta y activar el tipo de reloj que usará el proyecto, lo típico es (cuarzo) XT, o (red resistencia-capacidad)  RC, en caso de no respetar este criterio no obtendremos el resultado esperado.

Otro error que podemos encontrar si trabajamos con sistemas operativos como Windows NT, Windows XP o Windows 2k, es el de instrucción de privilegio.

Por fortuna, este es el error de menor peso entre los enumerados hasta aquí, ya que se trata de una falta de comunicación a nivel de software, pues el sistema no puede acceder al puerto del computador el icprog y por tanto no hay comunicación entre ellos. Con anterioridad ya se ha indicado que en estos SO hay que disponer del archivo icprog.sys en la misma carpeta donde tengamos el icprog.exe y además se debe habilitar en Miscelánea, la opción driver NT/2000/XP, como ya se ha descrito. Reinicie el programa y todo debe estar dispuesto y funcionando. 

Verificar.

Cuando deseamos verificar el estado de un PIC, si lo hemos usado y borrado, pueden ocurrir dos casos: 

  1. Que la verificación nos indique que está correcta o

  2. Que nos indique que hay un error de verificación en la dirección de código 0000h!

En el segundo caso, puede que hayamos hecho la verificación del chip estando en la la pestaña inferior 'Buffer1' que es donde tenemos cargado los datos del programa que deseamos quemar, en el 99 % de los casos el problema es debido a esto, elija una pestaña libre como 'Buffer2' o  'Buffer3', el caso es que debe tener el código a FF y vuelva a verificar, en este caso si es correcto, si por el contrario sigue dando error, pruebe a borrar de nuevo el chip y repita la verificación. Si aún así sigue dando errores debe hacerse el ánimo y adquirir un chip nuevo.

 

Si a pesar de haber hecho todas las pruebas, sigue mostrando el dichoso mensaje, debe pensar en adquirir un nuevo chip, es casi seguro que se ha estropeado o grabado los bits de lectura/escritura y no se puede borrar o peor todavía se ha destruido su chip.¡Lo siento!

Volver al índice de artículos PIC.

 

Creado el: 20-04-2005
Actualizado el: 22-02-2006