Está en la página 1de 20

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