CURSO
MICROCONTROLADORES AVR
CAPITULO 1
-introduccin a microcontroladores
-arquitectura microcontrolador
-Diferencia entre microcontrolador y microprocesador
-Descripcin de los mdulos del atmega8
-Registros del microcontrolador DDRX y PORTX
-Instalacin de atmel studio
-crear un proyecto en atmel studio
DEFINICIN DE MICROCONTROLADOR Y
MICROPROCESADOR
Recordando lo aprendido en el curso pasado, se debe tener en cuenta la
diferencia entre un microprocesador y microcontrolador. Un microprocesador
(como el que tenemos en nuestra PC) es la parte principal o el cerebro de un
sistema. Un microcontrolador; en cambio; es un dispositivo que contiene
un microprocesador en su interior y adems, posee memoria y perifricos.
Por lo tanto un microcontrolador en s mismo es un sistema completo.
El microcontrolador con el que se trabajar, ser el Atmega 8 de la familia
AVR de ATMEL. Este microcontrolador AVR posee 1kbyte de flash y 512
bytes de memoria EEPROM
Configuracin de pines del atmega8
El Atmega 8 cuenta con los siguientes mdulos internos:
Conversor anlogo digital
USART
Temporizadores
SPI e I2C
Los Registros de los microcontroladores AVR
Los registros internos de un microcontrolador vienen a ser espacios de
memoria que se encuentran dentro de su CPU, de manera que puedan
acceder a ellos en forma rpida y frecuente.
Registros de operacin
DDRx Data Direction Register
PORTx Pin Output Register
PINx Pin Input Register
La x debe ser reemplazada por el puerto que vamos a utilizar. Por ejemplo,
el atmega 8 cuenta con 3 puertos GPIO (puerto b,c y d).
REGISTRO DDRX
El registro DDRX nos permite seleccionar si los pines del puerto sern
entradas o salidas.
Los bits menos significativos se encuentran agrupados en el nible bajo
( ddx0, ddx1, ddx2, ddx3).
Los bits ms significativos se encuentran agrupados en el nible alto ( ddx4,
ddx5, ddx6, ddx7).
Inicialmente el registro DDRX vale 0b00000000.
REGISTRO PORTX
El registro PORTX determina si los pines de salida estn en estado alto o
bajo. Por tanto, una vez definidos que pines sern salidas mediante el
puerto DDRX, necesitamos enviar un valor de salida por dichos pines (nivel
alto o bajo) con el registro PORTX.
REGISTRO PINX
El registro PINX se encarga de leer los valores que estn en los pines de
entrada.
Para la programacin en lenguaje c de este microcontrolador usaremos
ATMEL STUDIO 6 en combinacin con el compilar AVRGCC.
Atmel Studio 6 es un entorno de desarrollo integrado para poder editar
nuestros programas. La ventaja de trabajar con este entorno es que nos
permite trabajar tanto en lenguaje c como en lenguaje ensamblador. Para
programar utilizando lenguaje ensamblador se utiliza AVRASM (el
compilador para lenguaje ensamblador) y para programar en lenguaje c se
utiliza el AVRGCC.
Es importante mencionar que el IDE Atmel Studio 6 nos permite trabajar con
microcontroladores Atmel de diferentes gamas o arquitecturas).
Crear un proyecto en Atmel Studio 6
Para crear un proyecto en Atmel Studio, hacemos click en el men file, new,
project
Luego de ello, elegimos realizar un proyecto en lenguaje c. Para ello:
Seleccionamos GCC Executable Project C/C++.
Elegimos un nombre para nuestro proyecto: en este caso elegimos
programa1.
Seleccionamos la ubicacin de nuestro proyecto. En este caso estar
dentro de una carpeta llamada proyecto1.
Luego de ello, nos aparecer una ventana para seleccionar el
microcontrolador que utilizaremos para nuestro proyecto. En este caso
elegimos el atmega 8.
Una vez realizados los pasos anteriores, nos aparecer la siguiente pantalla.
Como se puede observar, se ha creado la estructura general de un
programa en c.
Se puede observar unos comentarios en la parte superior. Cada vez que
hagamos un comentario aparecer de color verde.
Luego se observa la librera avr/io.h, la cual se incluye con la librera
#include
De ah vemos la funcin principal main y un lazo infinito while(1).
Una vez escrito nuestro cdigo, damos click en compilar para verificar que
la escritura del cdigo haya sido correcta. Si la compilacin fue correcta nos
saldr un mensaje en la ventana de salida: Build succeeded.
Finalmente, luego de que la compilacin haya sido correcta hacemos click
en build programa1 para que se creen los archivos de salida del proyecto y
as poder grabar el programa en el microcontrolador y poder realizar
simulaciones.
Una vez que el proyecto ha sido construido, en la ventana Solution Explorer
aparecern los archivos de salida.
Archivo para realizar simulaciones paso
Archivo para grabar el programa final
en el microcontrolador y tambin para
simulaciones
Los archivos de salida ms importantes que se generan son el .hex y el
.elf.
El archivo .hex es el que contiene el programa que ser grabado en el
microcontrolador, mientras que el archivo .elf es el que servir para llevar a
cabo la simulacin de nuestro circuito.
Programa Nmero 1:
Realizar la simulacin en Proteus del encendido de un led conectado al
terminal PB0 del microcontrolador Atmega 8.
Solucin
Primero debemos definir en nuestro programa la velocidad a la cual
trabajaremos. Para nuestro caso trabajaremos a 1 MHz, por lo tanto
debemos escribir las siguientes directivas antes de importar las libreras de
trabajo.
Luego de ello procedemos a importar la librera avr/io.h e til/delay.h con la
directiva #include
Para poder encender un led por el terminal PB0 del atmega 8 es necesario:
Declarar como salida el terminal PB0
Escribir un 1 lgico por el terminal PB0, de manera que el led pueda
encenderse.
El registro DDRX nos sirve para poder declarar como entradas o salidas los
puertos y pines del microcontrolador. Si queremos que un pin especifico se
comporte como una salida escribimos un 1 y si queremos que sea una
entrada escribimos 0. Por lo tanto deberamos escribir en el puerto DDRB:
Una vez declarado el pin PB0 como salida, debemos escribir que valor
deseamos tener a la salida. Para escribir valores por los puertos de salida
utilizamos el registro PORTX. Para este ejemplo, en PORTB deberamos
escribir:
Entonces, para utilizar los pines del microcontrolador como salidas,
debemos primero declararlas mediante el registro DDRX y luego colocar el
valor que deseamos a la salida (1 o 0) mediante el registro PORTX.
El programa quedara de la siguiente manera:
Hacemos click en compile y luego en build.
Simulacin con Proteus del Programa 1
Proteus Isis es un entorno de simulacin amigable para circuitos con
microcontroladores. Lo primero que debemos hacer es aadir los
componentes que necesitamos. En este caso seran: un ATMEGA8, una
resistencia de 330 Ohmios y un led.
Una vez diseado el circuito en Proteus, procedemos a insertar el arhivo
.hex para la simulacin. Para ello hacemos doble click en la imagen del
microcontrolador.
Hacemos
click aqu y
buscamos el
archivo
.hex en la
carpeta de
nuestro
proyecto
Nos saldr la ventana Edit Component, y en la opcin Program file elegimos
la direccin en donde se encuentra el cdigo .hex generado al construir el
proyecto en Atmel Studio 6.
Luego de ello, hacemos click en play.
Damos click en play
Luego de ello, el led se encender.
Ahora, si deseamos simular paso por paso, lo que demos hacer es insertar el
archivo .elf
Se hace
click aqu y
se busca el
archivo .elf
en la
carpeta
donde est
el proyecto
Una vez realizado esto, damos click en step.
Damos click en step
Una vez realizado esto, vamos a debug-> watch window para poder ver
cmo cambian el valor de los registros en la simulacin.
Hacemos click
aqu
Una vez hecho click , aparecer una ventana. Para poder aadir watches a
la ventana hacemos click dentro de ella y ponemos add tem by adress.
Hacemo
s click
aqu
Ya que estamos utilizando los registros DDRB Y PORTB, los podemos
visualizar para ver los cambios que presentan durante el programa.
Seleccionamos AVR/IO Registers
Luego seleccionamos los registros DDRB y PORTB para ver sus cambios.
Una vez aadidos los puertos, se vern de esta manera:
Tambin se puede visualizar el valor de los puertos en binario.
Luego de que hemos configurado los watches para poder ver los registros
DDRB y PORTB, hacemos click nuevamente en step.
Damos nuevamente en step
click en step
Cuando el Led est apagado, podemos ver que el registro PORTB vale
0b00000000
Volvemos a presionar el botn Step.
Cuando el Led est prendido, podemos ver que el registro PORTB vale
0b000000001