3.3. PIC's GNU/Linux

En este pequeño HowTo se intentará explicar como podemos realizar nuestros proyectos con un microprocesador PIC bajo GNU/Linux. En la asignatura de Microprocesadores impartida por el DAT en como asignatura optativa en 3º de Ingeniería Informática se utiliza aplicaciones en windows para crear, compilar y grabar código en el PIC. Nosotros intentaremos dar un entorno amigable bajo GNU/Linux capaz de igualar o superar las facilidades de las aplicaciones de windows.

Este HowTo no tiene como fin enseñar a programar un PIC, ni métodos de programación para microprocesadores, simplemente intenta que se sienta más cómodo el usuario a la hora de compilar, simular y grabar en un PIC.

3.3.1. Proceso de Compilación

3.3.1.1. ¿De qué compiladores dispongo?

En primer lugar hay que diferenciar tipos de compiladores puesto que para el PIC se puede programar en varios lenguajes: ASM, C, C++ ... Por tanto tenemos varios compiladores para cada lenguaje.

Ahora os preguntareis en que es mejor programar, si en C o ASM. Pues bien eso depende de los gustos y luego del proyecto en sí

  • Si necesitamos eficiencia, rapidez y tenemos limitación en el tamaño del hexadecimal final debemos escoger ensamblador(asm). El mejor compilador de asm para pic es MPASM/gpasm del cual dispones de paquete debian (gputils).

  • Si por el contrario queremos sencillez en el código y el tamaño final de hexadecimal no es problema podemos optar por C. Para compilar en C para el pic puedes usar el pic_cc

3.3.1.2. ¿Cómo compilo un .asm?

Como ya hemos dicho en el apartado anterior usaremos el gpasm para compilar código en asa del pic, a código hexadecimal entendible por el microprocesador. El gpasm lo puedes encontrar, junto con mas herramientas, dentro del paquete debian gputils - GNU PIC utilities.


low@vega:~$ gpasm ejemplo.asa
ejemplo.asa:33:Message [302] Register in operand not in bank 0. Ensure bank bits are correct.

low@vega:~$ 
			

Una vez realizado esto tendremos un archivo llamado "ejemplo.hex" el cual es que debemos simular o grabar en el PIC, puesto que es éste archivo el que de verdad entiende el PIC. El mensaje que sale en la compilación suele ser habitual ya que se queja de los bancos, pero es normal puesto que en tiempo de compilación el compilador no sabe realmente en cual de los bancos estamos del PIC.

3.3.2. Proceso de Simulación

3.3.2.1. ¿De qué simuladores dispongo?

Existen varios simuladores para el PIC, pero uno de los mejores es el gpsim incluido en el paquete de utilidades de PIC (gputils). Este entorno de simulación para el PIC soporta microprocesadores de 12, 14 y 16 bits y además tiene variedad de plugins para simular componentes externos al PIC como una pantalla LCD.

También existen otros simuladores, pero más específicos:

  • Por ejemplo tenemos el nitpic que es especifico para el PIC16C84 el cual esta aun en desarrollo y se basa en las X Windows.

  • También tenemos el miSim, un simulador muy bueno en tiempo real y capaz de correr en cualquier plataforma que soporte Java.

3.3.2.2. Un ejemplo de simulación

La simulación consiste en emular el código hexadecimal que hemos generado con el compilador tal como si estuviera corriendo en un PIC, pero en verdad esta corriendo en nuestra arquitectura de nuestro ordenador. Por ello las simulaciones tampoco son muy fiables porque dependen de las características de nuestro PC que vaya mas rápido o mas lento. De todas formas hay algunos simuladores que permiten configurar la velocidad del micro y demás, pero no dejan de ser algo inestables.

Veamos ahora el ejemplo de como simular un código hexadecimal, para ello debemos ejecutar el siguiente comando


low@vega:~$ gpsim -pp16f84

gpsim - the GNUPIC simulator
version: 0.20.14

type help for help
gpsim>  c84 construct

gpsim>

Como puedes observar al simulador se le llama pasandole el tipo de microprocesador para el que esta hecho el código, para saber que tipos soporta mira en man, man gpsim. Como ves se abre una nueva consola "gpsim>" donde puede meter comandos correspondientes a la simulación, teclea help para ver los comandos disponibles. A la vez se abre una aplicación gráfica, donde debes abrir el archivo hexadecimal (.hex) para empezar la simulación, una vez comenzada la simulación puedes controlarla mediante los botones que te ofrece esta GUI.

3.3.3. Proceso de Grabación

3.3.3.1. Tipos de grabadores

Una vez que ya hemos simulado y hemos visto el comportamiento correcto de nuestro código hexadecimal es hora de grabarlo en nuestro PIC, para ello necesitamos un grabador de PIC's. Uno de los mas comunes es el T-20, en cualquiera de sus versiones grabar PIC16F84 ó PIC16C84 que suelen ser los mas usados para las prácticas.

El programador T-20 es el que tenéis en la siguiente foto, con este programador puedes programar mediante interface serie PIC16F84/PIC16C84 y también epprom. Por lo general la interface que se utiliza en este tipo de programadores es el serie, pero también puedes encontrar algún programador que utilice el standar de centronics (puerto paralelo).

3.3.3.2. Ejemplo básico

Vamos pues a grabar un hexadecimal en nuestro PIC mediante el programa picprog, uno de los mas sencillos y buenos para este fin. El comando que nos permite grabar en nuestro PIC es el siguiente:


low@vega:~$ picprog --burn --device=pic16f84 --input ejemplo.hex --pic /dev/ttyS1

Mediantes este comando se grabara nuestro hexadecimal en el PIC correctamente, ahora pasamos de describir los parámetros (para mas información picprog --help)

  • --burn: decimos al programa que grabe el HEX (también puede leerlo).

  • --device=pic16f84: decimos al programa que modelo de PIC usamos.

  • --input: decimos al programa que archivo queremos grabar en el PIC.

  • --pic: decimos al programa en que dispositivo serie esta conectado nuestro grabador de PIC's.

3.3.3.3. Consejos

Antes de grabar un PIC ten en cuenta los siguientes consejos:

  • Asegurate antes de grabar el hexadecimal en el PIC, que la simulación sale correctamente puesto que una mala programación puede dañar el PIC y sus componentes, aunque no es lo mas frecuente.

  • Utiliza zócalos para llevar el PIC desde el programador a tu circuito y viceversa, puesto que es fácil que una patilla se rompa y un zócalo tiene un precio ridículo en comparación con el precio de cualquier PIC.

  • Asegurate despues de grabar el PIC que se ha grabado correctamente el hexadecimal mediante la opción que se describe en el ejemplo básico.

  • Utiliza siempre que puedas grabadores T-20, son los mejores y los mas universales, hay mucha información incluso de como crearte tu mismo un T-20.

3.3.4. Links de interés