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/.

pic-mt

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.

tut_intro0

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”

tut_intro1

Aparecerá una lista de mirrors, debemos escoger el más cercano o uno que funcione bien con nuestro proveedor de internet.

tut_intro2

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.

tut_intro3

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\CC5XF876A.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

#defineRA2PORTA.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.

//Inicializamoselpuerto
PORTB = 0b.0000.0000;
//Configuramoselpuerto
//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óloRA0/AN0esentradaanáloga
ADCON1 = 0b.0000.1110;

Para más detalles se debe consultar el datasheet del PIC correspondiente.