Manual de Programación de Microcontroladores AVR

July 12, 2017 | Author: Brenda Archer Moreno | Category: Microcontroller, Window (Computing), Integrated Development Environment, Computer File, Computer Program
Share Embed Donate


Short Description

Download Manual de Programación de Microcontroladores AVR...

Description

Manual de Programación de Microcontroladores AVR

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 [Aceptar]

Nombre de botón. Texto en Itálicas entre corchetes cuadrados tipografía Times New Roman.

[1]

Referencia Bibliográfica. Número entre corchetes cuadrados tipografía Times New Roman.

{Ventana}

Título o nombre de ventaja. Texto entre llaves tipografía Times New Roman

Inicio ­> Programas

Ruta o nombre de opción en menú. Tipografía Courier 10 puntos.

“Programa/Archivo”

Nombre de programa o de archivo. Texto entre comillas en tipografía Times New Roman.

#include

Segmento de código, terminal o salida de programa. Texto en Itálicas en tipografía FreeMono

Prefacio Propósito de este manual. Guía básica para la programación de micros AVR de ATMEL Uso de diversas tarjetas programadoras Cómo iniciar un proyecto en WinAVR Cómo iniciar un proyecto en AVRstudio Aspectos avanzados de programación Como programar micros en Linux

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.

Figura 1: Inicio de la instalación del AVRStudio

Figura 2: Licencia de uso de AVRStudio

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

Figura 3: Directorio de instalación

Figura 4: Driver para AVRDragon

Ahora nos muestra una ventana que nos pide seleccionar la carpeta en donde se almacenarán los archivos de la instalación de AVRStudio, podemos utilizar la carpeta que se sugiere por omisión, o bien elegir otra pulsando sobre el botón [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 botón [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 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.

Figura 5: Inicia proceso de Instalación

Figura 6: Copia de archivos de AVRStudio

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

Figura 7: Fin de la copia de archivo

Figura 8: Instalación completa del AVRStudio

Ahora en el menú inicio se ha creado una nueva categoría 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 inglés) 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 página de Atmel. 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. Descargar el archivo “WinAVR-20100110-install.exe” desde la página 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: Página 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 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].

Figura 13: Acuerdo de licencia de WinAVR 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.

Figura 14: Elegir carpeta destino de la instalación

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

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

Figura 16: Vista detallada del proceso de instalación de WinAVR

Tan pronto como finaliza la instalación, una ventana indicando que el proceso se ha completado aparece, véase figura 17. Cuando se pulsa sobre el botón [Terminar], el programa de instalación lanza la aplicación del explorador de internet que se tenga por omisión, mostrando una página web con el “WinAVR User Manual”, como se muestra en la figura 18.

Figura 17: Instalación 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 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:

#include #include #include “/my_biblioteca.h”

Sección de bibliotecas Necesaria para compilar a un AVR. Sólo si se utilizan interrupciones. Para utilizarse con bibliotecas del usuario.

char aux; tipo nombre=valor;

Sección de variables globales Conjunto de variables globales. Se siguen las reglas de ANSI C, tipo de variable, nombre de variable y ,opcionalmente, valor inicial.

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; //Función definida por el ususario... config_int();

Sección prototipos de funciones El prototipo de una función de usuario, es una descripción breve del tipo de datos que devuelve, el nombre de la función y los tipos de datos de los parámetros que recibe. Sección vectores de interrupción 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 interrupción 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”, sección 5.25. Sección función principal o main A partir de esta función es que se comienza a ejecutar nuestro programa. Dentro de esta función pueden existir variables, denominadas locales, y llamadas a funciones creadas por el usuario.

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

void config_int(void){ //Código de la función de usuario, en este caso //no hay instrucción de return 0, debido a que la //función es de tipo void } tipo nombre(tipo var1,tipo var2....tipo varX){ //Codigo del ususario }

Cuando se van a utilizar interrupciones, se requiere habilitar la característica de atención a la interrupción. Para esto, es la linea sei(). Para cerrar este bloque, se escribe la línea return 0, que indica que el bloque se ejecuta sin errores. Esta línea es obligatoria cada vez que la función main se defina como de tipo int. Sección 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 función, el nombre de la función, y entre paréntesis, los tipos y nombres de las variables que se pasan como parámetros. No olvidar que si el tipo de la función es distinto a void, se debe de cerrar la función con una instrucción de return.

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); tipo func2(void); #include “biblioteca.h”

biblioteca.h

tipo func1(void){ //Hacer algo... } tipo func2(void){ //Hacer algo... }

#include #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é sección, de la columna de la derecha, corresponde cada una de las sentencias mostradas en la columna izquierda. ( ) char ordena(char,char);

(1) Sección de Bibliotecas (2) Sección de Variables Globales

( ) #include “num_primo.h” (3) Sección de Prototipos de Funciones ( ) int main(void);

(4) Sección Vectores de Interrupción (5) Sección Función Principal

( ) char algo(char x){//do something... } (6) Sección Funciones del Usuario ( ) ISR(ADC_vect){//do something... } ( ) sei(); ( ) #include ( ) return 0; ( ) char auxiliar=0; //Fuera de una función

Programación en AVRStudio 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.

Figura 20: Ventana de Bienvenida 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.

Figura 21: Tipo de proyecto nuevo

En esta nueva ventana, la de la figura 21, deberá elegir la opción AVR GCC, la que aparece con un icono de un ñu, aunque más parecido a una vaca o toro. A continuación, 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 opción “Create folder”. Por omisión el asistente nombra el archivo inicial igual a como se denomino el proyecto. 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. En la figura 22 se muestra la ventana en la que deberá elegir el microcontrolador para el que va destinada la aplicación y la plataforma que usará para realizar la depuración de la aplicación. Si no cuenta con ninguna plataforma de depuración de las listadas, puede elegir la opción de AVR Simulator. Una vez que ha acabado esta etapa de configuración, pulse sobre el botón [Finish], para terminar.

Figura 22: Selección de dispositivo y plataforma En la figura 23 se muestra el aspecto final al término de la configuración del proyecto.

Figura 23: Aspecto de un proyecto iniciado en AVRStudio

El botón 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 botón, lanza un cuadro de diálogo con opciones de configuración del dispositivo microcontrolador.

Figura 24: Toolbar STK500 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.

Figura 25: Selección del programador en AVRStudio 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.

Figura 26: Toolbar AVRGCCPLUGIN 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. Para generar una aplicación, seguir estos pasos: 1. Crear una carpeta. En esta carpeta se almacenarán los archivos de la aplicación. 2. En el escritorio aparece un icono similar a una “Lámpara de Aladino”, figura 20. Hacer doble clic; o bien ir al menú inicio­> Programas ­> WinAvr y seleccionar Mfile[WinAvr]

Figura 27: Icono de la aplicación Mfile 3. A continuación 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: Elección 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, deberán elegir STK200.

Figura 29: Elección del programador en el Mfile 5. Ahora será necesario especificar el puerto de comunicación en donde se conecta el programador. Para el caso de las STK500, se elige un puerto serial; las tarjetas compatibles con STK200 utilizan, típicamente el lpt1, o puerto paralelo 1.

Figura 30: Elección del puerto de comunicación con la tarjeta programadora

Si se utiliza una AVRDragon para descargar el programa, esta sección de elegir el programador y el puerto de programación 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 configuración básica. 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 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]”.

Figura 31: Icono de la aplicación 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 botón lateral derecho [...]. Este botón 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 botón [Aceptar], y posteriormente sobre el botón [OK] de la ventana {New Project...} 9. En este momento en nuestra carpeta deben existir dos archivos, uno llamado “Makefile” y otro con extensión “*.pnproj”. Esta extensión indica que se trata de un archivo generado por el Programmers Notepad y es de tipo PROJect o proyecto.

Figura 32: Creación de un proyecto en WinAVR

10. El siguiente paso es guardar la hoja en blanco del lado derecho que lleva por título {New}, con el nombre “main.c”. No olvidar la extensión, ni elegir otro nombre, ni usar mayúsculas. Debe ser “main.c” 11. Falta asociar a nuestro proyecto un archivo de inicio. Para lograrlo se da clic derecho o botón secundario del mouse, sobre el nombre de nuestro proyecto y se elige la opción Add Files, como se muestra en la figura 1.14. Aparece una ventana de exploración 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 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.

Figura 34: Aspecto general de un proyecto iniciado en WinAVR

13. Una vez que se escribe el código para la aplicación, hay que compilarlo. Esto se hace desde el menú Tools ­> Make All, como se muestra en la figura 1.16. El usuario notará que en la ventana llamada Output aparecerá información sobre el proceso de compilación. Si no hay errores marcará como salida: > Process Exit Code: 0 > Time Taken: xx:xx

Figura 35: Compilación de proyecto en WinAVR 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.

Figura 36: Programación del microcontrolador desde WinAVR 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.

STK 200 y compatibles

STK 500 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.

Figura 37: STK500 con microcontrolador y conectores 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]. Debe tenerse especial cuidado en no equivocar la colocación del microcontrolador tanto en la orientación como en el zócalo que le corresponda, a fin de evitar daños al dispositivo y a la tarjeta. Otro error común es colocar el cable plano de seis hilos en forma errónea. 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.

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

Figura 39: Terminales de programación y alimentación 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. 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 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.

Figura 40: Diagrama Esquemático Programadora usada con AVRDragon 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

S ZIF

MA03-2

MA03-2

con-lstb

1

SOURCE 22-23-2021

22-23-2021

con-molex

1

ZIF

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

240-1280-00-0602J

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.

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

Cable plano de 6 hilos

1

2

3

4

5

6

Tira sencilla de 6 pines 6 – MOSI 7 – MISO 8 – SCK 9 – Reset 10 – VCC 11 – GND

Microcontrolador

Figura 41: Cable programador por ISP para AVRDragon

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.

Figura 42: Protoboard y cable programador ISP

No recomendamos utilizar el voltaje de la AVRDragon para alimentar prototipos pues durante el proceso de depuración y corrección de estos puede ocasionarle daños a la AVRDragon, y reiteramos la precaución 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.

Práctica 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 cómo verificar el correcto funcionamiento de una AVRDragon.



Se probará si un cable de programación por ISP está correctamente elaborado.



Revisaremos si un microcontrolador está dañado.



Programaremos un microcontrolador.



Modificaremos la velocidad del oscilador interno del microcontrolador.



Introducción 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.

Figura 43: AVRDragon encontrada por Windows XP 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].

Figura 44: Asistente de instalación de AVRDragon 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: 1. 2. 3. 4. 5.

Instalar AVRStudio antes de conectar la AVRDragon Seguir el proceso de instalación 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 ningún 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 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.

Figura 46: Controladores instalados exitosamente

Si por alguna razón 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 decisión de desinstalar tal dispositivo seleccionado.

Figura 47: AVRDragon aparece en el administrador de dispositivos

Desarrollo

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: Verificaremos la comunicación de la tarjeta programadora AVRDragon al Microcontrolador, para esto se hace la conexión 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. Después 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. Después 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 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. Si la comunicación entre y el microcontrolador no se logra establecer, nos aparece un error, obsérvese la figura 1.10. En la figura 1.10 podemos observar el error de comunicación entre el microcontrolador y la tarjeta programadora AVRDragon, este error se puede notar ya que nos envía 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 conexión mal elaborado, alimentación del ISP, errores de la tarjeta no atribuibles al diseño (pistas cortadas, soldadura mal realizada, mal conexión de cable de comunicación, mal conexión del microcontrolador,), microcontrolador defectuoso, cuando el microcontrolador está configurado para usar un cristal externo. 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.

Figura 48: Secuencia para descargar un programa al microcontrolador

Práctica 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 ejecución.



Es posible definir funcionará cada terminal del puerto, si como entrada o como salida.



Por cada puerto digital hay tres registros asociados a su configuración y manejo.



El registro DDRx se utiliza para definir la dirección 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 omisión, todos los puertos son de entrada.

Introducción 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 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.

PORTA=0x38; GICR=(1
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF