Académique Documents
Professionnel Documents
Culture Documents
Contenido
Notación utilizada......................................................................................................................................5
Prefacio......................................................................................................................................................6
Instalación de AVRStudio.........................................................................................................................7
Instalación de WinAVR...........................................................................................................................10
Lenguaje C para AVR..............................................................................................................................14
Programación en AVRStudio..............................................................................................................17
Programación en WinAVR.................................................................................................................20
Programación del microcontrolador.........................................................................................................25
STK 200 y compatibles.......................................................................................................................25
STK 500..............................................................................................................................................26
AVRDragon.........................................................................................................................................27
Práctica 1: Descargar un programa..........................................................................................................31
Objetivo...............................................................................................................................................31
Resumen..............................................................................................................................................31
Introducción.........................................................................................................................................32
Desarrollo............................................................................................................................................35
Práctica 2: Puertos Digitales....................................................................................................................37
Objetivo...............................................................................................................................................37
Resumen..............................................................................................................................................37
Introducción.........................................................................................................................................38
Desarrollo............................................................................................................................................38
Práctica 3: Manejo de un LCD.................................................................................................................39
Objetivo...............................................................................................................................................39
Resumen..............................................................................................................................................39
Introducción.........................................................................................................................................40
Desarrollo............................................................................................................................................44
Práctica 4. Interrupciones Externas..........................................................................................................45
Objetivo...............................................................................................................................................45
Resumen..............................................................................................................................................45
Introducción.........................................................................................................................................46
Desarrollo............................................................................................................................................48
Práctica 5: Teclado Matricial...................................................................................................................49
Objetivo...............................................................................................................................................49
Resumen..............................................................................................................................................49
Introducción.........................................................................................................................................49
Desarrollo............................................................................................................................................49
Práctica 6: Calculadora Básica.................................................................................................................50
Objetivo...............................................................................................................................................50
Resumen..............................................................................................................................................50
Introducción.........................................................................................................................................50
Práctica : Comunicación Serial Asíncrona...............................................................................................51
Objetivo...............................................................................................................................................51
Resumen..............................................................................................................................................51
Introducción.........................................................................................................................................52
Desarrollo............................................................................................................................................53
Práctica : Conversor Análogo a Digital...................................................................................................54
Objetivo...............................................................................................................................................54
Resumen..............................................................................................................................................54
Introducción.........................................................................................................................................55
Bibliografía..............................................................................................................................................57
Índice de Figuras
Figura 1: Inicio de la instalación del AVRStudio......................................................................................7
Figura 2: Licencia de uso de AVRStudio..................................................................................................7
Figura 3: Directorio de instalación.............................................................................................................7
Figura 4: Driver para AVRDragon............................................................................................................7
Figura 5: Inicia proceso de Instalación......................................................................................................8
Figura 6: Copia de archivos de AVRStudio...............................................................................................8
Figura 7: Fin de la copia de archivo...........................................................................................................8
Figura 8: Instalación completa del AVRStudio.........................................................................................8
Figura 9: Página web de WinAVR en sourceforge.net............................................................................10
Figura 10: Instalador de WinAVR...........................................................................................................10
Figura 11: Elegir idioma de la instalación...............................................................................................10
Figura 12: Inicio de la instalción de WinAVR.........................................................................................10
Figura 13: Acuerdo de licencia de WinAVR...........................................................................................11
Figura 14: Elegir carpeta destino de la instalación..................................................................................11
Figura 15: Configuración de la instalación de WinAVR.........................................................................12
Figura 16: Vista detallada del proceso de instalación de WinAVR.........................................................12
Figura 17: Instalación 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: Selección de dispositivo y plataforma....................................................................................18
Figura 23: Aspecto de un proyecto iniciado en AVRStudio....................................................................18
Figura 24: Toolbar STK500.....................................................................................................................19
Figura 25: Selección del programador en AVRStudio............................................................................19
Figura 26: Toolbar AVRGCCPLUGIN...................................................................................................19
Figura 27: Icono de la aplicación Mfile...................................................................................................20
Figura 28: Elección del microcontrolador en el MFile............................................................................20
Figura 29: Elección del programador en el Mfile....................................................................................21
Figura 30: Elección del puerto de comunicación con la tarjeta programadora........................................21
Figura 31: Icono de la aplicación Programmers Notepad........................................................................22
Figura 32: Creación 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: Compilación de proyecto en WinAVR...................................................................................24
Figura 36: Programación 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 programación y alimentación..........................................................................27
Figura 40: Diagrama Esquemático 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 instalación 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 (cortesía de http://es.wikipedia.org/)..............41
Figura 52: Mapa de memoria para LCD de una línea..............................................................................42
Figura 53: Mapa de memoria para LCD de dos líneas.............................................................................42
Figura 54: Mapa de memoria para LCD de cuatro líneas........................................................................43
Figura 55: Definiciones de configuración para LCD...............................................................................43
Figura 56: Configuraciones generales para LCD.....................................................................................44
Figura 57: Registros de configuración 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 interrupción para el ATMega32...........................................................................47
Figura 61: Teclado Matricial 4x4.............................................................................................................49
Figura 62: Registro de configuración de velocidad de la USART...........................................................52
Figura 63: Registro de estado de la USART............................................................................................52
Figura 64: Registro general de configuración la USART........................................................................52
Figura 65: Registro particular de configuración la USART....................................................................53
Figura 66: Registro de selección de canal del ADC................................................................................55
Figura 67: Registro de configuración general del ADC...........................................................................55
Figura 68: Registro de configuración de disparo del ADC......................................................................55
Figura 69: Fuentes de disparo automático del ADC................................................................................56
Notación utilizada
Los programas que acompañan este documento se entregan “tal cual” sin ninguna garantía de ninguna
índole. El autor no se responsabiliza explicita o implícitamente de mal funcionamiento, pérdida de
datos, y/o cualquier daño que pueda sufrir directa o indirectamente por el uso de estos programas.
Instalación de AVRStudio
Recomendamos instalar primero el AVRStudio, antes de realizar la instalación 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.
También encontrará actualizaciones como la SP1 y la SP2, las cuales es recomendable que también
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 instalación, 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.
Deberemos pulsar sobre el botón [Next], y abrirá una ventana como se ve en la figura 2. En esta
ventana es necesario aceptar los términos de la licencia marcando la opción “I accept the terms of the
license agreement”. Una vez marcada esta opción deberá pulsar el botón [Next].
En esta nueva ventana, se nos permite elegir entre instalar/actualizar o no el manejador para la tarjeta
AVRDragon. Recomendamos dejar siempre seleccionada esta característica para mantener actualizado
el firmware de la AVRDragon. Pulsamos sobre el botón [Next] para continuar el proceso de
instalación.
El programa de instalación nos pide confirmación para guardar los archivos necesarios en nuestro
equipo, como se muestra en la figura 5. Pulsando sobre el botón [Install], inicia el proceso de
instalación 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.
El proceso de instalación de estos SP no presenta mayor problema de ir pulsando sobre los botones de
continuar o instalar, según sea el caso, y se instalarán en la carpeta correspondiente a la instalación del
AVRStudio. Para una guía completa del uso de AVRStudio, recomendamos consulte [1].
Instalación de WinAVR
Antes de proceder a la instalación de WinAVR, se recomienda que el usuario inicie la sesión utilizando
una cuenta con privilegios de administrador. Esto es debido a que el programa instalador requiere
agregar algunas variables de entorno.
El archivo completo llega a pesar 28.8 MB, por lo que si se descarga desde internet en una conexión
lenta puede llegar a demorar demasiado. Lo recomendable en estos casos es, o utilizar una conexión
rápida, o pedirlo de alguien que ya lo tenga. Haciendo doble clic sobre el archivo ejecutable
(extensión .EXE), inicia el proceso de instalación. Elegir idioma y pulsar sobre el botón [Siguiente],
como se ve en la figura 11 y 12.
Figura 11: Elegir idioma de la instalación Figura 12: Inicio de la instalción de WinAVR
A continuación se muestra en la figura 13 el acuerdo de licencia, GNU GPL. Para poder continuar se
requiere aceptar las condiciones pulsando sobre el botón [Acepto].
Entre otra cosas, una licencia de tipo GNU GPL proporciona al usuario final el código fuente de la
aplicación, así como la facilidad de copiar, modificar, distribuir, etc. sin cargo extra. La única
condición es que se mantenga el mismo tipo de licencia y se den los créditos al autor original. Para más
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
aplicación.
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 sección no tienen la intención de repasar los detalles básicos del lenguaje C, ni sus estructuras de
control, de decisión, tipos y definición de variables, funciones, apuntadores y demás temas sobre los
que existe abundante literatura. Para una revisión detallada de estos temas básicos de la programación
en lenguaje C recomendamos [2],[3] y [4].
La intención de esta sección es proponer una estructura básica para la elaboración de programas en C
para microcontroladores AVR, misma que se muestra en el siguiente esquema:
Sección de bibliotecas
#include <avr/io.h> Necesaria para compilar a un AVR.
#include<avr/interrupt.h> Sólo si se utilizan interrupciones.
#include “<ubicación>/my_biblioteca.h” Para utilizarse con bibliotecas del usuario.
El programa escrito bajo este este esquema, se guarda con extensión “.c”. Se distingue de aquellos con
extensión “.h” por tener una función llamada main.
Para el caso en que se desee generar una biblioteca, o colección de funciones definidas por el usuario,
se sigue el esquema antes descrito, con la excepción de que no debe existir ninguna función con el
nombre main. Este archivo se guarda con una extensión “.h”.
Para hacer uso de una biblioteca de usuario, se agrega en la sección 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 precaución 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 función main, no utilice variables
globales con el mismo nombre, o duplicadas.
Otra alternativa bastante común es que la sección de prototipos de funciones definidas por el usuario se
almacena en un archivo tipo “.h”, y la programación de cada una de estas funciones se almacena en
otro archivo con extensión “.c”, de esta forma tendríamos un archivo de encabezados, extensión “.h”, y
otro archivo de códigos, el de extensión “.c”. El archivo de códigos incluiría al archivo de encabezados
y el archivo “main.c” incluiría al archivo de códigos. Para clarificar este esquema, vea la figura 19.
tipo func1(void); #include <avr/io.h>
tipo func2(void); #include “biblioteca.c”
#include “others.c”
biblioteca.h #include “biblioteca.h”
int main(void){
tipo func1(void){ //Hacer algo
//Hacer algo... func1();
} func2();
tipo func2(void){ return 0;
//Hacer algo... }
}
main.c
biblioteca.c
Figura 19: Esquema del uso de bibliotecas de usuario
Ejercicios
Relacione ambas columnas. Indique a qué sección, de la columna de la derecha, corresponde cada una
de las sentencias mostradas en la columna izquierda.
( ) ISR(ADC_vect){//do something... }
( ) sei();
( ) #include <avr/interrupt.h>
( ) return 0;
Puede iniciarse la aplicación desde la ruta menú inicio > Programas > Atmel AVR
Tools > AVR Studio 4, y aparecerá, la primera vez, una ventana de bienvenida. Puede elegir
seguir viéndola cada vez que inicie la aplicación 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 botón [New Project] para iniciar un nuevo
proyecto o el botón [Open] en caso de que ya exista un proyecto y desee abrirlo. Si usted desmarcó la
casilla de mostrar el diálogo de bienvenida al iniciar, y desea volver a activarla, lo puede hacer desde el
menú Project > Project Wizard de la barra de AVRStudio.
Al pulsar el botón que inicia un nuevo proyecto, se lanza la aplicación de asistente de creación de
proyecto. Este asistente se muestra en la figura 21, y también puede ser iniciado desde Project >
New Project en la barra de menú de AVRStudio.
Ahora, deberá elegir la unidad y la ubicación en donde se creará la carpeta del proyecto. Esto lo hace
por medio del botón cuadrado localizado al lado derecho del cuadro de texto etiquetado como
“Location”. Al pulsar sobre este botón se abrirá una ventana de navegación que le permitirá elegir el
punto de creación de la carpeta de proyecto. De un clic sobre el botón [Next] para continuar.
Al pulsar sobre el primer botón se abre el cuadro de diálogo que se muestra en la figura 25. Aquí
deberá elegir la plataforma de programación a utilizar para grabar sus códigos en el microcontrolador.
Una vez que ha elegido un programador, deberá pulsar el botón superior derecho llamado [Connect...]
para verificar que se encuentra conectado y encendido. Si no existen errores este será su programador
por omisión. Si desea cambiar el modelo de programador empleado, repita el proceso de selección 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.
El primer botón realiza la compilación del proyecto activo. El segundo, compila el proyecto activo y en
caso de no existir errores, inicia el proceso de programación del dispositivo, por lo que deberá tener
conectada y encendida la tarjeta programadora. El tercer botón compila únicamente el archivo activo, y
los dos últimos están asociados con aspecto particulares de la configuración del proyecto.
Programación en WinAVR
WinAVR es un entorno de desarrollo integrado (IDE, por sus siglas en inglés), que cuenta con diversas
herramientas de software para la generación, depuración y programación de aplicaciones destinadas a
los microcontroladores AVR de Atmel.
6. Se guarda este archivo en la carpeta creada en el paso 1. Para guardar este archivo de
configuración, utilice el menú File > Save As... Asegúrese de que se graba SIN
extensión, simplemente como “Makefile”.
7. Ahora, utilice la aplicación “Programmers Notepad[WinAVR]”. Desde el icono en el escritorio
o desde la ruta inicio> Programas > WinAvr y seleccionar “Programmers
Notepad[WinAvr]”.
12. Una vez guardado el archivo “main.c”, se puede comenzar a escribir la aplicación. 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 aplicación. Las dos
ventanas inferiores, {Find Results} y {Output}, sirven para depuración y como salida para el
proceso de compilación y programación, respectivamente.
14. Una vez compilada la aplicación, se puede descargar al microcontrolador. Para lograrlo se
utiliza Tools > Program, como se aprecia en la figura 1.17. Nuevamente, la ventana
{Output} proporciona información del proceso de programación. Esta opción no aplica para
programar por medio de la AVRDragon.
Hasta este momento hemos descrito el entorno de desarrollo WinAVR. En próximas secciones
describiremos a detalle el proceso de escritura de programas en C para AVR y la programación del
microcontrolador utilizando la STK500, la AVRDragon y una tarjeta compatible con STK200.
Programación del microcontrolador
En esta sección 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 más reciente que la
anterior, emplea el puerto serial para comunicarse y es una de las más completas y recomendables para
el desarrollo y depuración 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 adquisición de
adaptadores USB pues estos no están diseñados para funcionar como puerto paralelo sino como puerto
de impresión.
En este sentido, el adaptador USB-Serial que se utilice deberá incluir su disco de instalación 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
instalación ya que varía entre los fabricantes y en el sistema operativo que se emplee.
Tal como lo menciona la página 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 diseñadores un punto
de partida para desarrollar código en los AVR junto con características que les permitan utilizar este kit
de inicio para desarrollar prototipos y probar los nuevos diseños. La STK500 interactúa con el entorno
de desarrollo integrado de Atmel, el AVRStudio, para escribir y depurar código.
También cuenta con tarjetas de expansión para diferentes subfamilias de AVR y dispositivos más
grandes. La ayuda en linea de AVRstudio contiene la información más actualizada y una lista completa
de los dispositivos soportados. En la figura se muestra una STK500.
La STK500 tiene zócalos de diferentes tamaños 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 clasificación
se puede consultar en el manual de la tarjeta [4].
También, asegúrese de proporcionar el suministro de energía necesario para que la tarjeta funcione,
pues aún 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 estándar para
herramientas de desarrollo de bajo costo. AVRDragon soporta todos los modos de programación para
la familia de dispositivos AVR de Atmel. También incluye soporte de emulación completa de
dispositivos con 32KB o menos de memoria Flash.
Una de las ventajas de la tarjeta AVRDragon es el soporte en AVRStudio, esto permite que el firmware
se actualice fácilmente para soportar los nuevos dispositivos y protocolos. Al conectar la AVRDragon,
el AVRStudio comprueba automáticamente el firmware y preguntará al usuario si desea actualizar el
programa de la AVRDragon cada vez que una actualización 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 también puede suministrar hasta 300 mA desde la
terminal de 5V durante la programación o la depuración. Estas terminales de suministro de energía se
muestran en 32.
En la figura 32 se aprecian tres pares de terminales para alimentación, justo al lado de las diez
terminales utilizadas para programación de dispositivos por medio del JTAG.
Arriba del conector JTAG se localizan las seis terminales utilizadas por la interfaz ISP. La descripción
de las terminales de comunicación ISP se muestra en la tabla 1.
Una de las alternativas para poder programar los microcontroladores por medio de la AVRDragon es a
través de una tarjeta externa que proporcione el soporte físico para el dispositivo y se encargue de
dirigir las señales de programación hacia las terminales correspondientes. En la figura 40 se muestra un
diseño de esta tarjeta programadora.
Este diagrama esquemático fue elaborado en Eagle en su versión 5.10.0 para Linux Edición Light. En
la tabla 2 se incluye un listado de los componentes utilizados, para quién desee reproducir este diseño y
modificarlo, le sea fácil ubicar los componentes.
Otra alternativa es construir un cable de programación. Esta opción es la idónea 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 construcción
Tabla 2: Listado de partes de programadora usada con AVRDragon
Part Value Device Package Library Sheet
ISP ISP MA03-2 MA03-2 con-lstb 1
S SOURCE 22-23-2021 22-23-2021 con-molex 1
ZIF ZIF 240-1280-00-0602J 240-1280-00-0602J con-3m 1
Para la realización 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 centímetros. 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 símbolo de un triangulo que marca la terminal
número 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.
Para programar un microcontrolador utilizando este cable, deberá tener la precaución de conectar juntas
las líneas 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 alimentación.
Por otro lado, también puede utilizar un protoboard como programadora junto con el cable ISP de
programación. En este caso, no necesitaría una fuente de voltaje externa pues utilizaría las terminales
GND y Vcc de la AVRDragon como fuente de alimentación. 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.
Objetivo
El alumno utilizará la tarjeta de desarrollo AVRDragon para descargar programas a un
microcontrolador ATMega32, desde el entorno de desarrollo integrado AVRStudio
Resumen
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 envía un mensaje indicando que un nuevo
hardware ha sido encontrado mostrando una aviso como el que se ve en la figura 43.
Después de este globo informativo, se le pregunta al usuario el modo de búsqueda de los controladores
correspondientes lanzando una ventana como la que se muestra en la figura 44. Para este caso
marcaremos la opción “No por el momento”, y deberá pulsar el botón [Siguiente].
Ahora, se nos pregunta la ubicación de los controladores para la AVRDragon, Para poder continuar
adecuadamente con la instalación, es necesario haber instalado previamente el AVRStudio, siendo este
el caso, marcaremos la primera opción “Instalar automáticamente el software (recomendado)” y
pulsaremos nuevamente el botón [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
instalación de los controladores concluye con la ventana mostrada en la figura 46. Tal como se indica
en aquella ventana, deberá pulsar el botón [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 solución a tal falla:
Una vez que ha llegado a la pantalla de la figura 46, puede también verificar el éxito de la instalación
en la vista de dispositivos, en donde aparecerá un nuevo dispositivo bajo la categoría “Jungo”. Esto
indica que la instalación del controlador de la AVRDragon fue exitoso, tal como se muestra en la figura
47.
En la figura 1.6 se muestra la conexión entre y la tarjeta de soporte. En la imagen anterior puede
apreciarse el uso de un cable plano de diez hilos en conexión uno a uno. Las pistas en la placa de
soporte son las encargadas de direccionar las señales provenientes de las terminales de hacia las
correspondientes del microcontrolador.
En los siguientes pasos se explicara como configurar la comunicación del microcontrolador por medio
de la placa de soporte a la tarjeta AVRDragon, para determinar ciertas características y así el usuario
poder configurar el microcontrolador dependiendo sus necesidades:
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 opción 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 comunicación que se usa, en
algunas ocasiones se tiene que poner de forma manual.
Se sugiere elegir una velocidad de comunicación del ISP de 125 KHz máximo. Esta velocidad se puede
modificar pulsando sobre el botón “Settings” que en la figura 1.9 se localiza dentro del panel
“Programming Mode and Target Settings” en la pestaña Main.
Una vez que no hay errores en la comunicación del microntrolador a la tarjeta programadora
AVRDragon lo siguiente descargar un programa al microntrolador, para eso seleccionamos la pestaña
“Program”, buscamos el botón para seleccionar el programa que se descargara en el microcontrolador,
presionamos el botón [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.
Objetivo
El alumno conocerá y utilizará los puertos digitales del microcontrolador para realizar operaciones de
lectura y escritura de datos.
Resumen
Estos registros se pueden leer y escribir, tanto en tiempo de diseño como en tiempo de ejecución. Aún
cuando los puertos digitales son bidireccionales, son excluyentes. Es decir, una terminal especifica de
un puerto digital sólo puede ser de entrada o salida en un instante específico. 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 combinación de las anteriores. A
continuación mostramos algunos ejemplos de escritura a registros del microcontrolador.
Desarrollo
Práctica 3: Manejo de un LCD
Objetivo
El alumno utilizará un display de cristal líquido (LCD) para mostrar datos y como interfaz para
interactuar con el usuario de sus sistemas.
Resumen
Este dispositivo está gobernado internamente por un Microcontrolador Hitachi 44780 y regula todos los
parámetros de presentación, este modelo es el más comúnmente usado y la información que aquí se
presenta se basa en el manejo de este u otro LCD compatible. Características principales:
Cada píxel de un LCD típicamente consiste de una capa de moléculas alineadas entre dos electrodos
transparentes, y dos filtros de polarización, los ejes de transmisión de cada uno que están (en la
mayoría de los casos) perpendiculares entre sí. Sin cristal líquido entre el filtro polarizante, la luz que
pasa por el primer filtro sería bloqueada por el segundo (cruzando) polarizador.
En la tabla se describen las 14 terminales de un LCD, algunos módulos tiene 2 terminales adicionales
para un led de luz de fondo. En las figuras los registros de configuración relacionados.
En función de la cantidad de caracteres por línea, o en el caso de LCD multilínea, será la dirección de
memoria correspondiente a la posición 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 renglón.
En la figura 2.3 se muestra el mapa de memoria para caracteres correspondiente a un LCD de cuatro
líneas por dieciséis caracteres, y el de cuatro líneas por veinte caracteres.
Figura 54: Mapa de memoria para LCD de cuatro líneas
Como se aprecia en la figura anterior, se pueden tener diversas configuraciones que, dependiendo de
las características de la aplicación o el gusto de programador, se podrán emplear.
Desarrollo
Práctica 4. Interrupciones Externas
Objetivo
El alumno conocerá el manejo de interrupciones por hardware y utilizará las interrupciones externas del
microcontrolador.
Resumen
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 líneas de interrupción se configuren de la misma forma. Por ejemplo, Mientras
una es sensible a los flancos ascendentes de una señal de entrada, la otra podría únicamente atender los
flancos descendentes; y viceversa.
Pero las líneas 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 interrupción para el ATMega32. Esta tabla no
es universal, varía según el modelo de microcontrolador.
Objetivo
Resumen
Introducción
Un teclado matricial es un arreglo de botones conectados en filas y columnas, de modo que se pueden
leer varios botones con el mínimo número de pines. Este dispositivo permite ingresar datos a un
sistema microcontrolador. Es, por decirlo de algún modo, la opción inversa al LCD, pues este muestra
información proveniente de un microcontrolador, mientras que un teclado matricial permite introducir
información a un microcontrolador.
Un teclado matricial se designa por el número de renglones y el número 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 multiplicación de renglones por columnas nos indica cuántos botones o teclas tenemos en nuestro
teclado matricial. En la figura 3.1 se muestra un teclado matricial de 4x4.
Un teclado matricial 4×4 solamente ocupa 4 líneas de un puerto para las filas y otras 4 líneas para las
columnas, de este modo se pueden leer 16 teclas utilizando solamente 8 líneas de un microcontrolador.
Desarrollo
Práctica 6: Calculadora Básica
Objetivo
Resumen
Introducción
Práctica : Comunicación Serial Asíncrona
Objetivo.
Utilizar la USART del microcontrolador para efectuar comunicación serial asíncrona con otros
dispositivos, así como el manejo de las interrupciones producidas por este periférico.
Resumen
• Las terminales 0 y 1 del puerto digital D tienen la doble función de servir como líneas 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 comunicación serial se requiere que, tanto el emisor como el
receptor cumplan con: velocidad de comunicación, longitud de palabra, bits de paridad y paro.
• Existe un vector de interrupción asociado a cada uno de los eventos de la USART como nuevo
dato recibido, fin de transmisión y registro de datos vacío.
• La probabilidad de error en una comunicación serial asíncrona en el microcontrolador, es
función directa de la velocidad de comunicación elegida, el reloj del sistema y del divisor de
frecuencia de la USART.
• Existen otros periféricos de comunicación, como el SPI, que es un modo de comunicación serial
síncrono y multimaestro.
• La interfaz de dos hilos (TWI). es utilizada comúnmente para comunicaciones bajo el protocolo
I2C.
• La USART también soporta comunicaciones a nueve bits, seriales síncronas, y multi-maestro,
entre otras características.
Introducción
Para el caso de la USART, existen cuatro registros asociados a su manejo y configuración. En la figura
4.1, se muestra la estructura del registro UBRR, que funciona como un divisor de reloj.
El registro UBRR define la velocidad de comunicación de datos. Es un registro de 12 bits con el bit
más 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 transmisión.
Dependiendo del estado de la comunicación, 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 generación de una interrupción
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 cuáles eventos
asociados con la USART, serán atendidos vía vector de interrupción. También se utiliza para
configurar el comportamiento de la USART y para las comunicaciones a 9 bits.
El registro mostrado en la figura 4.4, el UCSRC, es el registro encargado de definir las características
más específicas del comportamiento de la USART, como lo es el tamaño de la palabra de datos, la
cantidad de bits de paro, comunicaciones con o sin bit de paridad, y la polaridad de la señal de reloj,
para comunicaciones seriales síncronas.
Figura 65: Registro particular de configuración la USART
Desarrollo
Práctica : Conversor Análogo a Digital
Objetivo
Utilizar el conversor análogo a digital (ADC) para medir variables físicas. Conocer el manejo de las
interrupciones producidas por este periférico.
Resumen
• Las terminales del puerto digital A cumplen una doble función al ser también las líneas de
entrada de los ocho canales del ADC del microcontrolador.
• El tamaño de la palabra de conversión es de diez bits, razón por la que se utiliza un registro de
dieciséis bits dividido en parte alta y parta baja.
• La velocidad del reloj del ADC es un submúltiplo de la frecuencia del reloj del sistema, y puede
ser configurada tanto en tiempo de diseño como en tiempo de ejecución.
• Existe un sólo evento asociado al ADC del microcontrolador capaz de provocar una señal de
interrupción: el fin de conversión.
• Es posible modificar la representación de los datos de una conversión, 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 más significativos en la parte alta del registro de datos de conversor análogo
a digital.
• El canal analógico de entrada a ser leído y convertido a una representación numérica binaria,
puede ser elegido en tiempo de diseño, y modificado durante la ejecución de la aplicación,
dando flexibilidad a este periférico del microcontrolador.
Introducción
En la figura 5.1 se muestra uno de los registro de configuración del ADC. Este se encarga de configurar
cuál canal se va a convertir y si lo va a hacer con alguna ganancia. También se define en este registro el
origen del voltaje de referencia para las conversiones 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 características, aquí se define la frecuencia de reloj utilizada por
el conversor para efectuar sus operaciones; también se especifíca aquí si el inició de una conversión
será cuando lo indique el usuario o programa o una fuente de disparo automático.
Cuando se desea utilizar la interrupción generada por el final de conversión del ADC, se deben
modificar los bits ADIF y ADIE, que corresponden a la bandera de interrupción y a la habilitación de
atención a la interrupción de fin de conversión.
Por último, los bits ADEN y ADSC son los encargados de encender el ADC y de iniciar una
conversión, respectivamente. En particular el bit ADSC se activa una sola vez en el modo de carrera
libre. Para un modo no automático, cada vez que se desee iniciar una conversión se deberá de escribir
un uno en este bit.
Para el caso que se desee trabajer el ADC en modo de disparo automático, 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 automático del ADC
Como se puede apreciar en la figura 5.4, es posible sincronizar el inicio de una conversión del ADC,
con la ocurrencia de algún evento externo o interno del microcontrolador. De particular interés, puede
resultar el disparo por eventos del temporizador, para realizar conversiones periódicas a intervalor
regualres y bien definidos de tiempo.
Bibliografía
[1] “AVR Studio User Guide”. Manual de AVRStudio. Rev. 1019A-A–01/98 ; Disponible desde
http://avr.myinvent.net/download/doc1019.pdf;
[2] "El lenguaje de programación C", 2ª Edición. 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 0-
9766822-0-6
[4] “Embedded C Programming and the Atmel AVR”, Barnett, Richard H., Cox, Sarah, O'Cull, Larry;
2a e dición; Thomson, 2006; ISBN: 978-1-4180-3959-2