Introducción
Instalación de programas necesarios
En estas notas se pretende introducir las funcionalidades básicas
del PIC MT y sus módulos. Se asume que se tiene conocimientos
previos del lenguaje de programación C, el cual será usado en
conjunto con el compilador cc5x. Para comenzar a trabajar, se debe
obtener la versión gratuita del compilador cc5x (u otra versión si es que
se es dueño de la licencia), desde la página del compilador,
http://www.bknd.com/cc5x/.
Con respecto al compilador cc5x, se recomienda instalarlo de manera que el
ejecutable quede en el directorio C:\bknd\CC5X. Dado que en nuestros
programas incluiremos las cabeceras correspondientes al microcontrolador
que estemos usando, es conveniente que la ruta en la que se ubican
esos archivos no sea extensa.
También se debe instalar el entorno de desarrollo MPLAB, descargable desde
la página de Microchip, http://www.microchip.com,
o en siguiendo este
enlace.
El proceso de compilación a código de máquina consta de dos partes. Una vez
escrito el programa en C, se compila utilizando cc5x y se obtiene como
resultado el código en assembler. Para llevar este código a código
de máquina se utiliza el ensamblador incluido en MPLAB, el que genera
un archivo binario, el que finalmente será grabado en la memoria del PIC
a través de un programador utilizando alguna herramienta como icprog, o el
mismo MPLAB si se cuenta con un programador como el
PIC-MCP (recomendado).
Construiremos un pequeño script que se encargue de configurar el path de windows,
de manera que podamos tipear por línea de comando cc5x en vez de C:\bknd\cc5x\cc5x. También
haremos lo mismo para el ensamblador (cuyo ejecutable es MPASMWIN.exe).
El script se encuentra disponible para descargar desde acá.
Para compilar un programa (supongamos que se encuentra en main.c) debemos escribir en la
línea de comandos,
cc5x main.c
MPASMWIN main.asm
Lo que generará el archivo main.hex, listo para ser grabado en un PIC mediante icprog
o MPLAB. Se recomienda manejar el código fuente en un directorio de poca
profundidad en el árbol de directorios, y cuya dirección no contenga espacios.
Un buen directorio de trabajo es por ejemplo C:\src. Lo anterior se debe a que
tanto el compilador como el ensamblador se marean un poco con los directorios
de nombre extenso o con espacios.
Editor de texto
Para editar código en C se puede utilizar el editor de su agrado, pero se
recomienda eclipse con el plugin CDT, pues además de ser una herramienta
robusta, se tiene fácil acceso a los archivos de cabecera incluídos, al listado
de funciones y a los símbolos definidos. El entorno provee también herramientas
como cvs y la posibilidad de trabajar en proyectos más complejos.
El plugin CDT se instala desde el menú,
Help->Software Updates->Find and install
Donde seleccionamos la opción "Search for new features to install".
De la lista de sitios de actualizaciones, se debe escoger "Callisto Discovery Site"
Aparecerá una lista de mirrors, debemos escoger el más cercano o uno
que funcione bien con nuestro proveedor de internet.
A continuación seleccionamos "C and C++ developement". Luego basta aceptar
la licencia de uso del plugin y seguir unos cuantos pasos que no vale la pena
detallar.
Consejos útiles
Los ejemplos presentados a lo largo de esta guía, están basados en el PIC 16F876A.
Por ello, todos los archivos de código fuente llevan al comienzo la línea,
#include "C:\bknd\CC5X\16F876A.h"
Que le indica al compilador la cabecera correspondiente al PIC. Si usted posee
un PIC distinto, bastará cambiar el encabezado por el del PIC que esté
utilizando, teniendo especial cuidado en comprobar que los pines de su PIC
tengan el mismo uso que el que se le da en el código fuente.
Si un símbolo no está definido en su archivo de cabecera, no desespere, en general
es muy simple definirlos uno mismo, inspeccionando el archivo de la cabecera y leyendo
el datasheet. Por ejemplo, si en algún programa se usa el símbolo RA2 haciendo
referencia al pin 2 del puerto A, pero el símbolo
no se define en la cabecera, lo puede definir escribiendo
#define RA2 PORTA.2
Si un registro no se encuentra definido, revise en el datasheet la dirección de
memoria donde se encuentra tal registro y utilice como ejemplo las definiciones
del archivo de cabecera para definirlo.
Finalmente, no olvide configurar los puertos de manera adecuada al comienzo de su
programa. Para cada puerto, existe un registro que configura si los pines
del puerto serán usados como entradas o como salidas. El nombre de los
registros de configuración es TRIS y la letra del puerto. Si el i-ésimo bit del
registro de configuración es 0, entonces el i-ésimo pin del puerto
correspondiente será una salida. Si el i-ésimo bit del registro de configuración
es 1, entonces el correspondiente bit del puerto será tomado como una entrada.
Por ejemplo, si quisiéramos configurar el puerto B de manera que todos los pines
fuese salidas a excepción del pin 0 (que sería una entrada), el código sería.
//Inicializamos el puerto
PORTB = 0b.0000.0000;
//Configuramos el puerto
//0 = salida, 1 = entrada
TRISB = 0b.0000.0001;
Además de lo anterior, se debe tener en cuenta que el puerto A del PIC 16F876A
posee pines que se usan también para el módulo de conversión análogo/digital. Es por
eso que se debe configurar si dichos pines se usarán en el módulo de conversión
análogo digital o como entrada/salida digital. Si vemos el esquemático del
PIC-MT, veremos que el único pin al que se le puede conectar una señal
análoga es el pin 0 del puerto A. Se debe configurar el resto como entradas/salidas
digitales. Para realizar esta configuración se debe ajustar los 4 bits de menor
orden del registro ADCON1. La configuración que deja al pin 0 del puerto A como
entrada análoga y al resto como entradas/salidas digitales es 1110 para los
4 bits de menor orden, por lo que en el bloque de inicializaciones se debe incluir
la instrucción,
//Sólo RA0/AN0 es entrada análoga
ADCON1 = 0b.0000.1110;
Para más detalles se debe consultar el datasheet del PIC correspondiente.
|