TUTORIAL PARA PROGRAMAR UN ATMEGA8



Documentos relacionados
ZILOG DEVELOPER STUDIO

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Instalación del Admin CFDI

Uso de Visual C++ Pre-Practica No. 3

Notas para la instalación de un lector de tarjetas inteligentes.

Autoguiado en 6 pasos

INSTALACIÓN DE MEDPRO

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Instalación de dos Sistemas Operativos en un mismo Computador

CREACIÓN DEL PRIMER PROYECTO EN mikrobasic PRO for AVR

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS.

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Conexión de GPS a Open CPN.

Uso de varias pantallas y pantalla Splash

Windows XP - Antes de instalar - Importante

MANUAL INSTALACIÓN ABOGADOS MF

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

Internet Information Server

INSTALAR UBUNTU DESDE WINDOWS

Manual del Usuario ADSL

Creando una webquests

PLANTILLAS DE DOCUMENTOS EN WORD 2007

Tutorial de herramientas de Google

En este caso presionamos ENTER para empezar nuestra instalación

Guía de Usuario Programador USB

COPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN

Sitios remotos. Configurar un Sitio Remoto

Manual de iniciación a

V i s i t a V i r t u a l e n e l H o s p i t a l

Introducción a Moodle

Seminario de Informática

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Manual Configuración Orderman en el Software Glop. Configuración de terminales orderman en el software Glop para Hostelería.

NOTA DE APLICACIÓN AN-P002. Programando Wiring con NXProg

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

CRM para ipad Manual para Usuario

PROTEUS Depuración de programas para microprocesadores

GVisualPDA Módulo de Almacén

Firewall Firestarter. Establece perímetros confiables.

PASOS A SEGUIR PARA PONER EN MARCHA la IMPRESORA de TICKETS

AVD, el emulador de Smartphone y Tablets Android que incluye el SDK de Google

Un pequeñísimo tutorial para explicar cómo darse de alta al MEJOR SISTEMA de compartición, backup... en la web.

Para descargar la versión más reciente de Skype accedemos al sitio web de Skype y luego hacemos clic en Descargar Skype para escritorio de Windows.

Control de accesos autónomo por huella dactilar

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

T3-Rondas V 1.1. Help-Pc, S.L. C/ Pintor Pau Roig, 39 L Premià de Mar Barcelona Tel. (93) Fax marketing@t2app.

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

Como instalar y usar Windows XP y Windows 7 en el mismo equipo

TÉCNICAS DE GESTIÓN ADMINISTRATIVA PARA PEQUEÑAS EMPRESAS

Guía de uso del Cloud Datacenter de acens

Acá vamos a ocuparnos de cómo realizar la instalación de una red intra-aula sobre Linux, concretamente en la distribución de GNU/Linux Ubuntu 9.04.

COMO HACER BACKUP Y RESTAURAR ACTIVE DIRECTORY

Manual de operación Tausend Monitor

Configuración de PDAs en ITACTIL.

Combinar correspondencia (I)

PowerPoint 2010 Manejo de archivos

Programando con SinaProg. Manual de usuario para programar microcontroladores Atmel AVR en Windows con SinaProg


Instructivo para ingresar a la Demo On-Line de Manager2 GO!

Manual del Usuario de NOVIT GPS. Le llegará un como éste. Nombre completo;

Manual de usuario de Windows Live Writer

- 1 - ÍNDICE. Haga clic en Instalar Software. PASO 3: Primero le hará falta elegir su lengua en esta pantalla:

Correo Electrónico: Webmail: Horde 3.1.1

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este

Instrucciones de instalación de TrueCode

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Paso a Paso S Step 7 Basic v10.5

MANEJANDO FICHEROS Y CARPETAS

PRACTICA DE REDES Redes Ad Hoc

COPIAR CORREOS ENTRE CUENTAS USANDO IMAPSIZE

- 1 - ÍNDICE. PASO 3: Primero le hará falta elegir su lengua en esta pantalla:

WINDOWS : TERMINAL SERVER

2_trabajar con calc I

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

Instalación de Microsoft Virtual PC

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

Tarea # 5 Valor 10 Puntos. Mapa conceptual Aprendo a pensar

10. El entorno de publicación web (Publiweb)

CUADERNIA 2.0. CÓMO INSTALAR CUADERNIA 2.0 Para instalar Cuadernia debemos seguir los siguientes pasos:

Cómo acceder a Google Drive? Tiene más funcionalidades una cuenta de Google?

PUESTA EN MARCHA PROGRAMA GESTION DE OPTICAS. Junio

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

Una plantilla es un documento de Word 2003 con la característica de que el tipo de documento es plantilla de documento (.dot).

MANUAL TARIFICADOR. Clic aquí Descargar Tarificador

GUIA PRÁCTICA PARA LA FIRMA DIGITAL DE UN PDF A PARTIR DE UN PDF CREADO POR TI.

CRM para ipad Manual para Usuario

SISTEMA PERUANO DE INFORMACIÓN JURÍDICA

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

GUÍA DE USUARIO: GOOGLE DRIVE

Presentaciones compartidas con Google Docs (tutorial)

Guía para publicar su equipo en Internet.

Aplicación de protección con contraseña para los dispositivos flash USB de Verbatim

Seguidamente se muestra una pantalla para seleccionar nuestra localización, y comprobamos que la hora y demás es correcto. Podemos hacerlo fácilmente

Manual de software. MP GAS Tools. Software para marcadores de gasolineras. 07/2014 MS-MPGasTools_v1.4

Transcripción:

TUTORIAL PARA PROGRAMAR UN ATMEGA8 Este tutorial está diseñado para las personas que nunca han utilizado un microcontrolador de Atmel, y quieren empezar a desarrollar sus proyectos con esta tecnología. Para este caso utilizaremos un Atmega8 para ilustrar todo el proceso, que es exactamente el mismo para los demás micros. Primero cabe resaltar algunas de las ventajas que encontramos al utilizar esta clase de micro controladores, entre las que se encuentran: El software para la programación es totalmente gratuito y se puede descargar desde la página principal de Atmel, incluyendo las herramientas para programar en C o C++. Se pueden programar con tan solo un cable paralelo y 4 resistencias, sin gastar en programadores excesivamente costosos. Incluye un cristal interno programable, lo cual permite ahorrar en componentes y simplifica los montajes. Y la mejor ventaja que se tiene, es que puede simularse en PROTEUS junto con muchos de los dispositivos que se utilizan comúnmente, permitiendo ajustar el diseño sin tener que estar reprogramando el micro una infinidad de veces. ANTES DE EMPEZAR Lo primero que se necesita para programa un ATMEGA8 es el software para escribir el código, el cual lo distribuye ATMEL completamente gratis y se puede descargar de: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 De aquí se debe descargar la última versión del AVRStudio, incluyendo el Service Pack más actualizado. Para este tutorial vamos a trabajar con el AVR Studio Versión 4.13. Ahora, si lo que queremos es programar nuestro micro en C o C++, es necesario instalar el WINAVR, el cual se puede descargar de: http://winavr.sourceforge.net/ Para la simulación se puede utilizar el mismo AVRStudio, sin embargo lo más recomendable y práctico es utilizar el PROTEUS de VSM (http://www.ieeproteus.com/), el cual lamentablemente no es gratis, pero se puede conseguir (bajo la responsabilidad de cada uno) en el Emule o en: http://elakt.mforos.com/1426006/6725101-proteus/ Finalmente, para quemar el programa en el micro, es necesario tener el PONYPROG, el cual puede descargarse de: http://www.lancos.com/ppwin95.html Y el plano del quemador: http://elakt.mforos.com/1426006/6722430-plano-quemador-atmega/

En resumen, antes de empezar lo más recomendable es tener: AVRStudio con Service Pack o http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 WinAVR o http://winavr.sourceforge.net/ PROTEUS o http://elakt.mforos.com/1426006/6725101-proteus/ PonyProg o http://www.lancos.com/ppwin95.html Quemador del micro o http://elakt.mforos.com/1426006/6722430-plano-quemador-atmega/ CREANDO UN NUEVO PROYECTO Para ilustrar como es el proceso de crear un primer proyecto en un ATmega8, se va a ilustrar paso a paso un sencillo programa que se encargará de hacer titilar un LED, con un segundo de espera entre el encendido y el apagado. Se va a mostrar en primer lugar el proceso para hacer el proyecto en assembler, y después se mirarán los cambios necesarios en el caso del programa en C. Assembler En primer lugar se abre el AVRStudio, que es el programa en donde vamos a escribir el código del proyecto y hacer la primera simulación del mismo. Lo primero que se ve al abrir el programa es algo como la imagen, donde le damos click en New Project. Una vez aquí se tienen las opciones de generar un proyecto en Assembler o C. Para este caso se escoge la opción de Assembler y le damos como nombre Led. Aquí pregunta en donde se quiere guardar el proyecto,

y da la opción de crear una nueva carpeta que lo contenga, con el mismo nombre, que es lo más recomendable para organizar todos los proyectos que se vayan a hacer. Finalmente se debe escoger la herramienta que vamos a usar para la depuración en el caso de tener alguna tarjeta de desarrollo. Como este no es el caso, se escoge la opción de simulador (AVR Simulator), y se escoge el micro que se va a programar (ATmega8).

Ahora, una vez creado el proyecto se va a encontrar una pantalla como la siguiente: Donde se tiene: 1. Los archivos que tiene nuestro proyecto. En este caso solo se muestra el archivo Led.asm, dado que aún no se ha compilado nada. 2. Espacio para escribir el código que se va a programar en el micro. 3. Los puertos que dispone el microcontrolador, cada uno con su nombre y su dirección de memoria, lo cual es muy útil a la hora de hacer el código y de la simulación, como se verá más adelante. 4. El panel de mensajes, que se usa principalmente para mostrar los errores y las advertencias que se tengan con respecto al código escrito. Teniendo esto en cuenta, el siguiente paso es copiar el código que se da a continuación y compilarlo. Código.include m8def.inc.def temp=r16.def cero=r17.def tiempo=r18.def tiempo1=r19.def tiempo2=r20.org 0x0000 rjmp reset reset: ldi R25,LOW(ramend) out SPL,R25 ldi R25,HIGH(ramend) out SPH,R25

ser temp out DDRD,temp ;Puerto D como salida ldi cero,$00 inicio: com temp ;Inicia bit0 prendido out Portd,temp rcall Delay rjmp inicio Delay: ldi tiempo,100 ;Número de milisegundos For: ldi tiempo1,10 ;Simulamos un ciclo for que For1: ldi tiempo2,249 ;demora1000 ciclos(1ms) For2: dec tiempo2 cpse tiempo2,cero rjmp For2 dec tiempo1 cpse tiempo1,cero rjmp For1 dec tiempo cpse tiempo,cero rjmp For ret Básicamente este código define el puerto D como salida, y hace que cambie el nivel lógico de todo el puerto después de una rutina de espera Delay, programado para durar aproximadamente un segundo. Para entender mejor el código debe mirarse la hoja de datos del micro donde vienen todas las instrucciones explicadas y se muestra el manejo de todos los registros, lo cual se sale del alcance de este tutorial. Una vez copiado el código, para compilar se puede ir al menu Build Build, darle click en el ícono que se muestra en la imagen, o simplemente presionar F7. Una vez hecho esto, vemos la información que se muestra en la parte inferior, donde, como no existe ningún error en la compilación, se tiene el espacio que este código genera en cada uno de los bloques de memoria del microcontrolador, que en este caso queda ocupado tan solo en un 0.6%. También puede observarse los nuevos archivos que nos muestra y que se generan al compilar el código, todos relacionados con el proyecto que se está trabajando.

En este punto ya hemos completado nuestro proyecto, ya que al compilar el código se genera en archivo.hex, que es el que utiliza el PonyProg para quemar el micro; sin embargo vamos a ver la opción de simulación que nos da el AVRStudio. SIMULACIÓN AVRStudio Vamos a ver en primera instancia, la simulación utilizando el AVRStudio, el cual tiene la ventaja de permitir ver que pasa individualmente con cada registro del micro, además del contador de programa y el contador de ciclos para aplicaciones en las cuales el control del tiempo resulta crucial. Para tener habilitada la opción del contador de ciclos y de programa, hay que activar la opción en View Toolbars Processor, lo cual va a abrir una nueva pestaña como se muestra en la figura. Para iniciar la simulación se puede acceder a Build Build and Run o darle click al ícono número 1 de la figura, o presionar Ctrl + F7. Una vez hecho esto vemos como aparece una flecha en el campo del código, la cual indica la línea que se está ejecutando en cada momento de la simulación. Una vez aquí, se tienen varias opciones para controlar la forma en la cual se va mirar el flujo del programa, ya sea línea por línea utilizando el ícono 2, ejecutando el programa hasta donde tengamos el cursor utilizando el ícono 3, dejando que se ejecute sin ninguna restricción, utilizado breakpoints etc. Para visualizar los valores que va manejando el micro, se tiene en primer lugar la lista de registros en la parte derecha, donde se muestra el valor que va tomando cada registro en el punto del programa en el que nos encontremos. Para las variables, se abre la ventana Watch en el menú View Watch, en la cual escribiendo el nombre de cada variable tenemos acceso a su respectivo valor en cada instante de la simulación. Ahora, vamos a utilizar la simulación para mirar el tiempo que demora la rutina Delay utilizando el contador de ciclos de la ventana processor.

Para esto, se debe ir haciendo click en el ícono 2 (Step into) o presionando F11 hasta que el cursor se sitúe en la rutina Delay. Mientras se va corriendo dentro del programa, se puede ir viendo como se van actualizando los valores de los registros y de los contadores de programa. Entonces, para ver cuánto tiempo utiliza la rutina Delay, vamos a poner en 0 el contador de ciclos y el reloj haciendo click derecho en la ventana processor como en la figura. Una vez hecho esto llevamos el cursor al final de la rutina haciendo click en la línea de código ret.

Luego le damos click al ícono Run to cursor, con el fin de que se ejecute el programa automáticamente hasta el punto donde se encuentra el cursor, que es el final de la rutina en este caso. Dado la cantidad de pasos que tiene que hacer el programa para llegar a este punto, se debe esperar algunos segundos antes de que se tenga acceso de nuevo a la simulación. Si se da el caso en el que la ejecución se quede en algún ciclo infinito o tome demasiado tiempo en terminar, se debe darle Stop para poder retomar la simulación.

Finalmente podemos ver el tiempo que demoró la ejecución de la rutina, que como se quería es de un segundo, con un pequeño desfase de 400us, que no va a ser relevante para este proyecto dado que el ojo no va a lograr percibirlo. Proteus Proteus es una herramienta de simulación muy poderosa, la cual va a permitir un análisis del circuito completo del diseño, enfocado hacia todos los componentes del montaje y no solo lo que sucede con el microcontrolador. Lo primero que se va a hacer para empezar con la simulación es buscar los componentes que necesitamos. Para esto, se debe tener en cuenta que este seleccionado el ícono que se muestra en la figura con una flecha (que aparece por defecto cuando abrimos el proteus), o el ícono que está debajo de este (Componentes). Una vez se tiene seleccionado, hay que hacer click en la P (Pick Devices) para abrir el cuadro de diálogo que muestra todos los componentes disponibles. Una vez aquí, se escribe ATmega8 (o el micro que se esté utilizando) en el cuadro Keywords, lo cual automáticamente muestra que el componente puede simularse y permite verificar la posición de los pines. Finalmente al darle click en OK, se ve como el componente aparece ahora listado en el panel de Devices (Esto siempre y cuando se esté trabajando con el ícono Components, de lo contrario se mostrarán otras opciones en la lista).

Ahora, para colocar el componente en la hoja de simulación, simplemente se selecciona de la lista Devices y se le da click donde se quiera colocar. Para el Led se sigue el mismo procedimiento que para buscar el ATmega, pero ahora en Keywords se escribe Led blue (puede escribirse Led, pero para ser un poco más específicos se va a buscar uno azul), le damos click en LED BLUE y OK. Y de la misma forma que antes lo colocamos en la hoja de simulación.

Una vez tenemos ambos componentes, para hacer el cableado hay que acercar el mouse a uno de los pines del puerto D del micro, hasta que el apuntador del mouse que se ve en forma de lápiz cambie a un color verde y salga un cuadro rojo bordeando la punta del pin del micro. En este punto se hace click, y se vuelve a hacer click en el otro punto que se desea conectar, en este caso el pin del ánodo del Led. Ahora falta conectar la tierra del circuito. Para esto hay que activar el ícono Terminals Mode (el que se ve en la figura), selccionar GROUND y colocarlo en la hoja como cualquier componente. Hecho esto, se conecta la tierra al cátodo del Led para completar el montaje.

Nota: Hay que tener en cuenta que este montaje no debe implementarse físicamente, dado que sin una resistencia en serie con el Led se produce un corto y puede causarle daños al microcontrolador. Para efectos de simulación esto no es importante, pero cuando se vaya a montar el circuito se debe colocar una resistencia típicamente de 220ohm o de mayor valor. Una vez se tiene ubicado todo el circuito, hay que cargar el programa del micro. Para esto se le da doble click al microcontrolador en la hoja de simulación, lo cual abre un cuadro de diálogo donde se pueden ver y modificar las características con las que se va a simular el micro. Dado que el programa lo hicimos con un reloj de 1MHz (que viene por defecto tanto en el micro, como en el AVR y el proteus) dejamos esta opción como esta y le damos click en el ícono de Program File.

Se busca el archivo.hex en la carpeta del proyecto, que es el archivo que genera el AVRStudio una vez que hemos compilado satisfactoriamente el programa, se carga y click en OK. Ya con el programa cargado, solo resta comenzar con la simulación.

Para la simulación se pueden resaltar cuatro puntos importantes: 1. Botón de play para iniciar la simulación. 2. Cada pin del microcontrolador tiene un indicador que muestra su nivel lógico en cada instante de la simulación. Se puede como va cambiando con la ejecución del programa, asi como el Led del circuito. 3. El reloj de la simulación. Es muy importante tener en cuenta que la velocidad a la cual se simula el programa no es exactamente la velocidad real del circuito, es así que puede parecer que el parpadeo del Led es un poco lento en el programa, pero al mirar el reloj de la simulación se puede ver como efectivamente cambia su estado cada segundo.

Finalmente otra de las opciones más interesantes del Proteus es el osciloscopio, el cual permite ver las señales que se manejan en el circuito junto con la simulación. Esta y otras opciones interesantes se pueden ver en el ícono Virtual Instruments Mode. PROGRAMACIÓN Una vez se tiene el proyecto diseñado y simulado satisfactoriamente, el último paso es la programación física del micro. Para esto vamos a usar el PonyProg (Version 2.06f Beta para este caso). Una vez que abrimos el programa, lo primero es definir el micro que vamos a utilizar, ATmega8 en este caso, como se muestra en la figura. Una vez hecho esto, debemos definir el tipo de programador para que se ajuste al del plano que tenemos. Para esto se entra en Setup Interface Setup, y dar click en las opciones Parallel Port, Avr ISP I/O y puerto LPT1. Ahora, se debe CONECTAR el quemador y se le da la opción Probe, la cual verifica que el computador tenga acceso correcto al puerto y el quemador este bien montado. En caso que la prueba de un resultado negativo, se debe revisar el cableado del quemador y los permisos del puerto que tenga el Windows XP.

Una vez se tiene configurado el quemador de manera adecuada, se carga el archivo del programa que generamos Led.hex, accediendo a File Open Device File, o haciendo click en el ícono de la carpeta amarilla. Haciendo esto se muestra inmediatamente en el programa el contenido que va a ser programado en la memoria del micro, que corresponde al código que se hizo. Finalmente queda solo tener acceso físico al micro, para lo cual debemos tener el quemador junto con el microcontrolador alimentado de manera adecuada conectados al PC (Para esto se debe revisar el datasheet del micro utilizado para alimentar los pines de Vcc y de Gnd).

Lo primero que se debe hacer es borrar el contenido del micro, haciendo click en el ícono 1 de la figura o accediendo a Command Erase, para eliminar cualquier información que tuviere, y para comprobar que se tiene bien configurado el acceso al microcontrolador. En caso de recibir un error en este punto se deben revisar las conexiones y el microcontrolador. Una vez se ha borrado la información del micro, se le da click en el ícono 2 de la figura, o accediendo a Command Write Program (FLASH), para finalmente terminar con la programación de nuestro primer proyecto en un micro de ATMEL. Ya después lo único que resta es hacer el montaje con el LED (sin olvidar una resistencia en serie, normalmente de 220 ohm o más, para evitar cortos y daños en el micro) y verlo titilar.