Continuamos aprendiendo todo lo necesario para poder crear nuestros propios circuitos con microcontroladores.En la entrega anterior de este tutorial vimos como construir un programa que, una vez cargado en el microcontrolador, hacia que un LED conectado a un pin del PORTB encendiese y apagase con una frecuencia de 500 milisegundos. Hoy aprovecharemos ese mismo ejemplo para ver como compilar el programa BASIC y como utilizar el WinPIC800 para enviarlo al microcontrolador.
Una vez que hemos escrito el programa en la ventana “BASIC Compiler” del PIC SIMULATOR IDE, debemos compilarlo. Este proceso se encarga de transformar el código que hemos escrito (un fichero “.BAS”) en un lenguaje muy parecido al ingles a una serie de bytes que hace lo mismo pero en un idioma comprensible por el microcontrolador. Este nuevo fichero tendrá como extensión “.HEX”.
Para compilar, simplemente utilizamos la opción “Tools” –> “Compile & Assemble” (F8). Si además queremos que el fichero resultante se cargue en el simulador para poder estudiarlo sin necesidad de grabarlo en un PIC real, usamos la opción siguiente: “Tools” –> “Compile & Assemble & Load” (F9). En entregas posteriores del tutorial veremos como simular nuestros programas.
Si no hemos cometido errores de sintaxis, el compilador creará el fichero .HEX y nos mostrará el mensaje de la figura 2:
Este mensaje es muy importante, así que explicaremos línea a línea su contenido.
La primera línea solamente nos informa que la compilación tuvo éxito.
La segunda nos dice que tamaño tiene el fichero generado, medido en cantidad de “palabras” (words). En el caso de los PICs de la serie 16F cada palabra tiene 14 bits de largo.
En el tercer renglón tenemos el tamaño total de la memoria del PIC que estemos utilizando también expresado en “words”. Esta información, junto con la de la línea anterior, es útil durante el desarrollo de un programa ya que nos da una idea de cuanto espacio nos queda disponible para nuestro programa.
La cuarta linea nos informa de la carpeta en donde se guardo el archivo .ASM y el nombre que tiene, que es el mismo que el del fichero .BAS pero con diferente extensión. Este fichero es un “paso intermedio” que realiza el compilador, pasando nuestro programa BASIC a ASM, antes de crear el HEX. Los más curiosos pueden utilizar el contenido del fichero ASM para aprender algo sobre la programación en ese lenguaje.
En quinto lugar tenemos la carpeta y nombre del fichero LST generado.
La sexta línea nos informa de la ubicación del fichero HEX. Es importante tomar nota de su nombre y ubicación, ya que es el que deberemos abrir desde WinPIC800 para enviarlo al PIC. La carpeta en que esta este fichero es la misma en la que estaba guardado el fichero .BAS que escribimos en primer lugar.
Ya estamos listos para el segundo paso: utilizar WinPIC800 para enviar el programa al microcontrolador. Vamos a asumir que tanto este programa como el driver del GTP-USB+ (o el programador que vayamos a utilizar) están correctamente instalados, y que el programador esta conectado y listo para funcionar.
Lo primero es asegurarnos de que el WinPIC800 este correctamente configurado. Para ello dispone en el menú principal de la opción “Configuración”. En “Hardware” nos aseguraremos que el programador elegido sea el nuestro (figura 3). En “Software” hay una serie de solapas y opciones (figura 4) que básicamente configuran los mensajes que recibiremos (o no) al utilizar el programa. En general, las opciones por defecto funcionarán correctamente para todos.
La figura 5 ilustra el paso siguiente: desde las listas que están a la derecha de la ventana principal del WinPIC800 seleccionamos la familia y modelo del microcontrolador que vamos a utilizar. Este debe coincidir con el que seleccionamos en el PIC SIMULATOR IDE, ya que el programa que se generó está especialmente concebido para ese modelo en particular. Como familia seleccionamos “PIC 16F” y como modelo “16F628A”.
Una vez que hemos hecho esto, WinPIC800 “sabe” como deberá enviar los datos al programador. Otro punto a tener en cuenta en esta etapa del proceso es la posición que debe ocupar el PIC en el zócalo ZIF del programador. Si tenemos dudas, podemos utilizar la ayuda incorporada en el programa, mediante la opción marcada con un círculo rojo en la figura 6. Luego, debemos ir al menú “Archivo” –> “Abrir” y cargar el fichero HEX que generamos con el PIC SIMULATOR IDE.
El led bicolor del GTP-USB+ estará en verde si todo esta correctamente instalado, por lo que podemos proceder a enviar el fichero. Para ello, presionamos el icono “Grabar Todo” que se ve en la figura 7, y en un par de segundos tenemos nuestro PIC grabado. El mensaje que veremos será el de la figura 8.
Para probar que todo funciona, tenemos que armar el circuito y alimentarlo con 5V de corriente continua. Veremos (si todo esta bien) el LED encendiendo y apagando cada medio segundo. Esto es así por que la corriente que circula por el proviene del pin 9 del PIC (a través de la resistencia de 220 ohms), y cada vez que el pin se pone en estado bajo deja de circular por el, apagándolo.
Seguramente la parte mas compleja y que mas tiempo nos ha llevado en esta practica es la de armar el circuito. El programa se escribe fácilmente, y si hay errores, se puede corregir sin complicaciones. La etapa de generación del fichero HEX y la grabación del mismo en el microcontrolador también es muy simple. Seria muy bueno podernos evitar el trabajo de tener que armar un circuito físico diferente cada vez que realizamos una práctica, ya que a lo largo de este tutorial realizamos muchas.
La solución a este problema viene de la mano de las denominadas “placas entrenadoras”. Estas placas tienen, por lo general, un zócalo para colocar el microcontrolador, y proveen una serie de “periféricos” listos para usar, tales como pulsadores, LEDs, pantallas LCD, algún buzzer, reles, salidas RS-232, USB y casi todo lo que podamos imaginar. Por lo general, su precio aumenta junto con sus prestaciones, y su valor comienza en unos 30 o 40 euros para las simples, hasta varios cientos por las más completas. Por supuesto, se trata de una buena inversión por que nos ahora tiempo y dinero empleado en crear prototipos cada vez.
Afortunadamente, los lectores de NeoTeo pueden armar su propia placa entrenadora. De hecho, hemos publicado dos: una para PICs de 18 pines, y otra para los más grandes, de 40 pines. Estas placas son muy básicas, solo tienen el PIC y 3 o 4 pulsadores y LEDs. Pero tienen un par de ventajas importantes: su costo es muy bajo, y son totalmente ampliables mediante módulos, por lo que podemos ir construyéndolos a medida que los necesitamos, y nos quedan para las prácticas siguientes.
Las prácticas de los capítulos siguientes estarán pensadas como para ser realizadas sobre estas placas entrenadoras, para ahorrar tiempo. Por supuesto, como también brindaremos el circuito eléctrico en cada caso, no habrá problemas si quieren seguir trabajando como hasta ahora.
A continuación, y para terminar por hoy, les muestro como modificar el ejemplo de la entrega anterior para que funcione sobre la placa entrenadora de 18 pines. La única cosa que hay que cambiar es el pin utilizado para conectar el LED. En el ejemplo original usamos un pin del PORTB, pero en la placa entrenadora (si no tenemos ningún modulo adicional de E/S) solo tenemos LEDs conectados a los pines 4, 5, 6 y 7 del PORTA. Así que el programa debería utilizar alguno de ellos. Supongamos que nos decidimos por usar el pin 7 del PORTA (de ahora en más, PORTA.7. El programa modificado quedaría así:
AllDigital
TRISA = %01111111
TRISB = %00000000
loop:
PORTA.7 = 1
WaitMs 500
PORTA.7 = 0
WaitMs 500
Goto loop
Los cambios efectuados también incluyen la línea 3 (TRISA = %01111111) ya que tenemos que indicar que el PORTA.7 se utilizara como salida. La figura 10 muestra como tenemos que configurar la sección “Options” –>“Configuration Bits” para que el microcontrolador funcione correctamente en la placa entrenadora. Lo mas importante es que le estamos indicando que no usaremos cristal para el oscilador, y que esos dos pines (PORTA.6 y PORTA.7) estarán disponibles como entrada/salida.
La figura 11 muestra el trainer funcionado, con el LED rojo que indica que esta alimentado, y el verde encendido. El círculo rojo indica la posición que tiene que tener el jumper en PORTA.7 para que se comporte como salida. Si tienen alguna duda sobre el entrenador, pueden releer el artículo correspondiente. En el video se ve claramente como destella el LED.
Con esto damos por terminada la segunda entrega. Les recuerdo que en los foros pueden plantear sus dudas. Hasta la próxima semana.