Apunte de MPLAB y Proteus

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

Compilación en MPLAB X, simulación en Proteus y

programación de microcontroladores

Técnicas Digitales II
2018
Autor: Cliver Carrascal

Resumen
En el presente apunte se explicará el proceso de creación, compilación, simulación y progra-
mación de un programa en lenguaje C para un microcontrolador PIC 16F887 de Microchip. Para
poder seguir los pasos de este apunte es necesario tener instalado MPLAB X v3.00 (o superior),
el compilador XC8 v1.33 (o superior), el simulador Proteus v8.2 (o superior) y una placa progra-
madora PICkit2. El IDE MPLAB X y el compilador XC8 se pueden descargar de manera gratuita
desde la página oficial de Microchip (http://www.microchip.com/mplab/ ).

1. Introducción
Para crear un programa que luego vaya a funcionar en un microcontrolador son necesarias dos
herramientas fundamentales: un compilador para traducir del lenguaje C al lenguaje del microcon-
trolador (Assembler) y un programa que brinde el entorno y las herramientas necesarias para poder
hacerlo más fácilmente, que se denomina Entorno de Desarrollo Integrado (IDE). El compilador que
se utilizará será el XC8, mientras que el IDE será MPLABX, ambas aplicaciones son específicas para
microcontroladores de Microchip. Se comenzará trabajando con MPLAB en la creación y depuración
de un nuevo proyecto. Luego, en la sección 2 se verá como simular su funcionalidad en Proteus y, por
último, en la sección 3 se muestra cómo se programa el microcontrolador con el mismo IDE o con un
programa externo creado por Microchip.

2. Compilación en MPLAB X
2.1. Nuevo Proyecto
Desde la pantalla inicial de MPLAB X, crear un nuevo proyecto haciendo click en el menú “File”,
y seleccionando la opción "New Project". En la ventana emergente (ver figura 1), seleccionar la opción
“Standalone Project”, ubicado dentro de la carpeta “Microchip Embedded”, y hacer click en Next.

1
Figura 1: Creación de un nuevo proyecto.

En la siguiente ventana se debe elegir el microcontrolador que se utilizará en el proyecto. En este


curso se utilizará el PIC 16F887, que pertenece a la familia de gama media de 8 bits. Para ello se debe
seleccionar la opción “Mid-Range 8-bit MCU” en el campo de “Family”, y luego buscar PIC16F887
en el campo “Device”.

Figura 2: Selección del microcontrolador.

Al presionar Next, se debe seleccionar el programador, es decir, el dispositivo que se utilizará pa-
ra descargar el programa en el microcontrolador. Para el microcontrolador escogido (16F887) puede
seleccionarse PICkit2 o PICkit3. Si sólo se planea simular el programa sin descargarlo a un micro-
controlador seleccionar ICD 3, de lo contrario, seleccionar PICkit2.

Figura 3: Selección del programador.

A continuación se debe seleccionar el compilador, es decir, el traductor de lenguaje C al lenguaje


de microcontrolador. Seleccionar el compilador XC8 como se muestra en la figura 4 y presionar

2
Next. En la última ventana se debe elegir el nombre del proyecto y el lugar donde será creado. Tener
en cuenta que, en la dirección que se haya elegido, se creará una carpeta con el mismo nombre
del proyecto y “.X” al final. Todos los archivos relacionados al proyecto se crearán dentro de dicha
carpeta.

Figura 4: Selección del compilador.

Una vez finalizado el asistente de creación de proyecto, deberá aparecer en la parte izquierda de
la ventana el árbol de carpetas del proyecto, como se muestra en la figura 5. Si no es así, hacer click
en “Projects” señalado en la figura 6, y luego en el botón señalado con un círculo rojo en la misma
figura para dejarlo de manera permanente.

Figura 6: Dejar árbol permanente en el IDE.


Figura 5: Árbol de proyecto.

Hacer click derecho en el título del proyecto (escrito en negrita) y seleccionar “Properties”. En
la ventana que se abre seleccionar la opción “XC8 global options” ubicado en la parte izquierda (ver
figura 7). En la opción “Output file format” seleccionar la opción “COFF” y presionar OK.

3
Figura 7: Configuración del archivo de salida del compilador

2.2. Nuevo archivo fuente


Para crear el archivo donde estará escrito el programa, seleccionar la opción “New File” dentro
del menú “File”, ó presionar el botón ubicado en la parte superior izquierda de la ventana. Dentro
de la ventana emergente (ver figura 8), seleccionar dentro de la carpeta “C” la opción “C Main File” y
presionar Next. Escriba el nombre que desea para el archivo, y presione Finalizar. El archivo se creará
dentro de la carpeta “<proyecto>.X”.

Figura 8: Creación de un nuevo archivo fuente.

La ubicación del archivo será por defecto dentro de la carpeta “Source Files” dentro del árbol del
proyecto. En la figura 9 se tiene un archivo con un programa ya escrito.

4
Figura 9: Ejemplo de un archivo fuente escrito.

2.3. Compilación
Para verificar y compilar el programa escrito en el archivo, hacer click en alguno de los íconos
mostrados en la figura 10, que se ubican en la parte superior de la pantalla. La diferencia entre ambos
es que el de la derecha elimina todos los archivos anteriores antes de compilar (y por lo tanto tarda
más en terminar el proceso).

Figura 10: Botones para compilar un programa.

Si el programa está bien escrito, en la parte inferior de la pantalla debe aparecer la ventana
“Output” con el mensaje “Build Succesful”, como se muestra en la figura 11. Se generarán dos ar-
chivos con el nombre del proyecto y la palabra “.production” concatenada, con extensiones “.cof” y
“.hex”. Estos dos archivos son los archivos fuente para la simulación y programación del microcon-
trolador, respectivamente.

Figura 11: Compilación exitosa.

En el caso que el código tenga errores, en la ventana “Output” mostrará el mensaje “Build Failed”
en color rojo. Los errores hallados por el compilador se muestran en la misma ventana resaltados
en azul. En la figura 12 se muestra un ejemplo donde se omitió el “;” al final de una sentencia. El
compilador muestra el archivo donde se encontró el error (main.c), la línea dentro del archivo (46)
y el motivo del error, que en el ejemplo es “Error en el sintaxis del código” y “Se esperaba un “;”
luego de la sentencia”. Al hacer click en la línea que describe el error se resalta la línea del código que

5
contiene dicho error, como se muestra en la figura 13. Cuando falta el “;”, el error se resalta siempre
en la línea siguiente, debido a que reconoce las dos instrucciones como una sola.

Figura 12: Compilación fallida.

Figura 13: Error resaltado en el código.

Si al fallar la compilación no muestra ningún error en la ventana “Output”, en general se debe a la


mala configuración del compilador, incompatibilidad con el microcontrolador seleccionado, falta de
librerías u otros.

3. Proteus
3.1. Introducción
Una vez creado el proyecto, generado el código y compilado correctamente en MPLAB X, es
necesario chequear su funcionalidad, es decir, si el programa hace efectivamente lo que se quiere que
haga. Para esto se utilizará una herramienta que permite simular el hardware que se tiene disponible
y cargarle el programa al microcontrolador elegido, para comprobar su comportamiento, llamado
Proteus.
NOTA: Para el correcto funcionamiento del programa, es necesario ejecutarlo como administra-
dor. Si se desea evitar la necesidad de abrir el programa con click derecho y la opción “Ejecutar como
Administrador”, se recomienda configurar el ejecutable para que siempre se abra con permisos de
administrador. Para ello, dirigirse a la carpeta donde se instaló Proteus (por defecto es C:/Archivos de

6
programa (x86)/Labcenter Electronics/Proteus 8 Professional), entrar a la carpeta “BIN”, hacer click
derecho en el archivo “PDS.EXE”, seleccionar “Propiedades”, y en la pestaña “Compatibilidad” dejar
activada la casilla “Ejecutar este programa como administrador”.

3.2. Creación de un proyecto


Una vez abierto el programa, seleccionar “New Project” en el menú “File” o en la pantalla de
bienvenida. En la ventana emergente (figura 14) escribir el nombre del proyecto y elegir su ubica-
ción. Presionar Next, y seleccionar “Create a schematic from the selected template.”, con la plantilla
“DEFAULT”. En la siguiente ventana seleccionar ‘Do not create a PCB layout” y presionar Next.
Seleccionar ‘No Firmware Project”, presionar Next y, por último, Finish.

Figura 14: Crear nuevo proyecto en Proteus.

3.3. Armado de circuitos


En la parte izquierda de la ventana principal donde dice “Devices” ( ), hacer click
en el botón P para seleccionar los componentes a simular. Se debe encontrar el microcontrolador a
utilizar dentro de la librería “Microprocessor ICs”. También puede usarse el buscador ubicado debajo
de “Keywords” en la parte superior izquierda. En la figura 15 se muestra el microcontrolador ya
encontrado utilizando el buscador. Hacer doble click sobre el nombre para añadirlo al proyecto. Su
nombre aparecerá en la lista debajo de “Devices” en la parte izquierda de la pantalla.

7
Figura 15: Búsqueda del microcontrolador 16F887

Cerrar la ventana con el botón OK, seleccionar el microcontrolador de la lista, y hacer click en
cualquier lugar del área de trabajo del simulador para instanciarlo. Para cargar el programa hacer doble
click sobre el bloque del microcontrolador, y dentro de la ventana de propiedades (figura 16) hacer
click en la carpeta al lado del campo correspondiente a “Program File”. Buscar el archivo .cof dentro
de la carpeta del proyecto de MPLAB X, específicamente en <proyecto>.X/dist/default/production.
Definir además la frecuencia a la que se desea que trabaje el microcontrolador dentro del campo
“Processor Clock Frequency”. En este caso se elegirá, como ejemplo, 20 MHz, que es la frecuencia
que se utiliza en este curso.

Figura 16: Ventana Propiedades del microcontrolador.

8
Componente Keyword
Pulsador BUTTON
Llave SW-SPDT
Resistencia 220Ω / 1KΩ MINRES220R / MINRES1K
Potenciómetro POT-HG
LED Verde/Rojo/Azul LED-GREEN / LED-RED / LED-BLUE
LCD LM016L
Puerto COM COMPIM

Tabla 1: Lista de los componentes más utilizados durante el cursado.

De la misma manera que con el microcontrolador, los restantes componentes como los botones,
LEDs y resistencias se encuentran en diversas librerías. En la tabla 1 se muestra una lista con los
componentes más utilizados y sus palabras clave para encontrarlo con el buscador.
Los componentes que representan las fuentes de tensión y tierra se encuentran en la sección
“Terminals” ubicado en la parte izquierda de la pantalla (ver figura 17). Hacer click en el ícono
y seleccionar la opción “POWER” para instanciar una fuente de tensión de 5V y “GROUND”
para colocar el plano de tierra. Se pueden además utilizar terminales genéricos para conectar vir-
tualmente dos pines. El terminal “DEFAULT” se conecta con cualquier otro terminal igual con la
misma etiqueta. La etiqueta se define haciendo doble click sobre el terminal y escribiendo un nom-
bre en el campo “String”. Por último, los instrumentos de medición se encuentran en la sección
“Instruments” identificado con el ícono (ver figura 17). Los más utilizados en este curso son el
osciloscopio (“OSCILLOSCOPE”), terminal serie (“VIRTUAL TERMINAL”), terminal SPI (“SPI
DEBUGGER”) y terminal I2C (“I2C DEBUGGER”).

Figura 17: Menús más utilizados.

9
Para volver a colocar componentes se debe seleccionar el botón “Components” (ver figura 17), y
para seleccionar, arrastrar o interactuar con componentes dentro de la simulación se debe seleccionar
la herramienta de selección, marcada como “Selection Tool” en la figura 17. Una vez completado el
circuito, el simulador estará listo para ser ejecutado (figura 18).

Figura 18: Circuito de ejemplo.

La simulación se pone en marcha con el botón ubicado en la parte inferior izquierda. Se puede
además ejecutar la simulación de manera pausada para analizar cada ejecución del microcontrolador.
Dicho modo se activa con la tecla . En éste último modo, se muestran de manera automática las
ventanas con el código fuente del microcontrolador (figura 19) y las variables declaradas (figura 20).

Figura 19: Código fuente del microcontrolador


Figura 20: Variables declaradas y/o utilizadas en
el programa.

10
Al presionar Stop estas ventanas se cierran automáticamente. Si se cierran de manera manual
durante la simulación, al volver a ejecutar la simulación, no se abrirán. Para volver a abrirlas, ejecutar
la simulación en modo pausado (con el botón ), dirijirse al menú “Debug” y, dentro del menú “PIC
CPU” (ubicado generalmente al fondo del menú) seleccionar “Source Code”, como se muestra en la
figura 21.

Figura 21: Mostrar ventana Source Code.

3.4. Debugging
En la parte superior derecha de la ventana del código fuente (figura 19) se encuentran los controles
del simulador. El primero, denominado “Run” pone en marcha la simulación hasta que se pause con
. Puede ejecutarse con la tecla F12. El segundo se denomina “Step Over” , y cuando se presione
ejecutará el simulación hasta que el programa llegue a la siguiente línea, independientemente de si
es una instrucción o una función. Puede ejecutarse además con la tecla F10. El siguiente es “Step
Into” , que ejecuta sólo la línea actual. Si línea que se ejecuta es la llamada a una función, el
programa se detendrá en la primera línea de dicha función. Se ejecuta también con la tecla F11. El
cuarto es “Step Out” , que ejecuta todas las líneas necesarias para salir de la función en la cual se
encuentra el programa en el momento que se presiona el botón o las teclas Alt+F11. El último es
“Toggle Breakpoint” , y se utiliza para introducir un Breakpoint en el programa. Un Breakpoint
es una señal de stop que se utiliza para indicarle al simulador que debe dejar de ejecutarse antes de
la línea seleccionada. Un breakpoint también se puede activar haciendo doble click en la línea de
programa correspondiente. Cualquiera de las anteriores ejecuciones (Run, Step Over, Step Into y Step
Out) se detienen si hay un breakpoint en las líneas que se ejecutan.
Si el programa tiene más de un archivo, se pueden seleccionar con el menú desplegable ubicado
en la parte superior de la ventana del código fuente (figura 19).

3.5. Monitores de comunicaciones seriales


Proteus cuenta con monitores que permiten observar los datos que se transmiten en las comuni-
caciones seriales, tanto sincrónicas (SPI e I2C) como asincrónicas (EUART). Todos los monitores se

11
encuentran en la sección “Instruments” (ver figura 17). Los que se analizan en este apunte son el de
SPI (SPI DEBUGGER), I2C (I2C DEBUGGER) y Serial (VIRTUAL TERMINAL).

3.5.1. SPI Debugger


En la tabla 2 se muestra el conexionado de los pines del monitor SPI que se deben hacer hacia
el microcontrolador 16F887. El pin SS del monitor puede ser conectado a cualquier pin del micro-
controlador (que esté configurado como salida) y es activado por nivel bajo. Es decir, que para que el
monitor reciba datos correctamente, este pin debe estar en cero lógico.

Pin SPI Debugger Pin 16F887


DIN SDO
DOUT SDI
SCK SCK
SS GPIO genérico
TRIG -

Tabla 2: Conexionado del monitor SPI.

NOTA: El pin “SS” del microcontrolador cumple la función de Slave Select únicamente cuando
se configura como esclavo.
En la figura 22 se muestran las configuraciones del monitor, que se pueden ver haciendo doble
click sobre el monitor, o click derecho y seleccionando “Edit Properties”.

Figura 22: Ventana de configuración del monitor SPI.

Los campos “Part Reference” y “Part Value” no se deben modificar. En el campo “SPI Mode” se
selecciona el modo con el cual va a funcionar dentro de la simulación: si sólo se desean observar los
datos transmitidos por el microcontrolador se debe colocar la opción “Monitor”; si se desea simular

12
una respuesta por parte del monitor hacia el microcontrolador, se debe seleccionar “Slave”. Los cam-
pos “Master clock frequency in Hz”, “SCK Idle state is” y “Sampling edge” son la frecuencia del
reloj, el nivel desactivado del reloj (es decir, el valor lógico del pin cuando el reloj esta desactivado)
y el flanco de reloj donde se va a tomar la muestra en el pin DIN, respectivamente. Las opciones que
se elijan deben ser coherentes con las configuraciones del microcontrolador.
En la figura 23 se muestra el monitor durante una simulación. En 1 se muestran los instantes
donde la comunicación comienza o termina (acompañados con un circulo verde o un circulo verde
tachado, respectivamente), cuando los datos llegan al monitor (acompañados con una flecha azul) y
cuando los datos son enviados desde el monitor (acompañados con una flecha celeste con o sin signo
de pregunta amarillo). En 2 se encuentra la cola del buffer de salida, es decir, los datos que que están a
la espera de ser enviados. En 3 se pueden enlistar secuencias de datos para enviar. Estas secuencias se
agregan al buffer haciendo doble click sobre las mismas. En 4 está el cuadro de texto para introducir
el número que se quiere enviar al buffer o almacenar en la lista de secuencias recién descrita. Los
números pueden ser hexadecimales, binarios o decimales. La base se identifica con un prefijo, que se
muestra en la tabla 3.
NOTA: Por defecto, la ventana es más pequeña que la que se ve en la figura, mostrando únicamen-
te la parte superior izquierda de la misma. Basta con agrandar la ventana con el mouse para obtener la
interfaz completa. En caso de cerrase la ventana, puede volver a abrirse haciendo click en “Terminal”
dentro del menú “Debug”.

Figura 23: Ventana del monitor SPI.

Base Prefijos Ejemplos


Hexadecimal 0x , h , $ 0xFF, hFF, $FF
Binario %,b %01101001, b01101001
Decimal d (opcional) 255, d255

Tabla 3: Tipos de números para enviar por SPI.

Los datos pueden enviarse de a un byte por vez o en conjunto (separados por espacios o comas).
Para agregarlos al buffer de salida o cola, luego de haberlos escrito en el cuadro de texto se debe
hacer click en “Queue”. Para almacenarlos en la lista de secuencias predefinidas se debe hacer click
en “Add”. Para eliminarlos de la lista, se debe seleccionar el elemento en la lista y hacer click en
“Delete”. Dichos botones están señalados en la figura 23 con el número 5.
Debido al principio de funcionamiento del protocolo SPI, los datos se enviarán desde el monitor
cuando llegue otro dato desde el microcontrolador, mostrándose ambos simultáneamente (el que se

13
envía al microcontrolador arriba y el que se recibe debajo). Cuando no hayan datos en el buffer de
salida, el monitor mostrará el símbolo “??” cada vez que se reciba un byte.
NOTA: Una vez que se haya cargado una secuencia de uno o más bytes a la cola del buffer de
salida, no pueden ser modificados. Cuando entran al buffer para ser enviados, desaparecen de la cola.

3.5.2. I2C Debugger


El conexionado del monitor I2C es directo, es decir, los pines SCL y SDA del monitor se conectan
al SCL y SDA del maestro, respectivamente. Es necesario además conectar resistencias pull-up en
ambas líneas para el correcto funcionamiento de la comunicación.
NOTA: Deben utilizarse los componentes “PULLUP” y no las “MINRES”.
En la figura 24 se muestra la ventana de configuración del monitor I2C. Es necesario configurar la
frecuencia de reloj coherente con la del maestro. Además, en la ventana se puede definir el código de
familia para poder comportarse como esclavo en lugar de monitor, como se explicará a continuación.
A modo de ejemplo, se muestra en la figura 24 la configuración de un esclavo a 100KHz con código
de familia 1001000 escrito en hexadecimal.

Figura 24: Ventana de configuración del monitor I2C.

El monitor I2C es idéntico al monitor SPI (figura 23), a diferencia que en el modo I2C se pueden
enviar los caracteres especiales del protocolo. En la tabla 4 se muestran los caracteres y sus respectivos
significados. Por otro lado, el monitor utiliza el símbolo “*” para denotar que se recibieron datos
parciales o cortados, y “?” para indicar la detección de niveles lógicos incorrectos.

3.5.2.1 Modo Monitor


Si el valor de “Address byte 1” y “Address byte 2” se dejan por defecto, el monitor podrá observar
todos los datos de la línea. Con esta configuración, no es capaz de controlar la línea SDA, por lo que si
no hay ningún componente I2C conectado a las líneas que sea capaz de responder, cuando el maestro
genere pulsos de clock en modo recepción, el monitor mostrará el número 0xFF, debido a que las
pull-up mantienen la línea en uno lógico.

14
Caracter Significado
S Condición de Start
Sr Condición de Start repetida
P Condición de Parada
N No Acknowledge
A Acknowledge

Tabla 4: Caracteres especiales utilizados en I2C.

3.5.2.2 Modo Esclavo


El código de familia puede ser de 7 bits o de 10 bits. En el primer caso se debe definir sólo el
campo “Address byte 1”, y para el segundo se define también el campo “Address byte 2”. La base del
código de familia puede ser decimal, hexadecimal o binaria, utilizando los prefijos mostrados en la
tabla 3. Si bien el bit menos significativo del código de familia no es relevante para la identificación,
es necesario escribirlo en “Address byte 1” (o 2) ya sea como 1 ó 0. Si se escribe un número de 7
bits no funcionará correctamente. Durante la simulación, el esclavo no tendrá en cuenta el bit menos
significativo, por lo que, por ejemplo, no hará distinción entre los códigos de familia 0x90 y 0x91.
Para interactuar con el esclavo, se debe enviar el código de familia correcto (indistintamente si
el bit menos significativo es 1 o 0), y el esclavo responderá con un ACK. De lo contrario, el esclavo
mostrará caracteres “?” hasta que finalice la comunicación y vuelva a comenzar una nueva. Si se
quiere escribir datos al esclavo, basta con enviarlos desde el maestro y, al ver en el monitor que el
mismo haya llegado, enviar desde el esclavo el Acknowledge o No Acknowledge ingresando la letra
“A” o “N” respectivamente (sin las comillas) en el cuadro de texto (señalado con el número 4 en la
figura 23) y presionando el botón “Queue” o la tecla Enter. En caso de querer leer, se debe llenar el
buffer de salida del esclavo con el o los datos que se quieren enviar hacia el maestro (separados por
espacios o comas). Cuando éste envíe el código de familia correcto e inicie la recepción de datos, el
esclavo comenzará a enviar los datos uno por uno luego de cada ACK. Si se recibe un NACK por
parte del maestro, el esclavo no enviará más datos hasta que se finalice la comunicación y se inicie
una nueva. Si el buffer de salida se vacía antes de recibir el NACK y está seleccionada la opción “Stop
on byffer empty?” en la ventana de configuración del monitor, se pausará la simulación.
NOTA: La explicación de los procedimientos de escritura y lectura asume la correcta implemen-
tación de las esperas de ACK, inicialización de recepción y envíos de ACK del maestro.

3.5.3. Virtual Terminal


Se utiliza para comunicaciones asincrónicas seriales y, por lo tanto, se conecta de manera “cru-
zada” al microcontrolador. Es decir, el pin TX del microcontrolador se conecta con el pin RX del
monitor y viceversa. Los pines RTS y CTS son señales de “Ready to Send” y “Clear to Send”, res-
pectivamente.
En la ventana de configuración (figura 25) se encuentran los parámetros de la comunicación serial.
Los que generalmente suelen modificarse son la velocidad (Baud Rate), el tamaño de la palabra de
datos (Data Bits), la paridad (Parity) y la cantidad de bits de stop (Stop Bits). Para las configuraciones
restantes se dejan los valores por defecto.

15
Figura 25: Ventana de configuración del monitor Serial.

Al iniciar la simulación se abrirá la ventana del monitor serial, como se muestra en la figura 26. De
no hacerlo, puede abrirse manualmente desde el menú “Debug” haciendo click en “Virtual Terminal”.
Todos los datos que lleguen al pin RX del monitor, serán mostrados en la ventana del monitor en
formato ASCII. Si los datos que llegan al monitor no se encuentran dentro del rango de los caracteres
visibles (letras, números u otros), no se visualizarán. De ser necesario visualizar números sin formato,
se puede configurar el monitor para que exprese cada caracter en base hexadecimal, haciendo click
derecho en cualquier parte de la ventana del monitor, y seleccionando “Hex Display Mode”. Nótese
que, de activar esta opción, todas letras y números codificados en ASCII también serán expresados en
hexadecimal.

Figura 26: Ventana del monitor Serial.

Para enviar datos desde del monitor se debe asegurar que esté el monitor seleccionado (el cursor
del monitor estará parpadeando) y presionar la tecla de la letra o número que se quiere enviar. Por
defecto, el monitor no muestra los datos enviados, aunque pueden mostrarse haciendo click derecho

16
dentro de la pantalla y activando la opción “Echo Typed Characters”. Además es posible enviar el
caracter “Carry Return” (0x0D) con la tecla “Enter” y “Backspace” (0x08) con la tecla “Retroceso”
ó “Backspace”. No es posible enviar datos que no sean en formato ASCII.

4. Programación del microcontrolador


4.1. Introducción
Una vez que el programa se ha simulado de manera exitosa, tiene altas probabilidades de fun-
cionar correctamente en hardware. Es tiempo entonces de cargarlo en el microcontrolador y probar
su funcionamiento en la placa. Hay varias maneras de descargar el programa al microcontrolador. A
continuación se explicarán dos: utilizando el software MPLAB X y utilizando el software dedicado
que viene con las placas programadoras PICkit2.

4.2. Preliminares
Antes de programar el microcontrolador es necesario definir los bits de configuración. MPLAB X
posee una herramienta para generar las instrucciones de configuración de una manera sencilla. Dentro
del menú “Production” seleccionar “Set Configuration Bits”. En la parte inferior de la pantalla deberá
aparecer una pestaña con todas las opciones del microcontrolador seleccionado para el proyecto en
particular. Los bits de configuración dependen del circuito donde se utilice el microcontrolador. Para
la placa de desarrollo de este curso, las configuraciones apropiadas se muestran en la figura 27.

Figura 27: Pestaña de los bits de configuración.

Una vez seleccionadas las configuraciones, se genera el código haciendo click en “Generate Sour-
ce Code to Output”. Se abrirá una pestaña con las líneas de código de los bits de configuración.
Seleccionar el texto y copiarlo al código fuente antes de la declaración de variables y luego de las
sentencias “#include”, como se muestra en la figura 28.

17
Figura 28: Código de los bits de configuración.

4.3. Programación con MPLAB X


Conectar el PICkit 2 a la computadora y dirigirse a las propiedades del proyecto. Se puede ha-
cer con click derecho en el título del proyecto en la parte izquierda de la pantalla y seleccionando
“Properties”, ó bien desplegando el menú y seleccionando “Customize”. En la ventana de
propiedades (figura 29), debe aparecer debajo del nombre “PICkit2” las letras “SN” seguidas de un
nombre o número. Seleccionarlo y dirigirse a la opción “PICkit 2” en la parte izquierda de la ventana.
Si aparece otra opción (como el caso de la figura 29) cerrar la ventana con Ok y volver a abrirla.
Dentro de la sección “PICkit 2” asegurarse de dejar sin activar la casilla “User program executive if
available” como se muestra en la figura 30. Al desactivar la casilla se evita que el MPLAB ejecute el
programa al terminar de programar.

18
Figura 29: Selección del programador.

Figura 30: Configuración del programador.

Con el microcontrolador conectado a la PICkit 2, hacer click en el botón , ubicado a la derecha

19
de los íconos . MPLAB X compilará nuevamente el código fuente, lo programará en el micro-
controlador y, cuando termine, deberá aparecer en la pestaña “Output” el mensaje que se muestra en la
figura 31. No es necesario realizar el proceso de compilación antes de programar el microcontrolador,
debido a que el proceso de programación incluye la compilación.

Figura 31: Configuración del programador.

El microcontrolador ya está programado y listo para usarse.

4.4. Programación en PICkit2 Software


Es posible programar el microcontrolador con el software oficial del programador en lugar de
MPLAB X. El programa, si bien ya no cuenta con soporte oficial de Microchip, puede encontrarse
fácilmente en internet.
Al abrirse, el programa intentará establecer comunicación con el PICkit. Si el cable está desco-
nectado, o si el PICkit ya fue emparejado con MPLAB X, no podrá comunicarse y mostrará una
advertencia (ver figura 32). En ese caso, conectar el cable o cerrar MPLAB X, según corresponda, y
reiniciar la comunicación con la opción “Check Communication” dentro del menú “Tools” (ver figura
33).
NOTA: Una vez que el microcontrolador se empareja con el software del PICkit, no será recono-
cido por MPLAB X.

20
Figura 32: Software oficial de PICkit 2 Figura 33: Reiniciar comunicación con PICkit2

Cuando el software tenga una conexión exitosa con el PICkit 2, se debe seleccionar el microcon-
trolador a utilizar en la lista de “Device” (ver figura 34). Como ya se dijo, en este curso se utiliza el
PIC16F887.
Luego, es necesario cargar el código fuente. Hacer click en el menú “File”, seleccionar “Import
Hex”, y buscar el archivo “.hex” dentro de la carpeta del proyecto de MPLAB X. Específicamente, el
archivo se encuentra en <proyecto>.X/dist/default/production. Deberá aparecer el mensaje “Hex file
succesfully imported”. Por último, hacer click en el botón “Write” y esperar a que finalice el proceso
con el mensaje “Programming Succesful” (ver figura 35). Antes de retirar el microcontrolador del
PICkit 2, asegurarse de que la opción “On” en la parte derecha del software, señalada en la figura 35,
esté desactivada.

21
Figura 35: Programación exitosa del archivo
Figura 34: PICkit 2 conectado.
“.hex”.

El microcontrolador ya está programado y listo para usarse.

5. Placa de desarrollo
La cátedra del curso cuenta con placas de desarrollo con los componentes básicos para el correc-
to funcionamiento del microcontrolador. En la figura 36 se muestra la placa de desarrollo con las
distintas secciones señaladas.
NOTA: Si bien la placa tiene un regulador de tensión, normalmente se le provee de tensión utili-
zando un cable USB conectado a cualquier computadora o cargador USB.

22
Figura 36: Placa de desarrollo.

En la figura 37 se muestra la distribución de pines para los conectores de los puertos A, E, C y


D. Todos los pines del puerto B están conectados a los LEDs y botones de la placa, y al conector del
LCD. Para utilizar cada pin del puerto B como entrada o salida se debe mover el interruptor hacia el
lado del botón o del LED respectivamente, como se muestra en la figura 38.

Figura 38: Selección de entrada/salida del puerto


B.
Figura 37: Distribución de pines de los puertos
A, E, C y D.

23

También podría gustarte