Sie sind auf Seite 1von 5

Tercer Congreso Virtual, Microcontroladores y sus Aplicaciones

Congreso 2014, Pgina 1



Interfase serie de adquisicin para la enseanza de la programacin
de microcontroladores.

Walter Gemin - Juana Fernndez - Miguel Revuelta - Ral Rivera - Roberto Hidalgo
Laboratorio de Procesos y Mediciones de Seales
Universidad Nacional de Mar del Plata
Argentina
Correo-e: geminw@hotmail.com
Abstract. En este trabajo se describe una interfase de adquisicin serie que es utilizada para la
enseanza de la programaxcin de microcontroladores. Este tipo de prctica se presenta como un
proyecto que los alumnos deben desarrollar, en un orden creciente de dificultad, aplicando los
conceptos tericos-prcticos que van incorporando en el curso. Finalizado el curso, los alumnos
habrn diseado un sistema de adquisicin con distintas funcionalidades, tales como, digitalizacin de
varios canales para la lectura de sensores, alarmas, controlador de un proceso industrial, o un
osciloscopio digital de dos canales. El proyecto comprende desde el punto de vista circuital la
construccin de una placa de adquisicin serie compatible RS232 y USB basada en un
microcontrolador PIC y el desarrollo del firmware basado en comandos. En este trabajo se presenta
la placa utilizada, el mtodo de carga y actualizacin del firmware y el intrprete de comandos.

1 Introduccin
En el trabajo descripto, el alumno debe armar y
poner en funcionamiento un sistema de adquisicin
compuesto de una interfase serie basada en un
microcontrolador PIC18F2550, que se conecta a
una computadora personal (PC) mediante puertos
de comunicacin RS232 o USB. Ref. [1], [2].
Adems el alumno debe desarrollar el firmware del
microcontrolador para cumplir los requisitos
propuestos en una gua de trabajos prcticos. El
firmware del microcontrolador se desarrolla en
lenguaje C, mediante el compilador cruzado PICC
para implementar la atencin a comandos similares
a los conocidos comandos AT por parte de la
interfase.
Al finalizar el curso, los alumnos disponen de una
placa de adquisicin verstil y econmica,
desarrollada ntegramente por ellos, de la cual
conocen en detalle el hardware y firmware que la
componen. Esto les permite alcanzar un
conocimiento avanzado y experiencias prcticas en
el diseo y configuracin de sistemas basados en
microcontroladores. Ref. [3]
2. Interfases de Entrada/Salida
Un aspecto de especial inters para el desarrollador
de circuitos basados en microcontroladores son las
interfases de entrada/salida. A travs de los pines
del chip asociados a las interfases de entrada/salida
el microcontrolador puede interactuar con otros
circuitos externos enviandoles seales de comando
o recibiendo estmulos correspondientes a variables
externas. Por lo general varios pines de datos son
bidireccionales, es decir pueden configurarse como
entradas o salidas. Cuando son entradas, pueden
adquirir datos interpretando el valor de voltaje
como un valor lgico 0 o 1, mientras que cuando
son salidas pueden entregar una seal binaria de
voltaje cuya magnitud depender del valor lgico 0
o 1. Monitoreando el valor de las entradas, el
microcontrolador puede responder a eventos
externos y realizar una cierta accin, como variar
las seales de salida de acuerdo al valor en las
entradas.
Las caractersticas de entrada/salida utilizadas son:
-Puertos paralelos como entradas o salidas digitlaes
y puerto series (UARTs, Universal Asynchronous
Receiver/Transmitter) y USB.
- Conversores Analogicos-Digitales (A/D, analog-
to-digital) para convertir un nivel de voltaje en un
cierto pin a un valor digital manipulable por el
programa del microcontrolador.
- Moduladores por Ancho de Pulso (PWM, Pulse-
Width Modulation): para generar ondas cuadradas
de frecuencia fija pero con ancho de pulso

2
modificable. La alta integracin de subsistemas que
componen un microcontrolador reduce el nmero
de chips, la cantidad de pistas y espacio que se
requerira en un circuito impreso si se
implementase un sistema equivalente usando chips
separados.
- Interrupciones: para responder a eventos externos,
los micrcontroladores cuentan con un recurso
conocido como interrupciones. Las interrupciones
son seales que se generan externa o internamente
al microcontrolador que detienen la ejecucin
normal del programa para ejecutar alguna subrutina
de respuesta al evento. Una vez ejecutada la
subrutina de interrupcin la ejecucin del programa
contina en el punto en que se encontraba antes de
generarse la interrupcin. Un ejemplo tpico es el
de un botn pulsador conectado a un pin de entrada.
Una vez pulsado, se genera una seal de
interrupcin que iniciar la ejecucin de la
subrutina de interrupcin, que por ejemplo podra
activar un pin de salida para encender un led.
En este Proyecto se utilizan una serie de
interrupciones que permiten configurar el
comportamiento del microcontrolador por eventos,
dado que mantiene ejecutando el lazo principal del
programa y atiende al puerto de entrada/salida
cuando este lo requiere. Las interrupciones
programadas en esta interfase son las de
finalizacin de una conversin A/D, al arribo de un
carcter al puerto serie o el cumplimiento de un
periodo de tiempo fijado por un timer o
temporizador.
3. Diagrama de la Interfase
La Fig. 1 muestra la distribucin de pines de
entrada/salida del microcontrolador. La Fig. 2
muestra el circuito de la placa propuesta. La Fig. 3
muestra un ejemplo de una placa armada por un
grupo de alumnos. En la ltima figura se observan
la distribucin de puertos utilizada, entradas
digitales B0 y B1, salidas digitales B2 y B3 y
entradas analgicas A0, A1 y A2.
Figura 1: Distribucin de pines del
microcontrolador
Fig. 2: Diagrama esquemtico de la placa
Figura 3: Imagen de la placa
4. Control Basado en Comandos
Los comandos AT son instrucciones codificadas
que conforman un lenguaje de comunicacin entre
una PC y un Terminal MODEM, como un
protocolo de comunicacin para configurarlo y
proporcionarle instrucciones, tales como marcar un
nmero de telfono.
Muchos otros dispositivos perifricos adoptaron
esta serie de comandos de comunicacin con
algunas adaptaciones tales como la telefona mvil
GSM.
Dentro del computador la comunicacin de la CPU
con cada interfase tambien adopta la modalidad de
comandos que asegura compatibilidad entre la
interfase y el sistema operativo,
independientemente del fabricante de la misma.
Los comandos consisten en una secuencia de
caracteres ASCII que sintetizan el significado de la
Tercer Congreso Virtual, Microcontroladores y sus Aplicaciones
Congreso 2014, Pgina 3

operacin que se quiere ejecutar. De esta
forma asignando un comando a cada operacin del
repertorio que soporta la interfase, se puede armar
un lenguaje de comunicacin que el
microcontrolador interpreta y ejecuta devolviendo
la informacin requerida o actuando sobre el
entorno.
El resultado de establecer un estandar para los
comandos, como el propuesto en este trabajo,
permite independizar el manejo de la interfase del
firmware de la misma, es decir que las placas de
todos los grupos de alumnos son compatibles entre
si. Esto le otorga a la programacin de las interfases
hardware y software, un nivel de abstraccin que
facilita el desarrollo de sus aplicaciones.
La Tabla 1, muestra el nombre, formato y
descripcin de los comandos ASCII de la interfase.
Tabla 1
Comando Formato Descripcin
NCAN NCAN2\n
Selecciona nmero
de canal analgico
entre 0 y 2.
RDAS RDAS\n
Lee el conversor de
aproximaciones
sucesivas.
Devuelve el resultado
por RS232 en formato
ASCII
WRDO WRDO1\n
Escribe las salidas
digitales.
El valor a escribir
puede variar entre 0 y
2
RDDI RDDI\n
Lee las entradas
digitales.
Los valores los enva
por RS232 en formato
carcter y puede
variar entre 0 y 2.
SCAN SCAN12\n
Escaneo automtico
de canales. 1: Canal
de Inicio, 2: Canal
fin.
INIL
INIL12345\n
INIL12345\n
Inicia la adquisicin
contnua. 12345
corresponde al valor
numrico en
milisegundos del
tiempo entre
muestras.
DETA DETA\n
Detiene la
adquisicin
contnua.
IDEN IDEN\n
Identificacin de la
placa.

5. Programacin de la Interfase
5.1 Proceso de Desarrollo
El proceso de desarrollo del firmware de un
microcontrolador se puede dividir en las siguientes
etapas principales. Ref [4]:
5.2 Desarrollo del software.
Consiste en escribir y compilar/ensamblar el
programa que determinar las acciones del
micrcontrolador y su funcionamiento. Existen
distintas maneras de desarrollar el programa,
dependiendo del lenguaje inicial que se utiliza para
escribir el programa:
Lenguaje Assembly - Lenguaje de
Mquina/Cdigo Objeto
(.asm) ensamblador (.hex, .o, .bin, .coff)
Lenguaje de Alto Nivel - Lenguaje Assembly -
Lenguaje de Mquina/Cdigo Objeto
(.c, .cpp) compilador (.asm) ensamblador
(.hex, .o, .bin, .coff)
La Fig. 4 muestra las dos alternativas tpicas que
tiene el desarrollador para generar el cdigo de
mquina que es entendido por el microcontrolador.
La programacin en compiladores cruzados C para
el desarrollo del firmware de los
microcontroladores propuesto en el desarrollo de
este proyecto, tiene la ventaja de ofrecer las
librerias avanzadas requeridas en los algoritmos de
clculo y comunicacin entre dispositivos
mediante USB, Ethernet, WIFI y Xbee.
Figura 4: Alternativas de programacin

4
5.3 Programacin del Microntrolador.
Este proceso corresponde a utilizar un programa en
la PC que toma el cdigo ensamblado (.hex, .o,
.bin, .coff) para el microcontrolador especfico, y lo
enva mediante algn puerto (serie, paralelo, USB,
etc.) a un dispositivo que lo escribe en la memoria
del mismo. Se acostumbra denominar programador
tanto al sofware como al hardware involucrado para
este propsito, lo cual puede prestarse a confusin.
El software programador a veces recibe tambin el
nombre de downloader, ya que su propsito es
descargar o transferir desde la PC al
microcontrolador el cdigo ensamblado. La Fig. 5
muestra las componentes involucradas en el
proceso de programacin.
5.4 Tcnicas Avanzadas: Programacin
Mediante Bootloaders.
El Bootloader es un pequeo programa que se
descarga en el microcontrolador y tiene por
finalidad simplificar el desarrollo de programas ya
que actuan como un programa residente que tiene
por finalidad obtener via el puerto serie el cdigo
del programa que se requiere ejecutar, grabandolo
en la memoria de programa. Para desarrollar
programas usando Bootloaders, por puerto serie
RS232, los pasos bsicos son:
Grabar el cdigo del Bootloader en la memoria
del microcontrolador empleando un programador
estndar.
Armar un circuito con un conversor serie RS-232
a TTL como el circuito integrado MAX232.
Compilar/ensamblar el cdigo de la aplicacin
desarrollado con algn compilador/ensamblador.
Colocar el circuito con el microcontrolador en
modo de comunicacin serie y descargar el cdigo
binario .hex usando el software Bootloader.
Figura 5: Proceso de grabacin

Reiniciar el circuito con el microcontrolador en
modo normal para que se ejecute el programa
descargado a travs del Bootloader.
La ventaja de utilizar esta tcnica es que permite
muy facilmente hacer actualizaciones del cdigo
firmware, sin necesidad de extraerlo del circuito
para colocarlo en un programador estndar. En este
mtodo el programador de microcontroladores se
emplea solo una vez para descargar el Bootloader al
microcontrolador.
6. Interprete de Comandos

En la Tabla 1, se observa que cada comando est
compuesto por una secuencia de cuatro caracteres
en mayscula que lo identifican, seguido desde cero
hasta cinco caracteres, que representan los
parmetros de la accin completa que deber
ejecutarse. Finaliza siempre en un caracter especial
(\n) de nueva lnea, que sirve para indicar el fn del
comando, cualquiera sea su extensin.

El cdigo que atiende los comandos utiliza la
interrupcin del puerto serie, que se ejecuta cuando
arriba un caracter. El Listado 1, muestra un sencillo
ejemplo de interprete, con las lneas de programa
mnimas que deber tener.

Basicamente se arma un vector (buffer[ ]) de n
elementos, donde se almacena la secuencia de
caracteres leidos con la instruccin getch(). Sobre
cada caracter recibido se verifica la presencia del
ASCII hexadecimal (0A) que representa el fin de
lnea (\n), con el cual se indica el final del
comando, concluyendo la lectura. Cuando esto
ltimo se cumple se analiza el contenido del vector
comparandolo con los comandos establecidos para
la interfase. Para esto se asigna a la variable
comando el nombre del comando que se quiere
evaluar, en este ejemplo NCAN, y se ejecuta la
funcin comparar_comandos() para evaluar si
ocurri este comando. Si es as se cumple en la
lnea if (comparar_comandos()==1) y se ejecuta
dentro del if el comando solicitado, si esto no
ocurre, se evalua otro, almacenandolo en la variable
comando y repitiendo el procedimiento descripto.
En este ejemplo el cuarto elemento del comando es
el nmero de canal que se desea seleccionar, para
esto se ejecuta la lnea canal[0]=buffer[4], luego
se convierte ese valor de ASCII a entero
i=atoi(canal) y por ltimo se selecciona el canal en
el multiplexor del microcontrolador mediante
set_adc_channel(i). La lnea siguiente
printf("Canal = %u\n\r",i), enva un mensaje de
retorno a la PC confirmando la ejecuacin del
comando solicitado.






Tercer Congreso Virtual, Microcontroladores y sus Aplicaciones
Congreso 2014, Pgina 5

Listado 1
#int_RDA
void RDA_isr(void)
{
int8 i;
char canal[1];
int16 dato;
buffer[next_in] = getc();
next_in++;
if (buffer[next_in-1]==0x0A)
{
next_in=0;
strcpy(comando,"NCAN");
if (comparar_comandos()==1)
{
canal[0]=buffer[4];
i=atoi(canal);
set_adc_channel(i);
printf("Canal = %u\n\r",i);
} // Fin del interprete de comando
}
} // Fin de la interrupcin

7. Conclusiones
Lo necesario para llevar adelante este diseo
requiere un mnimo de equipamiento y espacio
fsico y permite intensificar las experiencias
prcticas con microcontroladores, que relacionan
los problemas de ndole terico con situaciones
reales.
La modalidad de trabajo propuesta requiere una PC
con el software de desarrollo instalado compuesto
del compilador cruzado PICC y la interfase de
comunicacin Hyperterminal para prueba y
depuracin de comandos que ejecuta el
microcontrolador, adems del armado de un
circuito sencillo que conforma la interfase.
Las caractersticas de esta interfase y el entorno de
desarrollo utilizado, permite transformar
fcilmente el mismo repertorio de comandos de
serie RS2323 a USB, mediante la modalidad de
puerto serie virtual. Esto ltimo permite hacer
pruebas de funcionamiento, desde una aplicacin de
terminal (Hyperterminal) para cualquiera de los dos
tipos de comunicacin serie.
Referencias
[1] Antonio R. Tafarena, Teora y Diseos con
Microcontroladores PIC, UTN Mendoza.
2005.
[2] Microchip Data Sheet, PIC 18F2550.
[3] Angulo J.M.,: Microntroladores PIC. Diseo
prctico de aplicaciones. Mc Graw-Hill. 1999
[4] Sanchez Julio, Canton Maria: Microcontroler
Programming. Microchip PIC, CRC Press,
Taylor and Francis Group, 2007.













Copyright 2014. Walter A. Gemin: El autor delega a la Organizacin del Tercer Congreso Virtual de
Microcontroladores la licencia para reproducir este documento para los fines del Congreso ya sea que este
artculo se publique en el sitio web del congreso, en un CD o en un documento impreso de las ponencias del
Segundo Congreso Virtual de Microcontroladores.

Das könnte Ihnen auch gefallen