You are on page 1of 57

Manual de Programacin de Microcontroladores AVR

Contenido
Notacin utilizada......................................................................................................................................5 Prefacio......................................................................................................................................................6 Instalacin de AVRStudio.........................................................................................................................7 Instalacin de WinAVR...........................................................................................................................10 Lenguaje C para AVR..............................................................................................................................14 Programacin en AVRStudio..............................................................................................................17 Programacin en WinAVR.................................................................................................................20 Programacin del microcontrolador.........................................................................................................25 STK 200 y compatibles.......................................................................................................................25 STK 500..............................................................................................................................................26 AVRDragon.........................................................................................................................................27 Prctica 1: Descargar un programa..........................................................................................................31 Objetivo...............................................................................................................................................31 Resumen..............................................................................................................................................31 Introduccin.........................................................................................................................................32 Desarrollo............................................................................................................................................35 Prctica 2: Puertos Digitales....................................................................................................................37 Objetivo...............................................................................................................................................37 Resumen..............................................................................................................................................37 Introduccin.........................................................................................................................................38 Desarrollo............................................................................................................................................38 Prctica 3: Manejo de un LCD.................................................................................................................39 Objetivo...............................................................................................................................................39 Resumen..............................................................................................................................................39 Introduccin.........................................................................................................................................40 Desarrollo............................................................................................................................................44 Prctica 4. Interrupciones Externas..........................................................................................................45 Objetivo...............................................................................................................................................45 Resumen..............................................................................................................................................45 Introduccin.........................................................................................................................................46 Desarrollo............................................................................................................................................48 Prctica 5: Teclado Matricial...................................................................................................................49 Objetivo...............................................................................................................................................49 Resumen..............................................................................................................................................49 Introduccin.........................................................................................................................................49 Desarrollo............................................................................................................................................49 Prctica 6: Calculadora Bsica.................................................................................................................50 Objetivo...............................................................................................................................................50 Resumen..............................................................................................................................................50 Introduccin.........................................................................................................................................50 Prctica : Comunicacin Serial Asncrona...............................................................................................51 Objetivo...............................................................................................................................................51 Resumen..............................................................................................................................................51 Introduccin.........................................................................................................................................52

Desarrollo............................................................................................................................................53 Prctica : Conversor Anlogo a Digital...................................................................................................54 Objetivo...............................................................................................................................................54 Resumen..............................................................................................................................................54 Introduccin.........................................................................................................................................55 Bibliografa..............................................................................................................................................57

ndice de Figuras
Figura 1: Inicio de la instalacin del AVRStudio......................................................................................7 Figura 2: Licencia de uso de AVRStudio..................................................................................................7 Figura 3: Directorio de instalacin.............................................................................................................7 Figura 4: Driver para AVRDragon............................................................................................................7 Figura 5: Inicia proceso de Instalacin......................................................................................................8 Figura 6: Copia de archivos de AVRStudio...............................................................................................8 Figura 7: Fin de la copia de archivo...........................................................................................................8 Figura 8: Instalacin completa del AVRStudio.........................................................................................8 Figura 9: Pgina web de WinAVR en sourceforge.net............................................................................10 Figura 10: Instalador de WinAVR...........................................................................................................10 Figura 11: Elegir idioma de la instalacin...............................................................................................10 Figura 12: Inicio de la instalcin de WinAVR.........................................................................................10 Figura 13: Acuerdo de licencia de WinAVR...........................................................................................11 Figura 14: Elegir carpeta destino de la instalacin..................................................................................11 Figura 15: Configuracin de la instalacin de WinAVR.........................................................................12 Figura 16: Vista detallada del proceso de instalacin de WinAVR.........................................................12 Figura 17: Instalacin finalizada..............................................................................................................13 Figura 18: Manual de Usuario de WinAVR............................................................................................13 Figura 19: Esquema del uso de bibliotecas de usuario............................................................................16 Figura 20: Ventana de Bienvenida AVRStudio.......................................................................................17 Figura 21: Tipo de proyecto nuevo..........................................................................................................17 Figura 22: Seleccin de dispositivo y plataforma....................................................................................18 Figura 23: Aspecto de un proyecto iniciado en AVRStudio....................................................................18 Figura 24: Toolbar STK500.....................................................................................................................19 Figura 25: Seleccin del programador en AVRStudio............................................................................19 Figura 26: Toolbar AVRGCCPLUGIN...................................................................................................19 Figura 27: Icono de la aplicacin Mfile...................................................................................................20 Figura 28: Eleccin del microcontrolador en el MFile............................................................................20 Figura 29: Eleccin del programador en el Mfile....................................................................................21 Figura 30: Eleccin del puerto de comunicacin con la tarjeta programadora........................................21 Figura 31: Icono de la aplicacin Programmers Notepad........................................................................22 Figura 32: Creacin de un proyecto en WinAVR....................................................................................22 Figura 33: Agregar archivos al proyecto en WinAVR.............................................................................23 Figura 34: Aspecto general de un proyecto iniciado en WinAVR...........................................................23 Figura 35: Compilacin de proyecto en WinAVR...................................................................................24 Figura 36: Programacin del microcontrolador desde WinAVR.............................................................24 Figura 37: STK500 con microcontrolador y conectores..........................................................................26 Figura 38: Vista superior de la tarjeta AVRDragon.................................................................................27 Figura 39: Terminales de programacin y alimentacin..........................................................................27 Figura 40: Diagrama Esquemtico Programadora usada con AVRDragon.............................................28 Figura 41: Cable programador por ISP para AVRDragon.......................................................................29 Figura 42: Protoboard y cable programador ISP.....................................................................................29 Figura 43: AVRDragon encontrada por Windows XP............................................................................32 Figura 44: Asistente de instalacin de AVRDragon................................................................................32 Figura 45: Busqueda de controladores para AVRDragon........................................................................33 Figura 46: Controladores instalados exitosamente..................................................................................33 Figura 47: AVRDragon aparece en el administrador de dispositivos......................................................34

Figura 48: Secuencia para descargar un programa al microcontrolador..................................................36 Figura 49: Registros del puerto digital A.................................................................................................38 Figura 50: LCD 2x16 ordinario...............................................................................................................40 Figura 51: Esquema de la estructura interna de un LCD (cortesa de http://es.wikipedia.org/)..............41 Figura 52: Mapa de memoria para LCD de una lnea..............................................................................42 Figura 53: Mapa de memoria para LCD de dos lneas.............................................................................42 Figura 54: Mapa de memoria para LCD de cuatro lneas........................................................................43 Figura 55: Definiciones de configuracin para LCD...............................................................................43 Figura 56: Configuraciones generales para LCD.....................................................................................44 Figura 57: Registros de configuracin de las interrupciones externas.....................................................46 Figura 58: Tipos de sensibilidad de la INT0............................................................................................46 Figura 59: Tipos de sensibilidad de la INT1............................................................................................47 Figura 60: Fuentes de interrupcin para el ATMega32...........................................................................47 Figura 61: Teclado Matricial 4x4.............................................................................................................49 Figura 62: Registro de configuracin de velocidad de la USART...........................................................52 Figura 63: Registro de estado de la USART............................................................................................52 Figura 64: Registro general de configuracin la USART........................................................................52 Figura 65: Registro particular de configuracin la USART....................................................................53 Figura 66: Registro de seleccin de canal del ADC................................................................................55 Figura 67: Registro de configuracin general del ADC...........................................................................55 Figura 68: Registro de configuracin de disparo del ADC......................................................................55 Figura 69: Fuentes de disparo automtico del ADC................................................................................56

Notacin utilizada
[Aceptar] [1] {Ventana} Inicio>Programas Programa/Archivo #include<avr/io.h> Nombre de botn. Texto en Itlicas entre corchetes cuadrados tipografa Times New Roman. Referencia Bibliogrfica. Nmero entre corchetes cuadrados tipografa Times New Roman. Ttulo o nombre de ventaja. Texto entre llaves tipografa Times New Roman Ruta o nombre de opcin en men. Tipografa Courier 10 puntos. Nombre de programa o de archivo. Texto entre comillas en tipografa Times New Roman. Segmento de cdigo, terminal o salida de programa. Texto en Itlicas en tipografa FreeMono

Prefacio
Propsito de este manual. Gua bsica para la programacin de micros AVR de ATMEL Uso de diversas tarjetas programadoras Cmo iniciar un proyecto en WinAVR Cmo iniciar un proyecto en AVRstudio Aspectos avanzados de programacin Como programar micros en Linux

Los programas que acompaan este documento se entregan tal cual sin ninguna garanta de ninguna ndole. El autor no se responsabiliza explicita o implcitamente de mal funcionamiento, prdida de datos, y/o cualquier dao que pueda sufrir directa o indirectamente por el uso de estos programas.

Instalacin de AVRStudio
Recomendamos instalar primero el AVRStudio, antes de realizar la instalacin del WinAVR, pues para el caso de la AVRDragon, es el AVRStudio quien instala los manejadores para esta tarjeta. Primero, deber descargar el instalador desde el sitio web del fabricante localizado en:
http://www.atmel.com/forms/software_download.asp?family_id=607&fn=dl_AvrStudio4Setup.exe.

Tambin encontrar actualizaciones como la SP1 y la SP2, las cuales es recomendable que tambin descargue. Para poder obtener el software, Atmel exige el llenado de un formulario donde recaba datos generales. Una vez que ha obtenido el programa de instalacin, deber hacer doble clic sobre el instalador y, dependiendo de las configuraciones de seguridad de su sistema operativo, le advertir acerca de los riesgos de ejecutar software de desconocidos. Podr observar que comienza a desempaquetar el software y al final obtendr una ventana como la que se muestra en la figura 1.

Figura 1: Inicio de la instalacin del AVRStudio

Figura 2: Licencia de uso de AVRStudio

Deberemos pulsar sobre el botn [Next], y abrir una ventana como se ve en la figura 2. En esta ventana es necesario aceptar los trminos de la licencia marcando la opcin I accept the terms of the license agreement. Una vez marcada esta opcin deber pulsar el botn [Next].

Figura 3: Directorio de instalacin

Figura 4: Driver para AVRDragon

Ahora nos muestra una ventana que nos pide seleccionar la carpeta en donde se almacenarn los archivos de la instalacin de AVRStudio, podemos utilizar la carpeta que se sugiere por omisin, o bien elegir otra pulsando sobre el botn [Change...], que aparece en la esquina superior derecha. Todo esto se aprecia en la figura 3. Una vez que hemos seleccionado la carpeta destino, pulsar el botn [Next] y nos remitir a la ventana de la figura 4. En esta nueva ventana, se nos permite elegir entre instalar/actualizar o no el manejador para la tarjeta AVRDragon. Recomendamos dejar siempre seleccionada esta caracterstica para mantener actualizado el firmware de la AVRDragon. Pulsamos sobre el botn [Next] para continuar el proceso de instalacin. El programa de instalacin nos pide confirmacin para guardar los archivos necesarios en nuestro equipo, como se muestra en la figura 5. Pulsando sobre el botn [Install], inicia el proceso de instalacin propiamente dicho, mostrando una barra de progreso de la copia de archivos, tal como se puede apreciar en la figura b). En esta parte del proceso se instalan los driver para la AVRDragon, por lo que aparecer brevemente una ventana de msdos.

Figura 5: Inicia proceso de Instalacin

Figura 6: Copia de archivos de AVRStudio

En la figura 7 se puede apreciar el momento en que la copia de archivos de instalacin de AVRStudio ha concluido satisfactoriamente. Y en la figura 8 deber pulsar el botn [Finish] para concluir.

Figura 7: Fin de la copia de archivo

Figura 8: Instalacin completa del AVRStudio

Ahora en el men inicio se ha creado una nueva categora de programas llamada {Atmel AVR Tools}, y dentro de esta se encuentra el acceso directo hacia el AVRStudio. Este es un entorno de desarrollo integrado (IDE, por sus siglas en ingls) con una extensa lista de dispositivos soportados. Y cada vez que hay un mejora o se agregan nuevos dispositivos, se lanza un Service Pack (SP), al momento de escribir esto existen dos SP en la pgina de Atmel. El proceso de instalacin de estos SP no presenta mayor problema de ir pulsando sobre los botones de continuar o instalar, segn sea el caso, y se instalarn en la carpeta correspondiente a la instalacin del AVRStudio. Para una gua completa del uso de AVRStudio, recomendamos consulte [1].

Instalacin de WinAVR
Antes de proceder a la instalacin de WinAVR, se recomienda que el usuario inicie la sesin utilizando una cuenta con privilegios de administrador. Esto es debido a que el programa instalador requiere agregar algunas variables de entorno. Descargar el archivo WinAVR-20100110-install.exe desde la pgina web del proyecto localizada en http://sourceforge.net/projects/winavr/files/ y guardarlo en la carpeta de su preferencia, como se aprecia en las figuras 9 y 10.

Figura 9: Pgina web de WinAVR en sourceforge.net

Figura 10: Instalador de WinAVR

El archivo completo llega a pesar 28.8 MB, por lo que si se descarga desde internet en una conexin lenta puede llegar a demorar demasiado. Lo recomendable en estos casos es, o utilizar una conexin rpida, o pedirlo de alguien que ya lo tenga. Haciendo doble clic sobre el archivo ejecutable (extensin .EXE), inicia el proceso de instalacin. Elegir idioma y pulsar sobre el botn [Siguiente], como se ve en la figura 11 y 12.

Figura 11: Elegir idioma de la instalacin

Figura 12: Inicio de la instalcin de WinAVR

A continuacin se muestra en la figura 13 el acuerdo de licencia, GNU GPL. Para poder continuar se requiere aceptar las condiciones pulsando sobre el botn [Acepto].

Figura 13: Acuerdo de licencia de WinAVR Entre otra cosas, una licencia de tipo GNU GPL proporciona al usuario final el cdigo fuente de la aplicacin, as como la facilidad de copiar, modificar, distribuir, etc. sin cargo extra. La nica condicin es que se mantenga el mismo tipo de licencia y se den los crditos al autor original. Para ms detalles puedes consultar http://www.gnu.org/home.es.html o bien http://es.wikipedia.org/wiki/GPL. Posteriormente, y tal como se ilustra en la figura 14, deber indicar el directorio en donde se instalar la aplicacin.

Figura 14: Elegir carpeta destino de la instalacin

Una vez seleccionado el directorio en donde se desea instalar el programa, aparece una ventana para personalizar la instalacin, como se muestra en la figura 15. Recomendamos dejar las opciones seleccionadas tal como aparecen por defecto y pulsar en el botn [Instalar].

Figura 15: Configuracin de la instalacin de WinAVR El proceso de instalacin inicia. Se copian los archivos necesarios en el directorio seleccionado previamente. Para ver los detalles de la instalacin puede pulsar en el botn [Ver detalles] y se desplegar una pantalla como la que se muestra en la figura 16.

Figura 16: Vista detallada del proceso de instalacin de WinAVR

Tan pronto como finaliza la instalacin, una ventana indicando que el proceso se ha completado aparece, vase figura 17. Cuando se pulsa sobre el botn [Terminar], el programa de instalacin lanza la aplicacin del explorador de internet que se tenga por omisin, mostrando una pgina web con el WinAVR User Manual, como se muestra en la figura 18.

Figura 17: Instalacin finalizada

Figura 18: Manual de Usuario de WinAVR

En este punto, se puede cerrar la ventana del navegador web. El usuario notar que en el escritorio se crean una serie de iconos. Puede borrarlos, si gusta, y el funcionamiento del programa no se afecta.

Lenguaje C para AVR


Esta seccin no tienen la intencin de repasar los detalles bsicos del lenguaje C, ni sus estructuras de control, de decisin, tipos y definicin de variables, funciones, apuntadores y dems temas sobre los que existe abundante literatura. Para una revisin detallada de estos temas bsicos de la programacin en lenguaje C recomendamos [2],[3] y [4]. La intencin de esta seccin es proponer una estructura bsica para la elaboracin de programas en C para microcontroladores AVR, misma que se muestra en el siguiente esquema: Seccin de bibliotecas Necesaria para compilar a un AVR. Slo si se utilizan interrupciones. Para utilizarse con bibliotecas del usuario. Seccin de variables globales Conjunto de variables globales. Se siguen las reglas de ANSI C, tipo de variable, nombre de variable y ,opcionalmente, valor inicial. Seccin prototipos de funciones El prototipo de una funcin de usuario, es una descripcin breve del tipo de datos que devuelve, el nombre de la funcin y los tipos de datos de los parmetros que recibe. Seccin vectores de interrupcin Cuando se utilizan interrupciones, en esta parte se escriben las rutinas que atienden a tales interrupciones. El esquema se muestra entre llaves {}; consiste de la palabra reservada ISR, entre parentesis () el nombre del vector u origen de la interrupcin que se va a atender, por ejemplo, ADC, seguido de la palabra reservada _vect. La tabla completa de interrupciones se puede consultar en avr-libc-user-manual, seccin 5.25. Seccin funcin principal o main A partir de esta funcin es que se comienza a ejecutar nuestro programa. Dentro de esta funcin pueden existir variables, denominadas locales, y llamadas a funciones creadas por el usuario.

#include <avr/io.h> #include<avr/interrupt.h> #include <ubicacin>/my_biblioteca.h

char aux; tipo nombre=valor;

void config_int(void); tipo nombreFuncion(tipo,tipo....tipo);

ISR(ADC_vect){ //Variables locales {tipo nombre=valor;} //El codigo va aqu } ISR(ORIGEN_vect)

int main(void){ //Variables locales tipo nombre=valor; //Funcin definida por el ususario... config_int();

//Cuando se usan interrupcioines... sei(); //Obligado si funcin main es de tipo int return 0; }//Fin de la funcin main.

Cuando se van a utilizar interrupciones, se requiere habilitar la caracterstica de atencin a la interrupcin. Para esto, es la linea sei(). Para cerrar este bloque, se escribe la lnea return 0, que indica que el bloque se ejecuta sin errores. Esta lnea es obligatoria cada vez que la funcin main se defina como de tipo int. Seccin funciones del usuario Al final del programa, se definen y detallan las funciones del usuario. En general, se debe indicar el tipo de datos que devuelve la funcin, el nombre de la funcin, y entre parntesis, los tipos y nombres de las variables que se pasan como parmetros. No olvidar que si el tipo de la funcin es distinto a void, se debe de cerrar la funcin con una instruccin de return.

void config_int(void){ //Cdigo de la funcin de usuario, en este caso //no hay instruccin de return 0, debido a que la //funcin es de tipo void } tipo nombre(tipo var1,tipo var2....tipo varX){ //Codigo del ususario }

El programa escrito bajo este este esquema, se guarda con extensin .c. Se distingue de aquellos con extensin .h por tener una funcin llamada main. Para el caso en que se desee generar una biblioteca, o coleccin de funciones definidas por el usuario, se sigue el esquema antes descrito, con la excepcin de que no debe existir ninguna funcin con el nombre main. Este archivo se guarda con una extensin .h. Para hacer uso de una biblioteca de usuario, se agrega en la seccin de bibliotecas del programa principal. La sintaxis es: #include unidad:\ruta\archivo.h y con esto desde el programa principal se pueden invocar las funciones almacenadas en la biblioteca del usuario Una precaucin adicional es la de asegurarse que las variables globales que se definan en el programa principal, el que invoca la biblioteca del usuario y contiene una funcin main, no utilice variables globales con el mismo nombre, o duplicadas. Otra alternativa bastante comn es que la seccin de prototipos de funciones definidas por el usuario se almacena en un archivo tipo .h, y la programacin de cada una de estas funciones se almacena en otro archivo con extensin .c, de esta forma tendramos un archivo de encabezados, extensin .h, y otro archivo de cdigos, el de extensin .c. El archivo de cdigos incluira al archivo de encabezados y el archivo main.c incluira al archivo de cdigos. Para clarificar este esquema, vea la figura 19.

tipo func1(void); tipo func2(void); biblioteca.h #include biblioteca.h tipo func1(void){ //Hacer algo... } tipo func2(void){ //Hacer algo... }

#include <avr/io.h> #include biblioteca.c #include others.c int main(void){ //Hacer algo func1(); func2(); return 0; }

main.c biblioteca.c Figura 19: Esquema del uso de bibliotecas de usuario

Ejercicios
Relacione ambas columnas. Indique a qu seccin, de la columna de la derecha, corresponde cada una de las sentencias mostradas en la columna izquierda. ( ) char ordena(char,char); ( ) #include num_primo.h (3) Seccin de Prototipos de Funciones ( ) int main(void); ( ) char algo(char x){//do something... } (6) Seccin Funciones del Usuario ( ) ISR(ADC_vect){//do something... } ( ) sei(); ( ) #include <avr/interrupt.h> ( ) return 0; ( ) char auxiliar=0; //Fuera de una funcin (4) Seccin Vectores de Interrupcin (5) Seccin Funcin Principal (1) Seccin de Bibliotecas (2) Seccin de Variables Globales

Programacin en AVRStudio
Puede iniciarse la aplicacin desde la ruta men inicio > Programas > Atmel AVR Tools>AVRStudio4, y aparecer, la primera vez, una ventana de bienvenida. Puede elegir seguir vindola cada vez que inicie la aplicacin o deshabilitarla quitando la marca de la casilla que se encuentra en la parte inferior izquierda y que dice Show dialog at startup. Si usted puede ver la ventana de bienvenida de la figura 20, pulse sobre el botn [New Project] para iniciar un nuevo proyecto o el botn [Open] en caso de que ya exista un proyecto y desee abrirlo. Si usted desmarc la casilla de mostrar el dilogo de bienvenida al iniciar, y desea volver a activarla, lo puede hacer desde el men Project>ProjectWizard de la barra de AVRStudio.

Figura 20: Ventana de Bienvenida AVRStudio Al pulsar el botn que inicia un nuevo proyecto, se lanza la aplicacin de asistente de creacin de proyecto. Este asistente se muestra en la figura 21, y tambin puede ser iniciado desde Project> NewProject en la barra de men de AVRStudio.

Figura 21: Tipo de proyecto nuevo

En esta nueva ventana, la de la figura 21, deber elegir la opcin AVR GCC, la que aparece con un icono de un u, aunque ms parecido a una vaca o toro. A continuacin, deber indicar un nombre adecuado y descriptivo para su proyecto y escribirlo en el cuadro de texto del lado superior derecho justo debajo de la etiqueta Project name. Marque las opciones Create initial file y la opcin Create folder. Por omisin el asistente nombra el archivo inicial igual a como se denomino el proyecto. Ahora, deber elegir la unidad y la ubicacin en donde se crear la carpeta del proyecto. Esto lo hace por medio del botn cuadrado localizado al lado derecho del cuadro de texto etiquetado como Location. Al pulsar sobre este botn se abrir una ventana de navegacin que le permitir elegir el punto de creacin de la carpeta de proyecto. De un clic sobre el botn [Next] para continuar. En la figura 22 se muestra la ventana en la que deber elegir el microcontrolador para el que va destinada la aplicacin y la plataforma que usar para realizar la depuracin de la aplicacin. Si no cuenta con ninguna plataforma de depuracin de las listadas, puede elegir la opcin de AVR Simulator. Una vez que ha acabado esta etapa de configuracin, pulse sobre el botn [Finish], para terminar.

Figura 22: Seleccin de dispositivo y plataforma En la figura 23 se muestra el aspecto final al trmino de la configuracin del proyecto.

Figura 23: Aspecto de un proyecto iniciado en AVRStudio

El botn con el texto Con que aparece en la figura 24 y que pertenece a la barra de herramientas de la STK500, le permite elegir el programador a emplear, el segundo botn, lanza un cuadro de dilogo con opciones de configuracin del dispositivo microcontrolador.

Figura 24: Toolbar STK500 Al pulsar sobre el primer botn se abre el cuadro de dilogo que se muestra en la figura 25. Aqu deber elegir la plataforma de programacin a utilizar para grabar sus cdigos en el microcontrolador.

Figura 25: Seleccin del programador en AVRStudio Una vez que ha elegido un programador, deber pulsar el botn superior derecho llamado [Connect...] para verificar que se encuentra conectado y encendido. Si no existen errores este ser su programador por omisin. Si desea cambiar el modelo de programador empleado, repita el proceso de seleccin de programador. Para compilar su proyecto y descargarlo al microcontrolador seleccionado, puede usar los dos primeros botones de la barra AVRGCCPLUGIN que se muestra en la figura 26.

Figura 26: Toolbar AVRGCCPLUGIN El primer botn realiza la compilacin del proyecto activo. El segundo, compila el proyecto activo y en caso de no existir errores, inicia el proceso de programacin del dispositivo, por lo que deber tener conectada y encendida la tarjeta programadora. El tercer botn compila nicamente el archivo activo, y los dos ltimos estn asociados con aspecto particulares de la configuracin del proyecto.

Programacin en WinAVR
WinAVR es un entorno de desarrollo integrado (IDE, por sus siglas en ingls), que cuenta con diversas herramientas de software para la generacin, depuracin y programacin de aplicaciones destinadas a los microcontroladores AVR de Atmel. Para generar una aplicacin, seguir estos pasos: 1. Crear una carpeta. En esta carpeta se almacenarn los archivos de la aplicacin. 2. En el escritorio aparece un icono similar a una Lmpara de Aladino, figura 20. Hacer doble clic; o bien ir al men inicio>Programas>WinAvr y seleccionar Mfile[WinAvr]

Figura 27: Icono de la aplicacin Mfile 3. A continuacin se debe elegir el tipo de microcontrolador que se va a programar. Esto se hace desde el men Makefile, y siguiendo la ruta que se muestra en la figura 1.9.

Figura 28: Eleccin del microcontrolador en el MFile

4. Una vez seleccionado el microcontrolador, se debe elegir el programador. Para esto se vuelve a pulsar sobre el men Makefile y se elige del submen desplegable como se muestra en la figura 1.10. Para aquellos que usan programador por el puerto paralelo, debern elegir STK200.

Figura 29: Eleccin del programador en el Mfile 5. Ahora ser necesario especificar el puerto de comunicacin en donde se conecta el programador. Para el caso de las STK500, se elige un puerto serial; las tarjetas compatibles con STK200 utilizan, tpicamente el lpt1, o puerto paralelo 1.

Figura 30: Eleccin del puerto de comunicacin con la tarjeta programadora

Si se utiliza una AVRDragon para descargar el programa, esta seccin de elegir el programador y el puerto de programacin se puede dejar tal como vienen por defecto y continuar, puesto que no es posible, hasta el momento de escribir este documento, descargar el programa desde WinAVR utilizando una AVRDragon conectada a un puerto USB. Hasta aqu la configuracin bsica. Existen otras opciones que, en un primer acercamiento no ser necesario modificar. 6. Se guarda este archivo en la carpeta creada en el paso 1. Para guardar este archivo de configuracin, utilice el men File > Save As... Asegrese de que se graba SIN extensin, simplemente como Makefile. 7. Ahora, utilice la aplicacin Programmers Notepad[WinAVR]. Desde el icono en el escritorio o desde la ruta inicio> Programas > WinAvr y seleccionar Programmers Notepad[WinAvr].

Figura 31: Icono de la aplicacin Programmers Notepad 8. Lo primero que debe hacer es ir al men File>New>Project y dar un nombre a su proyecto, y elegir la carpeta creada en el paso 1, pulsando sobre el botn lateral derecho [...]. Este botn aparece encerrado en color rojo en la figura 1.13, y al ser pulsado despliega una ventana tipo explorador de archivos. En esta se busca la carpeta creada en el paso 1 y se pulsa sobre el botn [Aceptar], y posteriormente sobre el botn [OK] de la ventana {New Project...} 9. En este momento en nuestra carpeta deben existir dos archivos, uno llamado Makefile y otro con extensin *.pnproj. Esta extensin indica que se trata de un archivo generado por el Programmers Notepad y es de tipo PROJect o proyecto.

Figura 32: Creacin de un proyecto en WinAVR

10. El siguiente paso es guardar la hoja en blanco del lado derecho que lleva por ttulo {New}, con el nombre main.c. No olvidar la extensin, ni elegir otro nombre, ni usar maysculas. Debe ser main.c 11. Falta asociar a nuestro proyecto un archivo de inicio. Para lograrlo se da clic derecho o botn secundario del mouse, sobre el nombre de nuestro proyecto y se elige la opcin AddFiles, como se muestra en la figura 1.14. Aparece una ventana de exploracin en la que debe localizar el archivo main.c y pulsar dos veces sobre l.

Figura 33: Agregar archivos al proyecto en WinAVR 12. Una vez guardado el archivo main.c, se puede comenzar a escribir la aplicacin. Un ejemplo es el que se muestra en la figura 1.15. En el lado izquierdo est la ventana titulada {Projects}. En esta aparece el nombre de nuestro proyecto y los archivos que lo componen. La ventana lateral derecha es la del archivo main.c y es en esta en donde se escribe la aplicacin. Las dos ventanas inferiores, {Find Results} y {Output}, sirven para depuracin y como salida para el proceso de compilacin y programacin, respectivamente.

Figura 34: Aspecto general de un proyecto iniciado en WinAVR

13. Una vez que se escribe el cdigo para la aplicacin, hay que compilarlo. Esto se hace desde el men Tools>MakeAll, como se muestra en la figura 1.16. El usuario notar que en la ventana llamada Output aparecer informacin sobre el proceso de compilacin. Si no hay errores marcar como salida: > Process Exit Code: 0 > Time Taken: xx:xx

Figura 35: Compilacin de proyecto en WinAVR 14. Una vez compilada la aplicacin, se puede descargar al microcontrolador. Para lograrlo se utiliza Tools>Program, como se aprecia en la figura 1.17. Nuevamente, la ventana {Output} proporciona informacin del proceso de programacin. Esta opcin no aplica para programar por medio de la AVRDragon.

Figura 36: Programacin del microcontrolador desde WinAVR Hasta este momento hemos descrito el entorno de desarrollo WinAVR. En prximas secciones describiremos a detalle el proceso de escritura de programas en C para AVR y la programacin del microcontrolador utilizando la STK500, la AVRDragon y una tarjeta compatible con STK200.

Programacin del microcontrolador


En esta seccin describiremos el proceso para descargar un programa hacia un microcontrolador AVR utilizando alguna de las tarjetas existentes para tal fin. La primera que se describe, una STK200, utiliza el puerto paralelo de una computadora personal. La STK500, que es un modelo ms reciente que la anterior, emplea el puerto serial para comunicarse y es una de las ms completas y recomendables para el desarrollo y depuracin de aplicaciones. La ltima y no menos importante, es la AVRDragon que se distingue por utilizar el puerto USB para comunicarse. Es responsabilidad del usuario verificar que su equipo de computo cuente con el puerto o los puertos necesarios para cada una de las tarjetas programadoras que aqu se describen. En el caso de la STK500, es posible utilizar un adaptador de USB-Serial para proporcionar un puerto serial a aquellos equipos, como ciertos modelos de laptops, que no cuentan con el puerto adecuado a la tarjeta programadora utilizada. Sin embargo, para el caso de las tarjetas modelo STK200, no se recomienda la adquisicin de adaptadores USB pues estos no estn diseados para funcionar como puerto paralelo sino como puerto de impresin. En este sentido, el adaptador USB-Serial que se utilice deber incluir su disco de instalacin o de drivers para el sistema operativo empleado por el usuario. De igual forma, deber contar con instrucciones precisas para instalar este adaptador, por lo que no describiremos este proceso de instalacin ya que vara entre los fabricantes y en el sistema operativo que se emplee.

STK 200 y compatibles

STK 500
Tal como lo menciona la pgina web del fabricante, la AVR STK500 es un kit de inicio y un sistema de desarrollo para microcontroladores AVR de Atmel. La STK500 proporciona a los diseadores un punto de partida para desarrollar cdigo en los AVR junto con caractersticas que les permitan utilizar este kit de inicio para desarrollar prototipos y probar los nuevos diseos. La STK500 interacta con el entorno de desarrollo integrado de Atmel, el AVRStudio, para escribir y depurar cdigo. Tambin cuenta con tarjetas de expansin para diferentes subfamilias de AVR y dispositivos ms grandes. La ayuda en linea de AVRstudio contiene la informacin ms actualizada y una lista completa de los dispositivos soportados. En la figura se muestra una STK500.

Figura 37: STK500 con microcontrolador y conectores La STK500 tiene zcalos de diferentes tamaos para colocar los diversos microcontroladores de la familia AVR, desde los de la subfamilia Tiny de 8 terminales hasta los de 40 terminales de la familia Mega. Cada subgrupo de microcontroladores se distingue por un color en la STK500. Esta clasificacin se puede consultar en el manual de la tarjeta [4]. Debe tenerse especial cuidado en no equivocar la colocacin del microcontrolador tanto en la orientacin como en el zcalo que le corresponda, a fin de evitar daos al dispositivo y a la tarjeta. Otro error comn es colocar el cable plano de seis hilos en forma errnea. Tambin, asegrese de proporcionar el suministro de energa necesario para que la tarjeta funcione, pues an cuando los leds indicadores de encendido se activen, puede ocurrir que no se pueda leer o programar adecuadamente el microcontrolador seleccionado.

AVRDragon
La tarjeta AVRDragon de Atmel, mostrada en la figura 31, ha establecido un nuevo estndar para herramientas de desarrollo de bajo costo. AVRDragon soporta todos los modos de programacin para la familia de dispositivos AVR de Atmel. Tambin incluye soporte de emulacin completa de dispositivos con 32KB o menos de memoria Flash.

Figura 38: Vista superior de la tarjeta AVRDragon Una de las ventajas de la tarjeta AVRDragon es el soporte en AVRStudio, esto permite que el firmware se actualice fcilmente para soportar los nuevos dispositivos y protocolos. Al conectar la AVRDragon, el AVRStudio comprueba automticamente el firmware y preguntar al usuario si desea actualizar el programa de la AVRDragon cada vez que una actualizacin de firmware est disponible. Se recomienda que el usuario actualice cada vez que el AVRStudio se lo sugiera. AVRDragon es alimentado por el cable USB, y tambin puede suministrar hasta 300 mA desde la terminal de 5V durante la programacin o la depuracin. Estas terminales de suministro de energa se muestran en 32.

Figura 39: Terminales de programacin y alimentacin En la figura 32 se aprecian tres pares de terminales para alimentacin, justo al lado de las diez terminales utilizadas para programacin de dispositivos por medio del JTAG.

Arriba del conector JTAG se localizan las seis terminales utilizadas por la interfaz ISP. La descripcin de las terminales de comunicacin ISP se muestra en la tabla 1. Tabla 1: Correspondencia de terminales ISP microcontrolador con AVRDragon

Terminales de Microcontrolador Terminales AVRDragon


Pin 6 MOSI Pin 7 MISO Pin 8 SCK Pin 9 Reset Pin 10 VTG Pin 11 GND Pin 4 MOSI Pin 1 MISO Pin 3 SCK Pin 5 Reset Pin 2 VTG Pin 6 GND

Una de las alternativas para poder programar los microcontroladores por medio de la AVRDragon es a travs de una tarjeta externa que proporcione el soporte fsico para el dispositivo y se encargue de dirigir las seales de programacin hacia las terminales correspondientes. En la figura 40 se muestra un diseo de esta tarjeta programadora.

Figura 40: Diagrama Esquemtico Programadora usada con AVRDragon Este diagrama esquemtico fue elaborado en Eagle en su versin 5.10.0 para Linux Edicin Light. En la tabla 2 se incluye un listado de los componentes utilizados, para quin desee reproducir este diseo y modificarlo, le sea fcil ubicar los componentes. Otra alternativa es construir un cable de programacin. Esta opcin es la idnea si se desea programar el dispositivo cuando este esta ya dentro del sistema final, o cuando el microcontrolador esta en una tablilla para prototipos o protoboard. En la figura 41 se muestra el esquema de construccin

Tabla 2: Listado de partes de programadora usada con AVRDragon Part Value Device Package Library Sheet ISP S ZIF ISP ZIF MA03-2 240-1280-00-0602J MA03-2 22-23-2021 con-lstb con-molex 1 1 1 SOURCE 22-23-2021

240-1280-00-0602J con-3m

Para la realizacin de este cable programador por ISP, se requiere un segmento de cable plano de 6 hilos. Este segmento se recomienda no sea mayor a los 50 centmetros. Un conector para cable plano. En caso de no encontrar conector para cable plano de 6 hilos, un conector para cable plano de diez hilos sirve. Y por ltimo una tira de pines sencilla. Del lado del conector el segmento de cable se inserta directamente, alineando el hilo en color rojo con el smbolo de un triangulo que marca la terminal nmero 1 del conector. Del lado de la tira de pines, es necesario soldar los hilos a la terminal correspondiente as como se ilustra en la figura 41. Tira sencilla de 6 pines 6 MOSI 7 MISO 8 SCK 9 Reset 10 VCC 11 GND

Conector 1 MISO 2 VCC 3 SCK 4 MOSI 5 Reset 6 GND

Cable plano de 6 hilos

1 3 5

2 4 6

Microcontrolador

Figura 41: Cable programador por ISP para AVRDragon

Para programar un microcontrolador utilizando este cable, deber tener la precaucin de conectar juntas las lneas de tierra o GND tanto de la AVRDragon como del protoboard, y energizar el microcontrolador por medio de una fuente externa con voltaje de salida no mayor a 5.5 volts. Nunca deber conectar juntas la terminal de voltaje del microcontrolador con la terminal VCC de la AVRDragon, si utiliza una fuente externa de alimentacin. Por otro lado, tambin puede utilizar un protoboard como programadora junto con el cable ISP de programacin. En este caso, no necesitara una fuente de voltaje externa pues utilizara las terminales GND y Vcc de la AVRDragon como fuente de alimentacin. Puede utilizar el cable de las bocinas o buzzer interno de una computadora de escritorio que ya no ocupe, o el cable de encendido o de los leds del panel frontal, para proporcionar voltaje desde la AVRDragon al protoboard.

Figura 42: Protoboard y cable programador ISP

No recomendamos utilizar el voltaje de la AVRDragon para alimentar prototipos pues durante el proceso de depuracin y correccin de estos puede ocasionarle daos a la AVRDragon, y reiteramos la precaucin de no conectar el voltaje de una fuente externa con la terminal VCC de la AVRDragon. Tampoco olvide conectar juntas la terminal GND de la AVRDragon con la linea de referencia o tierra, si ocupa una fuente externa de voltaje.

Prctica 1: Descargar un programa


Objetivo
El alumno utilizar la tarjeta de desarrollo AVRDragon para descargar programas a un microcontrolador ATMega32, desde el entorno de desarrollo integrado AVRStudio

Resumen
Mostraremos cmo verificar el correcto funcionamiento de una AVRDragon. Se probar si un cable de programacin por ISP est correctamente elaborado. Revisaremos si un microcontrolador est daado. Programaremos un microcontrolador. Modificaremos la velocidad del oscilador interno del microcontrolador.

Introduccin
La primera vez que se conecta la AVRDragon a la computadora, se enciende un led de color rojo, y en breves instantes notar que un segundo led de color verde comienza a centellear hasta que finalmente se queda encendido, mientras que el sistema operativo enva un mensaje indicando que un nuevo hardware ha sido encontrado mostrando una aviso como el que se ve en la figura 43.

Figura 43: AVRDragon encontrada por Windows XP Despus de este globo informativo, se le pregunta al usuario el modo de bsqueda de los controladores correspondientes lanzando una ventana como la que se muestra en la figura 44. Para este caso marcaremos la opcin No por el momento, y deber pulsar el botn [Siguiente].

Figura 44: Asistente de instalacin de AVRDragon Ahora, se nos pregunta la ubicacin de los controladores para la AVRDragon, Para poder continuar adecuadamente con la instalacin, es necesario haber instalado previamente el AVRStudio, siendo este el caso, marcaremos la primera opcin Instalar automticamente el software (recomendado) y pulsaremos nuevamente el botn [Siguiente]. Esta parte del proceso se ilustra con la figura 45. Durante unos segundos aparece una ventana indicando los archivos que van siendo copiados, y la instalacin de los controladores concluye con la ventana mostrada en la figura 46. Tal como se indica en aquella ventana, deber pulsar el botn [Terminar] para concluir el proceso.

Si el proceso falla en cualquier momento es indicativo de un problema. Revise en el siguiente orden en busca de la solucin a tal falla: 1. 2. 3. 4. 5. Instalar AVRStudio antes de conectar la AVRDragon Seguir el proceso de instalacin que aqu se mostr Verificar que no exista falso contacto del cable USB con la AVRDragon o con la PC No conecte el cable ISP ni alimente ningn circuito con la AVRDragon hasta no instalarla Si el led rojo centellea y cambia intermitentemente a color naranja puede existir un problema grave con su AVRDragon.

Figura 45: Busqueda de controladores para AVRDragon Una vez que ha llegado a la pantalla de la figura 46, puede tambin verificar el xito de la instalacin en la vista de dispositivos, en donde aparecer un nuevo dispositivo bajo la categora Jungo. Esto indica que la instalacin del controlador de la AVRDragon fue exitoso, tal como se muestra en la figura 47.

Figura 46: Controladores instalados exitosamente

Si por alguna razn desea desinstalar la AVRDragon, es en el administrador de dispositivos desde donde podr hacerlo. Simplemente marque el dispositivo que desea desinstalar y pulse la tecla suprimir. Se le pedir que confirme la decisin de desinstalar tal dispositivo seleccionado.

Figura 47: AVRDragon aparece en el administrador de dispositivos

Desarrollo

En la figura 1.6 se muestra la conexin entre y la tarjeta de soporte. En la imagen anterior puede apreciarse el uso de un cable plano de diez hilos en conexin uno a uno. Las pistas en la placa de soporte son las encargadas de direccionar las seales provenientes de las terminales de hacia las correspondientes del microcontrolador. En los siguientes pasos se explicara como configurar la comunicacin del microcontrolador por medio de la placa de soporte a la tarjeta AVRDragon, para determinar ciertas caractersticas y as el usuario poder configurar el microcontrolador dependiendo sus necesidades: Verificaremos la comunicacin de la tarjeta programadora AVRDragon al Microcontrolador, para esto se hace la conexin mostrada anteriormente en la imagen 1.6. Abrir el programa AVRStudio, damos cancelar la ventana de bienvenida a AVRStudio, como se muestra en la figura 1.7. Despus damos clic en el icono de AVR, aparecer una ventana que nos muestra una variedad de tarjetas programadoras, en el cuadro de platform seleccionar la tarjeta AVRDragon y en el cuadro Port seleccionaremos USB. Despus damos clic en connect, como puede observarse en la figura 1.8. En la figura 1.9 se determina el microcontrolador que usaremos para descargar el programa ya sea el ATMega 16 o 32, para esto damos clic en Device and Signature Bytes aqu nos dar la opcin de escoger el tipo de microcontrolador a usar que en nuestro caso ser el ATMega 32, observamos en el cuadro Programming Mode And Target Settings nos indica el tipo de comunicacin que se usa, en algunas ocasiones se tiene que poner de forma manual. Se sugiere elegir una velocidad de comunicacin del ISP de 125 KHz mximo. Esta velocidad se puede modificar pulsando sobre el botn Settings que en la figura 1.9 se localiza dentro del panel Programming Mode and Target Settings en la pestaa Main. Si la comunicacin entre y el microcontrolador no se logra establecer, nos aparece un error, obsrvese la figura 1.10. En la figura 1.10 podemos observar el error de comunicacin entre el microcontrolador y la tarjeta programadora AVRDragon, este error se puede notar ya que nos enva una ventana de un error de ISP Mode Error, pero hay que recordar que existen otros factores que pueden originar este error como son: Cable de conexin mal elaborado, alimentacin del ISP, errores de la tarjeta no atribuibles al diseo (pistas cortadas, soldadura mal realizada, mal conexin de cable de comunicacin, mal conexin del microcontrolador,), microcontrolador defectuoso, cuando el microcontrolador est configurado para usar un cristal externo. Una vez que no hay errores en la comunicacin del microntrolador a la tarjeta programadora AVRDragon lo siguiente descargar un programa al microntrolador, para eso seleccionamos la pestaa Program, buscamos el botn para seleccionar el programa que se descargara en el microcontrolador, presionamos el botn [Program] para descargar el programa seleccionado anteriormente al microntrolador.

En la figura 1.11 se muestran los pasos ya mencionados para descargar programas al microntrolador.

Figura 48: Secuencia para descargar un programa al microcontrolador

Prctica 2: Puertos Digitales


Objetivo
El alumno conocer y utilizar los puertos digitales del microcontrolador para realizar operaciones de lectura y escritura de datos.

Resumen
El microcontrolador cuenta con cuatro puertos digitales configurables a nivel de terminal. Cada uno de los puertos se etiqueta con letras. Desde la A hasta la D. Todos los puertos son de ocho bits. Se pueden configurar en tiempo de ejecucin. Es posible definir funcionar cada terminal del puerto, si como entrada o como salida. Por cada puerto digital hay tres registros asociados a su configuracin y manejo. El registro DDRx se utiliza para definir la direccin de cada terminal del puerto. El registro PINx se emplea para leer datos del puerto. El registro PORTx es utilizado para escribir datos al puerto. Por omisin, todos los puertos son de entrada.

Introduccin
En la figura 44 se muestran los registros asociados con el manejo del puerto A. De forma similar, hay otros tantos registros para el manejo de los puertos digitales B, C y D.

Figura 49: Registros del puerto digital A Estos registros se pueden leer y escribir, tanto en tiempo de diseo como en tiempo de ejecucin. An cuando los puertos digitales son bidireccionales, son excluyentes. Es decir, una terminal especifica de un puerto digital slo puede ser de entrada o salida en un instante especfico. Una terminal de un puerto digital no puede ser una terminal bidireccional, es decir al mismo tiempo de entrada y de salida. Se puede escribir en un registro del microcontrolador utilizando valores decimales, hexadecimales, por nombre de bit, por operaciones de desplazamiento, o una combinacin de las anteriores. A continuacin mostramos algunos ejemplos de escritura a registros del microcontrolador.

PORTA=0x38; GICR=(1<<INT0); DDRC=255;

//Formato hexadecimal //Utilizando nombres de bit //Formato decimal

Desarrollo

Prctica 3: Manejo de un LCD


Objetivo
El alumno utilizar un display de cristal lquido (LCD) para mostrar datos y como interfaz para interactuar con el usuario de sus sistemas.

Resumen
Para poder utilizar un LCD se requiere un proceso de inicializacin. Cada caracter a ser desplegado en el LCD debe ser enviado codificado en ASCII. Los LCD tradicionales pueden ser manejados utilizando palabras de 8 o 4 bits, segn la configuracin inicial del dispositivo. Es posible modificar el comportamiento del LCD tanto en tiempo de diseo como en tiempo de ejecucin. El contraste y la luz de fondo son caractersticas de un LCD que no son manipulables directamente desde programacin. Requieren hardware adicional. Los mapas de memoria de LCD's tradicionales de 1,2 o 4 lneas y 16 o ms caracteres, suelen ser similares o estar superpuestos. Los LCD grficos operan de forma distinta de los LCD tradicionales y no son directamente compatibles.

Introduccin
El LCD2x16 es un dispositivo controlado de visualizacin grfico para la presentacin de caracteres, smbolos o incluso dibujos (en algunos modelos), Dispone de 2 filas de 16 caracteres cada una y cada carcter dispone de una matriz de 5x7 puntos (pxeles), aunque se puede encontrar de diferentes nmero de filas y caracteres. Este dispositivo est gobernado internamente por un Microcontrolador Hitachi 44780 y regula todos los parmetros de presentacin, este modelo es el ms comnmente usado y la informacin que aqu se presenta se basa en el manejo de este u otro LCD compatible. Caractersticas principales: Pantalla de caracteres ASCII, adems de los caracteres Kan-ji y Griegos. Desplazamiento de los caracteres hacia la izquierda o la derecha. Proporciona la direccin de la posicin absoluta o relativa del carcter. Memoria de 16 caracteres por lnea de pantalla. Movimiento del cursor y cambio de su aspecto. Permite que el usuario pueda programar 8 caracteres. Conexin a un procesador usando una interfaz de 4 u 8 bits

Figura 50: LCD 2x16 ordinario Cada pxel de un LCD tpicamente consiste de una capa de molculas alineadas entre dos electrodos transparentes, y dos filtros de polarizacin, los ejes de transmisin de cada uno que estn (en la mayora de los casos) perpendiculares entre s. Sin cristal lquido entre el filtro polarizante, la luz que pasa por el primer filtro sera bloqueada por el segundo (cruzando) polarizador. La figura 46 muestra la aplicacin de un campo elctrico, la orientacin de las molculas de cristal lquido est determinada por la adaptacin a las superficies. Cuando se aplica un voltaje a travs de los electrodos, una fuerza de giro orienta las molculas de cristal lquido paralelas al campo elctrico, que distorsiona la estructura helicoidal (esto se puede resistir gracias a las fuerzas elsticas desde que las molculas estn limitadas a las superficies). Esto reduce la rotacin de la polarizacin de la luz incidente, y el dispositivo aparece gris.

Figura 51: Esquema de la estructura interna de un LCD (cortesa de http://es.wikipedia.org/) Si la tensin aplicada es lo suficientemente grande, las molculas de cristal lquido en el centro de la capa son casi completamente desenrolladas y la polarizacin de la luz incidente no es rotada ya que pasa a travs de la capa de cristal lquido. Esta luz ser principalmente polarizada perpendicular al segundo filtro, y por eso ser bloqueada dado que se mostrara el pxel en negro. Por el control de la tensin aplicada a travs de la capa de cristal lquido en cada pxel, la luz se puede permitir pasar a travs de distintas cantidades, constituyndose los diferentes tonos de gris. En la tabla se describen las 14 terminales de un LCD, algunos mdulos tiene 2 terminales adicionales para un led de luz de fondo. En las figuras los registros de configuracin relacionados. Terminal 1 2 3 4 Tabla Terminales de un LCD Nombre Significado Vss Vdd Vo RS Tierra de alimentacin o GND. Alimentacin positiva o Vcc. Contraste del cristal lquido 0 a Vcc. Seleccin del registro de control/registro de datos: RS=0 Seleccin registro de control RS=1 Seleccin registro de datos Seal de lectura/escritura: R/W=0 Escritura (Write) R/W=1 Lectura (Read) Habilitacin del modulo: E=0 Mdulo desconectado E=1 Mdulo conectado

R/W

6 7 a 14

D0-D7 Bus de datos bidireccional.

En trminos generales, la primera posicin en un LCD corresponde a la direccin 0x80. La figura 47 muestra el mapa de memoria para un LCD de un rengln y hasta 40 caracteres.

Figura 52: Mapa de memoria para LCD de una lnea En funcin de la cantidad de caracteres por lnea, o en el caso de LCD multilnea, ser la direccin de memoria correspondiente a la posicin en el display del caracter que se desee mostrar. En la figura 48 se observa el mapa de memoria de un LCD de dos renglones y hasta 40 caracteres por rengln.

Figura 53: Mapa de memoria para LCD de dos lneas En la figura 2.3 se muestra el mapa de memoria para caracteres correspondiente a un LCD de cuatro lneas por diecisis caracteres, y el de cuatro lneas por veinte caracteres.

Figura 54: Mapa de memoria para LCD de cuatro lneas En la figura 50, se presenta la lista de definiciones correspondientes al proceso de configuracin e inicializacin de un LCD genrico. Estas definiciones se utilizan como bits para construir las palabras de control del LCD. En la figura 51 se muestra su uso y efectos.

Figura 55: Definiciones de configuracin para LCD

Figura 56: Configuraciones generales para LCD

Como se aprecia en la figura anterior, se pueden tener diversas configuraciones que, dependiendo de las caractersticas de la aplicacin o el gusto de programador, se podrn emplear.

Desarrollo

Prctica 4. Interrupciones Externas


Objetivo
El alumno conocer el manejo de interrupciones por hardware y utilizar las interrupciones externas del microcontrolador.

Resumen
Existen tres lneas de interrupcin externa en el microcontrolador. Las lneas de interrupcin se etiquetan y enumeran desde la INT0 hasta la INT2. Para el manejo de las dos primeras interrupciones existen tres registros asociados. El registro GICR define cul lnea de interrupcin se utilizar y atender en una subrutina de atencin a interrupcin (ISR). El registro GIFR refleja el estado de existencia o no existencia de evento de interrupcin en cierta lnea del microcontrolador. Es un registro de bandera. MCUCR, es un registro de configuracin. En l se especifica qu tipo de interrupcin habr de modificar el registro de banderas. La configuracin de las lneas de interrupcin no es mutuamente excluyente. Existen al menos dos formas de manejar las interrupciones externas: por subrutina de atencin y por interrogacin de bandera.

Introduccin
En la figura 3.1 se muestran los registros asociados al manejo de interrupciones externas. El primero de ellos se utiliza cuando la interrupcin externa ser atendida va vector de interrupcin. Es decir, cada vez que se coloca un uno en cualquiera de los bits INTn, se debe escribir la consiguiente subrutina de servicio a la interrupcin o ISR(). Esta subrutina recibe como parmetro el vector asociada con la interrupcin que ha sido activada.

Figura 57: Registros de configuracin de las interrupciones externas El segundo registro, el GIFR, es un registro de banderas. Cada vez que ocurre un evento externo y tiene la forma definida en los bits ISCn1-ISCn0, del registro MCUCR, se coloca en alto el bit correspondiente. El ltimo registro aqu mostrado es el MCUCR. En este se va a definir ante qu tipo de interrupciones se va a actuar. Las posibles combinaciones de valores se muestran en la figura 3.2. y figura 3.3. No es necesario que ambas lneas de interrupcin se configuren de la misma forma. Por ejemplo, Mientras una es sensible a los flancos ascendentes de una seal de entrada, la otra podra nicamente atender los flancos descendentes; y viceversa.

Figura 58: Tipos de sensibilidad de la INT0

Figura 59: Tipos de sensibilidad de la INT1 Pero las lneas INT0, INT1 e INT2 no son las nicas fuente de interrupciones en el microcontrolador. En la figura 3.4 se muestran todas las fuentes posibles de interrupcin para el ATMega32. Esta tabla no es universal, vara segn el modelo de microcontrolador. La forma como se programa la atencin de las interrupciones, es en trminos generales la misma: la inclusin de la biblioteca de interrupciones, una subrutina a la que se le pasa como parmetro el vector de la interrupcin que se va a atender y una instruccin de habilitacin de interrupciones globales. Obviamente, en el programa principal se debe incluir la configuracin especfica del evento que dispara la interrupcin.

Figura 60: Fuentes de interrupcin para el ATMega32

Desarrollo

Prctica 5: Teclado Matricial


Objetivo

Resumen

Introduccin
Un teclado matricial es un arreglo de botones conectados en filas y columnas, de modo que se pueden leer varios botones con el mnimo nmero de pines. Este dispositivo permite ingresar datos a un sistema microcontrolador. Es, por decirlo de algn modo, la opcin inversa al LCD, pues este muestra informacin proveniente de un microcontrolador, mientras que un teclado matricial permite introducir informacin a un microcontrolador. Un teclado matricial se designa por el nmero de renglones y el nmero de columnas de que est formado. Por ejemplo, un teclado de 4x4 significa que consta de 4 renglones y de 4 columnas. Un teclado de 5x7 indica un teclado matricial compuesto de 5 renglones y de 7 columnas. El resultado de la multiplicacin de renglones por columnas nos indica cuntos botones o teclas tenemos en nuestro teclado matricial. En la figura 3.1 se muestra un teclado matricial de 4x4.

Figura 61: Teclado Matricial 4x4 Un teclado matricial 44 solamente ocupa 4 lneas de un puerto para las filas y otras 4 lneas para las columnas, de este modo se pueden leer 16 teclas utilizando solamente 8 lneas de un microcontrolador.

Desarrollo

Prctica 6: Calculadora Bsica


Objetivo Resumen Introduccin

Prctica : Comunicacin Serial Asncrona


Objetivo.
Utilizar la USART del microcontrolador para efectuar comunicacin serial asncrona con otros dispositivos, as como el manejo de las interrupciones producidas por este perifrico.

Resumen
Las terminales 0 y 1 del puerto digital D tienen la doble funcin de servir como lneas de USART etiquetadas como RXD y TXD. Las terminales asociadas a la USART del microcontrolador pueden ser configuradas para recibir, transmitir o ambas cosas. Para poder realizar una correcta comunicacin serial se requiere que, tanto el emisor como el receptor cumplan con: velocidad de comunicacin, longitud de palabra, bits de paridad y paro. Existe un vector de interrupcin asociado a cada uno de los eventos de la USART como nuevo dato recibido, fin de transmisin y registro de datos vaco. La probabilidad de error en una comunicacin serial asncrona en el microcontrolador, es funcin directa de la velocidad de comunicacin elegida, el reloj del sistema y del divisor de frecuencia de la USART. Existen otros perifricos de comunicacin, como el SPI, que es un modo de comunicacin serial sncrono y multimaestro. La interfaz de dos hilos (TWI). es utilizada comnmente para comunicaciones bajo el protocolo I2C. La USART tambin soporta comunicaciones a nueve bits, seriales sncronas, y multi-maestro, entre otras caractersticas.

Introduccin
Para el caso de la USART, existen cuatro registros asociados a su manejo y configuracin. En la figura 4.1, se muestra la estructura del registro UBRR, que funciona como un divisor de reloj.

Figura 62: Registro de configuracin de velocidad de la USART El registro UBRR define la velocidad de comunicacin de datos. Es un registro de 12 bits con el bit ms significativo de la parte alta compartido el registro UCSRC. El valor colocado aqu junto con la velocidad de reloj del sistema, definen la velocidad de transferencia de datos de la interfaz, as como el porcentaje de error en la transmisin.

Figura 63: Registro de estado de la USART Dependiendo del estado de la comunicacin, se colocar en 1 o 0 un cierto bit de este registro. Es decir, el registro mostrado en la figura 4.2 es un registro de banderas. La generacin de una interrupcin depende tanto de si ha sido habilitada, como del estado de los bits de este registro. Por su parte el registro UCSRB, mostrado en la figura 4.3, es utilizado para configurar cules eventos asociados con la USART, sern atendidos va vector de interrupcin. Tambin se utiliza para configurar el comportamiento de la USART y para las comunicaciones a 9 bits.

Figura 64: Registro general de configuracin la USART El registro mostrado en la figura 4.4, el UCSRC, es el registro encargado de definir las caractersticas ms especficas del comportamiento de la USART, como lo es el tamao de la palabra de datos, la cantidad de bits de paro, comunicaciones con o sin bit de paridad, y la polaridad de la seal de reloj, para comunicaciones seriales sncronas.

Figura 65: Registro particular de configuracin la USART Como se ha venido mencionando, la velocidad de transferencia es funcin directa de la seal de reloj del micro, as como el porcentaje de error. En la figura 4.5 se muestran algunas posibles combinaciones para las velocidades tpicas.

Desarrollo

Prctica : Conversor Anlogo a Digital


Objetivo
Utilizar el conversor anlogo a digital (ADC) para medir variables fsicas. Conocer el manejo de las interrupciones producidas por este perifrico.

Resumen
Las terminales del puerto digital A cumplen una doble funcin al ser tambin las lneas de entrada de los ocho canales del ADC del microcontrolador. El tamao de la palabra de conversin es de diez bits, razn por la que se utiliza un registro de diecisis bits dividido en parte alta y parta baja. La velocidad del reloj del ADC es un submltiplo de la frecuencia del reloj del sistema, y puede ser configurada tanto en tiempo de diseo como en tiempo de ejecucin. Existe un slo evento asociado al ADC del microcontrolador capaz de provocar una seal de interrupcin: el fin de conversin. Es posible modificar la representacin de los datos de una conversin, a fin de tener los bits menos significativos juntos en la parte baja del registro de datos del ADC; o bien tener agrupados los bits ms significativos en la parte alta del registro de datos de conversor anlogo a digital. El canal analgico de entrada a ser ledo y convertido a una representacin numrica binaria, puede ser elegido en tiempo de diseo, y modificado durante la ejecucin de la aplicacin, dando flexibilidad a este perifrico del microcontrolador.

Introduccin
En la figura 5.1 se muestra uno de los registro de configuracin del ADC. Este se encarga de configurar cul canal se va a convertir y si lo va a hacer con alguna ganancia. Tambin se define en este registro el origen del voltaje de referencia para las conversiones del ADC.

Figura 66: Registro de seleccin de canal del ADC Por su parte, el registro ADCSRA mostrado en la figura 5.2, es el que se utiliza para definir el comportamiento del ADC. Entre otras caractersticas, aqu se define la frecuencia de reloj utilizada por el conversor para efectuar sus operaciones; tambin se especifca aqu si el inici de una conversin ser cuando lo indique el usuario o programa o una fuente de disparo automtico.

Figura 67: Registro de configuracin general del ADC Cuando se desea utilizar la interrupcin generada por el final de conversin del ADC, se deben modificar los bits ADIF y ADIE, que corresponden a la bandera de interrupcin y a la habilitacin de atencin a la interrupcin de fin de conversin. Por ltimo, los bits ADEN y ADSC son los encargados de encender el ADC y de iniciar una conversin, respectivamente. En particular el bit ADSC se activa una sola vez en el modo de carrera libre. Para un modo no automtico, cada vez que se desee iniciar una conversin se deber de escribir un uno en este bit.

Figura 68: Registro de configuracin de disparo del ADC Para el caso que se desee trabajer el ADC en modo de disparo automtico, esto se deber especificar en el registro ADCSRA junto con los valores dados en la figura 5.4 y que corresponden a combinaciones a ser escritas en los bits 5,6 y 7 del registro SFIOR, mismo que se muestra en la figura 5.3.

Figura 69: Fuentes de disparo automtico del ADC Como se puede apreciar en la figura 5.4, es posible sincronizar el inicio de una conversin del ADC, con la ocurrencia de algn evento externo o interno del microcontrolador. De particular inters, puede resultar el disparo por eventos del temporizador, para realizar conversiones peridicas a intervalor regualres y bien definidos de tiempo.

Bibliografa
[1] AVR Studio User Guide. Manual de AVRStudio. Rev. 1019A-A01/98 ; Disponible desde http://avr.myinvent.net/download/doc1019.pdf; [2] "El lenguaje de programacin C", 2 Edicin. Kernighan B. W., Ritchie D. M. Pearson, 1991 ISBN 968-880-205-0 [3] C Programming for Microcontrollers , Pardue , Joe; www.SmileyMicros.com ; 2005; ISBN 09766822-0-6 [4] Embedded C Programming and the Atmel AVR, Barnett, Richard H., Cox, Sarah, O'Cull, Larry; 2a e dicin; Thomson, 2006; ISBN: 978-1-4180-3959-2

You might also like