You are on page 1of 8

LABORATORIO DE MICROPROCESADORES II

LABORATORIO N°1
MICROCONTROLADOR ATMEGA 32

1. Objetivos: El estudiante al finalizar este laboratorio:


a. Programa, ejecuta y depura programas en el entorno de
desarrollo AVR Studio.
b. Conoce y utiliza los registros de memoria generales, registros
especiales y memoria interna del microcontrolador ATMEGA 32.
c. Desarrolla programas utilizando los puertos del microcontrolador
configurados en modo digital.

2. Fundamento teórico:
Los microcontroladores AVR son una familia de microcontroladores de
tecnología RISC de la empresa ATMEL. La arquitectura fue diseñada por
dos estudiantes del Instituto de Tecnología de Noruega y cuenta con
mucha aceptación dentro de los sistemas embebidos ya que su diseño
es simple y su programación es fácil.
Los microcontroladores AVR se fabrican en los siguientes modelos:

 ATxmega: procesadores muy potentes con 16 a 384 kB de memoria


flash programable, encapsulados de 44, 64 y 100 pines.
 ATmega: microcontroladores AVR grandes con 4 a 256 kB
de memoria flash programable, encapsulados de 28 a 100
pines, conjunto de instrucciones extendido.
 ATtiny: pequeños microcontroladores AVR con 0,5 a 8 kB
de memoria flash programable, encapsulados de 6 a 20 pines y un
limitado set de periféricos.
 AT90USB: ATmega integrado con controlador USB
 AT90CAN: ATmega con controlador de bus CAN
 Tipos especiales: algunos modelos especiales, por ejemplo, para el
control de los cargadores de baterías, pantallas LCD y los controles de
los motores o la iluminación.
 AT90S: tipos obsoletos, los AVRs clásicos

Refiriéndonos al CPU de los microcontroladores ATmega que nosotros


estudiaremos, estos utilizan una arquitectura HARVARD con memorias y
buses separados para instrucciones y datos.

Las instrucciones en la memoria de programa son ejecutadas con una


segmentación de dos etapas. Mientras una está siendo ejecutada la
siguiente es pre capturada de la memoria de programa.

El archivo de registro consta de 32 registros de propósito general de 8


bits habilitados para acceso rápido.
Seis de los 32 registros pueden ser utilizados como apuntadores de 16
bits para direccionamiento indirecto en el espacio de estados; estos
registros se denominan X, Y y Z.
Después de cada operación aritmética el registro de estado es
actualizado para reflejar información acerca de la operación.
La mayoría de las instrucciones del microcontrolador tienen un formato
de palabra de 16 bits.

2.1 Mapa de memoria de datos:

La memoria de datos está dividida en diferentes secciones los cuales


nombraremos a continuación:

1. Archivos de registro: Conformado por 32 registros de 8 bits cada


uno.
2. Registros de entrada salida: Conformado por 64 registros con
direcciones desde 0x20 hasta 0x5F en la memoria RAM interna.
3. Memoria SRAM interna: Varía en cantidad de entre 128 hasta 4
KBytes. Esta sección se utiliza como pila y memoria de propósito
general.
4. Memoria SRAM externa: Solo disponible en los
microcontroladores AVR de gran capacidad.
5. Memoria EEPROM: Memoria de datos no volátil La capacidad se
encuentra entre 64 Bytes hasta 4 KBytes. La memoria EEPROM
puede ser escrita 100000 veces.
Figura: Secciones de memoria de programa y datos, fuente:
Programming and customizing the AVR microcontroller, Gadre

2.2 Mapa de memoria de programa:

La memoria de programa es un espacio continuo de memoria por lo general


de tecnología FLASH. La capacidad de las memorias se escribe en Bytes, por
ejemplo el ATMEGA 8, tiene una capacidad de 8 KBytes organizados como
4K x 16 bits. La memoria de programa se puede particionar como una sección
para el programa del usuario y otra como un cargador para auto programación
(Boot loader).
En la memoria de programa también se incluyen los vectores de interrupción
que se inician en la dirección 0x0000. El número de vectores de interrupción
varía de procesador a procesador en función de los recursos del
microcontrolador.
A continuación damos un listado de las interrupciones del microcontrolador
AT90S8515:

Figura: Direcciones de interrupciones en el AT90S8515, fuente:


Programming and customizing the AVR microcontroller, Gadre
2.3 Archivos de registros y memoria de entrada y salida:

Los puertos o registros especiales en el AVR son los dispositivos de enlace


entre el CPU y los componentes periféricos del microcontrolador. El uso de
los registros nos permitirá leer y escribir en los periféricos.

Una sección fundamental de memoria dentro del microcontrolador es la


sección de memoria de entrada y salida. Es el conjunto de registros que
permiten el funcionamiento del microcontrolador, es decir puertos paralelos y
seriales, temporizadores, oscilador, memoria EEPROM y otros periféricos.
Existen 64 cada uno de los cuales tiene una dirección, tenemos a
continuación un resumen de estos registros:
2.4 Puertos de entrada y salida:

Todos los puertos del microcontrolador permiten modificar y leer el estado


lógico de cada uno de los pines de los puertos utilizando las instrucciones SBI
y CBI.
Son tres los registros utilizados para controlar los puertos del microcontrolador
ATMEGA: PORTX (registro de datos), DDRX (dirección de datos) y PINX
(lectura del estado lógico de datos). Este último es de solo lectura en tanto
que los dos primeros son de lectura y escritura.

En el uso de puertos y cualquier posición de memoria de Entrada y Salida es


muy útil el uso de las instrucciones IN y OUT.
La instrucción IN le indica a la CPU que cargue un byte de la memoria de
Entrada/Salida en un registro de propósito general (archivos de registro).

IN Rd, A

La instrucción OUT le indica al CPU que almacene el contenido de un registro


de propósito general en un registro de entrada/salida.

OUT A, Rd

2.5 Trabajo de laboratorio:

2.5.1 Códigos de prueba:

Comprobar el funcionamiento de los siguientes códigos utilizando el entorno


de desarrollo AVR Studio.
Programa 1: Suma el contenido de dos registros y muestra en el puerto B
configurado como salida:

Programa 2: Configura el puerto B como salida y realiza la conmutación de


todos los bits entre uno y cero lógico.

Programa 3: Configura los puertos B, C y D como salida y realiza la carga del


número 0x55 en los puertos.
Programa 4: Lee el estado lógico del puerto C (configurado como entrada) y
envía al puerto B como salida.

Programa 5: Conmuta el estado lógico de los bits del puerto B y entre cada
conmutación llama a una rutina de retardo.

2.5.2 Programas a ser presentados:

1. Desarrollar un programa para el microcontrolador ATMEGA 32 para


controlar un display de 7 segmentos conectado al puerto D
(configurado como salida). Los códigos digitales se introducirán a
través del puerto C (configurados los pines PORTC0 a PORTC3 como
entradas).
2. Desarrollar un programa para el microcontrolador ATMEGA 32 que
realice el conteo ascendente de los pulsos recibidos a través del pin
PORTC.0 (configurado como entrada). El conteo será visualizado a
través del puerto D (configurado como salida). El pin PORTC.1
(configurado como entrada) servirá para realizar el conteo descendente
de valores también visualizado en el puerto D.

You might also like