miércoles, 30 de julio de 2008

Esta es la primera prueba que realizé con un PIC. Elegí el 16f876a.


Hardware


Para programarlo me creé un programador típico, un derivado del programador JMD, en una placa de prueba. Podéis encontrar el circuito del programador aquí y esta es una foto del programador una vez montado:




Se puede apreciar a la izquierda que hay un montón de cables que parecen no servir para nada... es ahí donde se conecta el PIC en mi montaje.


A la hora de alimentar el PIC hay muchas opciones.  Personalmente, y a falta de una fuente de alimentación propiamente dicha, escogí conectar un transformador al PIC mediante un regulador de tensión para no tener que estar comprando pilas. En el montaje de la siguiente foto, el regulador (LM317) está a la izquierda. El circuito utilizado es el más corriente, que viene en el propio datasheet y con un potenciómetro ajustado correctamente consigo unos 5 Voltios




Después, en el centro, está el NE555. De nuevo, hay muchas opciones para configurar el reloj del PIC, pero yo he usado el archiconocido 555 configurado en modo astable multivibrador (Lo que básicamente significa que genera una señal cuadrada con cierta frecuencia) para alimentar externamente con una señal externa el reloj del PIC. Concretamente, dependiendo de 2 resistencias (una de ellas es un potenciómetro), y del condensador que uses, la señal generada tendrá una frecuencia determinada y el tiempo que está en alto podrá ser diferente al tiempo que está a nivel bajo. He aquí una foto del oscilador funcionando a unos 4 voltios pico pico, con un tiempo en alto mayor al tiempo a nivel bajo y a unos 50Hz:




Software


El programa que he escrito lo que hace es de lo más simple: pone a nivel alto todos los pines del puerto B y luego los pone a nivel bajo, cíclicamente. El código se puede encontrar aquí.


He de decir que aunque prefiero usar el software libre, y a pesar de que hay herramientas libres que permiten programar pics, y ensamblar código de pics (por ejemplo gputils y gpsim), utilizé el entorno MPLAB para escribir el código y compilar el fichero hexadecimal e IC-Prog para programar el pic.



Las opciones de configuración que he utilizado son el oscilador en modo LP y todas las demás opciones desactivadas. Todas las demás opciones desactivadas, incluyendo, especialmente, el Watchdog Timer y la opción de Low Voltage Programming. El Watchdog Timer es un contador que al llegar a cero hace que se resetee el PIC, con lo que antes de que eso ocurra hay que resetear el contador para que no se resetee el PIC. Eso se usa porque si el programa se queda colgado, seguramente no llegará a la parte del código que resetea el contador, con lo que reinicia el PIC y así descuelga el PIC. La opción Low Voltage Programming, por lo que he entendido, hace que el PIC se resetee si el pin PGM está sin nada conectado. Nosotros no queremos eso, así que desactivamos esa opción en los bits de configuración, lo cual además nos obliga a conectar el pin VPP a VCC mediante una resistencia de unos 10k. He de añadir que estas opciones de configuración se pueden configurar mediante código, pero yo elegí no incluirlo en el código y elegí la configuración que deseaba desde el mismo IC-Prog.



Un saludo


 

No hay comentarios: