entendiendo icprog

Anuncio
ENTENDIENDO ICPROG
www.ic-prog.com
Autor: José Antonio Casas email: [email protected]
Icprog es un software de libre distribución con el que podremos programar gran
cantidad de dispositivos como microcontroladores PIC, Scenix, memorias I2C, SPI...
etc. Soporta una número de programadores bastante amplio, dependiendo del
programador que estemos usando podremos grabar algunos dispositivos o no. En este
tutorial nos centraremos en el clásico programador JDM. Es un programador serie muy
fácil de montar ( tenéis una variante de este programador en www.easybots.com ) con
el que podremos programar gran cantidad de dispositivos, entre ellos se encuentran los
microcontroladores PIC, concretamente la serie 16F8XX.
Lo primero que debemos hacer al iniciar por primera vez ICPROG es escoger el
programador que queremos usar, en nuestro caso JDM
.
Escogeremos convenientemente el puerto serie al que conectaremos el programador y si
nuestro JDM es normalito no hará falta marcar ninguna casilla en el apartado
“comunicación”. El apartado “retardo” lo usaremos si vemos que nuestro programador a
veces “falla”. En ocasiones incrementando un poco el retardo I/O conseguiremos que el
programador falle menos o no falle.
Una vez configurado el Hardware pasaremos a escoger el integrado que queremos
programar. Lo escogeremos dentro de una lista que podremos desplegar en el apartado
“Ajustes” en el menú superior. Para nuestro ejemplo escogeremos el PIC16F877.
Una vez hallamos hecho esto nos aparecerá una pantalla con el código de programa y en
la parte izquierda nos aparecerá una barra como la de la figura de abajo.
Será muy importante que entendamos que indican cada una de las casillas que forman
esa tabla. Cada una de las casillas nos permitirá cambiar algún parámetro de los FUSES
del PIC. Los FUSES son unos parámetros del PIC que le permitirán cambiar su
configuración interna antes de que el microcontrolador arranque. Por ejemplo, si
escogemos un reloj HS, el circuito interno de oscilación que el PIC usará será diferente
que si escogemos un reloj RC. Así pues los FUSES son parámetros de configuración del
PIC que necesitamos grabar correctamente para que el funcionamiento sea el esperado y
que dependerán de la disposición Hardware con la que esté conectado el PIC en el
circuito en el que se encuentre.
WDT: Esta casilla nos permite activar o desactivar el WatchDOGSu
funcionamiento es sumamente sencillo. Simplemente es un registro que
debemos borrar cada cierto tiempo. Si pasa un tiempo X y ese registro no ha
sido borrado, el pic se resetea, así de sencillo. La instrucción para borrar el
registro es CLRWDT. Esto se usa como sistema de protección ante un
posible cuelgue del PIC.
OSCILADOR: Este fuse se refiere al modo de oscilación que va a usar el
Pic. Los modos posibles son los siguientes:
RC: Se basa en un montaje con una resistencia y un condensador (Resistor Capacitor). La velocidad a la que oscile el pic dependerá de los valores del
condensador y de la resistencia. En el dataheet del PIC tenéis los valores. En
este modo el PIC no puede funcionar a frecuencias altas, es decir, de orden de
Mhz.
XT: Se suele usar este modo de oscilación cuando usamos oscilador
con cristal de cuarzo pero a baja velocidad. Por ejemplo 4 Mhz.
HS: Para cuando necesitemos aplicaciones de "alta velocidad"(más de
4 Mhz ). Se basa también en un cristal de cuarzo, como el XT
LP: "Low Power" En este modo de oscilación el pic consume menos a costa
de bajar su frecuencia de oscilación a unos 200Khz. Al igual que el XT y el
HS, necesitaremos de un cristal de cuarzo y unos condensadores.
PWRT: Si activamos este FUSE, lo que conseguimos es que se se genere un retardo
en la inicialización del Pic. Esto se usa para que la tensión se estabilice, por lo que se
recomienda su uso.
LVP: (Low Voltage Programming ) Si activamos este fuse, el PIC entenderá que lo
vamos a programar mediante el LVP. Es una manera de programarlo que no requiere
usar los 12V en la patilla de reset. Para más detalles podéis consultar el datasheet. Es
muy importante desactivarlo si no lo vamos a usar.
DEBUGGER: Inicializa el PIC en modo DEBUG. Algunos programadores soportan
esta prestación y podemos hacer un debug en tiempo real con programas como el
MPLAB.
CP: El Code Protection. O dicho de otro modo, una garantía de que el código que
escribamos en el PIC no pueda ser leido por otra persona, para que no nos lo copien,
modifiquen, etc. Esto no impide que el PIC funcione como siempre, ni que no se
pueda sobreescribir su contenido. Lo único que nos impide es leerlo.
Uso de las pestañas BUFFER
Las pestañas buffer nos permiten tener diferentes ventanas de código de programa para
agilizarnos la tarea de programación. Si tenemos que grabar diferentes programas o
comparar los programas grabados en el PIC con alguno que nosotros tengamos en el
PC.
Por ejemplo, si nos encontramos dentro de la pestaña 1, podremos cargar un programa
para grabar . Una vez grabado, podemos pinchar en la pestaña 2 y allí leer el programa
que hay en el PIC (atajo de teclado: F8). El programa leido se quedará dentro de la
pestaña 2, ahora podríamos comparar el contenido de las dos ventanas y así sabríamos si
lo que acabamos de grabar en el PIC se ha grabado correctamente, para ello, dentro de
la pestaña “Buffer” del menú superior escogeremos “comparar” y allí seleccionaremos
el buffer con el que queremos comparar ( buffer 1 en nuestro caso ). Si el contenido de
los dos buffers es diferente, el programa nos empezará a indicar las posiciones de
memoria que son distintas. Sin lugar a dudas, esto no es bueno, ya que el código que
acabamos de leer debería ser el mismo que el código que hemos grabado.
El error 0000h
El error 0000h ocurre cuando tras una verificación ICPROG comprueba que la posición
de memoria 0000h del código que queremos programar no coincide con la posición
0000h ( la posición inicial ) de la memoria del PIC. Por tanto el PIC no se ha grabado
bien . Cuando el PIC no se graba bien, lo suele hacer desde un principio, otras veces
solo se graban mal algunas direcciones concretas, entonces al verificar ICPROG nos
dirá que en un dirección determinada ( por ejemplo: 00F4Ch ) ha habido un error. Si
ello ocurre intentaremos grabar de nuevo, si sigue sin funcionar intentaremos cambiar el
retardo del programador en el apartado “Ajustes Hardware” ( atajo de teclado F3 ).
Si ello tampoco da resultado reiniciaremos la máquina y volveremos a intentar. Si así
tampoco intentaremos la grabación con otro PIC. Si el programador todavía no funciona
probaremos en otro ordenador. Y si así tampoco entonces nos preguntaremos si el
programador ha funcionado alguna vez. Si ha funcionado alguna vez entonces yo ya no
sabría que hacer. En caso contrario, si nunca lo hemos utilizado sería conveniente medir
con un multímetro los voltajes que hay en las patillas asociadas al programador, para
ello haremos lo siguiente.
Iniciaremos una programación con un programa cualesquiera, mediremos en la patilla
de VDD y allí tendrá que haber +5V, en caso contrario repasaremos el circuito porque
algo está mal. Si todo ha ido bien mediremos en la patilla de RESET, allí tendrán que
aparecer unos 12V. Luego en las patillas de DATA y CLK aparecerán unos voltajes de
unos 3V. En verdad allí habrá un tren de pulsos por donde fluye la información, pero si
medimos con el multímetro en modo DC éste nos dará el valor medio de voltaje
presente en ese punto.
Si llegados a este punto todavía no hemos resuelto el problema estaría bien preguntar a
alguien que hubiese montado ese mismo programador. Si esa persona no nos puede
ayudar entonces lo mejor será montar otro programador o comprarse uno hecho ( esto
ya cuando estemos desesperados ☺ )
Descargar