in

TUTORIAL: Programación de microcontroladores – Entrega 2

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:

TUTORIAL: Programación de microcontroladores  - Entrega 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.

TUTORIAL: Programación de microcontroladores  - Entrega 2

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.

Reportar

¿Qué te pareció?

Escrito por Ariel Palazzesi

20 Comments

Leave a Reply
  1. Exelente tuto, junto con el primero.. Hace un tiempo que no programo PICS, lo hice en la secundaria para entrgar proyectos anuales. Hicimos una casa inteligente y un control de entrada de personal que se implemento en la base de la fuerza aerea en quilmes. En su momento usaba el PIC BASIC para hacer el programa, salvo las partes que tenian que ser mas rapidas que lo hacia directo en assembler. Y para probarlo hay un entorno de simulacion muy bueno. El PROTEUS… Ahi podes simular todo el circuito, incluyendo el Micro.. podes ponerle teclados matriciales, lcd y lo mejor de todo, tiene una pantalla de HyperTerminal para hacer comunicacion RS-232 con el pic. Si pones mas de 1 y queres podes probar tambien el BUS I2C– Completisimo… Bueno Me despido. Esperando nuevamente la proxima entrega. Saludos

    • hola te escribo desde cali colombia sur america y neceito tu ayuda debo entregar un programa software para trabajar un motor paso a paso con el pic 16f877 y no he sido posible necesito tu ayudora por favor

  2. Hola GUIVI! Seguramente pasa una de las dos cosas siguientes: a) Tienes una version antigua del compilador, que no reconce ese comando. En ese caso, recuerda que tu licencia te permite descargar de la web del fabricante la ultima version sin cargo. Actualizate, y solucionado el problema. b) El micro que estas usando no tiene entradas analogicas en el portA (un 16F84, por ejemplo), y por eso el compilador "protesta" cuando le toca compilar ALLDIGITAL. Saludos!

  3. por favor ayuda, programo con picbasicpro el prosesador pic 671 de 8 pines pero aunque le programe la instruccion if then que es condicional no la respeta por favor colegas diganme que hacer gracias

      • Lo raro es que no me marca ningun error ya que se compila exitosamente incluso al programar no hay problema pero cuando mando la señal a la entrada que programo como condicional simplemente no la toma encuenta gracias por el interes Ariel y si me puedes ayudar lo agradecere mucho valga la redundancia saludos!

      • como ovservacion te digo que en el circuito pic16f84a no tengo problema es solo con el de ocho pines pero a veces el programa que hago es muy pequeño y creo que valdria la pena usar los procesadores pequeños gracias Ariel y saludos!

  4. perdon si no supe explicarme pero la programacion que hago en el pic16f84 que si funciono la condicional, en el pic12c761 no trabajo ,me ignora la señal que mando a una entrada gracias por la ayuda y no se como hacer que acepte la condicional en estos procesadores pequeños saludos!

  5. hola a todos el tutorial es fantastico gracias por el tiempo si me pudieran ayudar en configurar el puerto A como comparador que no lo tengo tan clara
    gracias

  6. excelente, que metodologia tan admirable…la verdad estoy muy interesado en seguir aprendiendo con ustedes..me gustaria que me den unas direciones especificas donde consular mas sobre estos temas o donde tengo mas acceso a lo que ustedes enseñan.

  7. esto me parece muy bueno y bien detallado, dado que es la primera vez que voy a realizar un trabajo con microcontroladores, y lo que quiero es que me abra y cierre persianas, 4 en concreto, ¿me recomendais algún microcontrolador en particular? gracias

  8. Hola se que este aporte ya tiene su tiempo, pero como soy estudiante de mecatronica estoy empezando a ver la programación en PIC’s y me interesa este aporte.

    Pero al buscar el diagrama del circuito "Placa de pruebas" no me manda a ningún lugar el enlace. ¿ habrá alguien que lo tenga y me lo pase?
    por favor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Patagonia I, la vaca Argentina que produce insulina

Inglaterra: instalarán gratuitamente medidores de consumo energético en los hogares