Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una...

25
Microcontroladores de Atmel Familia AVR Ing. Marone José

Transcript of Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una...

Page 1: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Microcontroladores de Atmel

Familia AVR

Ing. Marone José

Page 2: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Introducción: Historia

� Los AVR son una familia de microcontroladores RISC de Atmel.

� La arquitectura de los AVR fue concebida por dos estudiantes en el Norwegian Institute of Technology, y posteriormente refinada y desarrollada en Atmel Norway, la empresa subsidiaria de Atmel, fundada por los dos arquitectos del chip.

� El acronimo AVR fue reportado como Advanced Virtual RISC, pero hay rumores de que se debe a sus diseñadores: Alf and Vegard [RISC]. Aunque Atmel dice que no se refiere a nada particular

� Mas info sobre la arquitectura http://doru.info/projects/hdl/pavr/index.html

Page 3: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Introducción:

� El AVR fue diseñado desde un comienzo para la ejecución eficiente de código C compilado. Por lo tanto, algunas instrucciones tales como 'suma inmediata' ('add immediate' en inglés) faltan, ya que la instrucción 'resta inmediata' ('substract immediate' en inglés) con el complemento dos puede ser usada como alternativa.

� El set de instrucciones de los AVR es más regular que la de la mayoría de los microcontroladores de 8-bit (por ejemplo, los PIC). Sin embargo, no es completamente ortogonal:� Los registros punteros X, Y y Z tienen capacidades de

direccionamiento diferentes entre sí.� Los registros 0 al 15 tienen diferentes capacidades de

direccionamiento que los registros 16 al 31.� Las registros de I/O 0 al 31 tienen distintas características que las

posiciones 32 al 63.� La instrucción CLR afecta los 'flag', mientras que la instrucción

SER no lo hace, a pesar de que parecen ser instrucciones complementarias (dejar todos los bits en 1, y dejar todos los bits en 0 respectivamente).

Page 4: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Familia AVR

La familia de microcontroladores AVR es muy numerosa, incluye 71 dispositivos que comparten el núcleo, pero difieren en recursos.

� Por ejemplo el atemega8:

Page 5: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Arquitectura - Encapsulados

Page 6: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

CPU (Core)

� Para maximizar el rendimiento y paralelismo, el AVR usa 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 instrucción está siendo ejecutada, la siguiente es pre-capturada de la memoria de programa (fetching).

� El Archivo de Registros contiene 32 registros de propósito general de 8 bits, habilitados para un acceso rápido.

� El AVR fue diseñado desde un comienzo para la ejecución eficiente de código C compilado. Por lo tanto, algunas instrucciones tales como 'suma inmediata' ('add immediate' en inglés) faltan, ya que la instrucción 'resta inmediata' ('substract immediate' en inglés) con el complemento dos puede ser usada como alternativa.

Page 7: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Arquitectura de la CPU

Page 8: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

CPU (Core)

� Seis de los 32 registros pueden ser usados como apuntadores de 16 bits para direccionamiento indirecto en el espacio de datos, habilitando cálculos de direcciones eficientes. Uno de estos apuntadores también puede usarse como apuntador para tablas de búsqueda (look up tables) en la memoria de programa. Para ello, estos registros se denominan X, Y y Z.

� Después de una operación aritmética, el registro de Estado (Status Register) es actualizado, para reflejar información acerca de la operación.

� La mayoría de instrucciones AVR tienen un formato en una palabra de 16-bits.

� En un ciclo de reloj se pueden leer 2 registros que funcionen como operandos para la ALU, que se realice la operación y el resultado quede disponible para escribirse en uno de esos registros.

Page 9: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

CPU (Core)

� Para la ejecución, la duración del ciclo es suficiente para permitir la lectura de registros, la operación de la ALU y la escritura en el registro destino.

Page 10: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Mapa de Memoria

Desde 1 a 256K

Toda la memoria de

datos se puede

direccionar directamente

Page 11: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Mapa de Memoria

Page 12: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Memoria de programa

� Espacio continuo de memoria Flash cuyo tamaño varia entre procesadores, para el ATMega 8 es de 8 Kbytes, organizados como 4K x 16 bits. Soporta hasta 10,000 ciclos de escritura/borrado.

� La memoria se puede particionar en una sección para aplicación y una sección de arranque, donde podría manejarse un cargador para auto programación

(Boot Loader Support – Read-While-Write Self-programming).

Page 13: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Memoria de Programa: (IRQ´s)

� En el espacio de almacenamiento se incluyen a los Vectores de Interrupciones, iniciando en la dirección $000.

� El número de vectores, en la familia AVR, varia de procesador a procesador, en función de los recursos existentes. Un programa debería iniciar en una ubicación, mas allá de estos vectores. (rjmp Reset)

Page 14: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

� Es un espacio de 1120 localidades de 8 bits e incluyen:- Un conjunto de 32 localidades (Registros).- 64 Registros I / O (Puertos, configuración de recursos, etc).

- 1024 localidades de propósito general. (RAM)

Optimizado para el

repertorio de

instrucciones AVR.

Son accedidos mediante

las instruccione

s IN yOUT

Memoria de dato

Page 15: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

� La arquitectura asegura el estado de los registros luego de un reset.- Mas info en el datasheet

Memoria de dato (Registros I/O)

OJO!!! Una rutina de atención a

interrupciones debe terminar con la

instrucción RETI, la cual recupera el valor de la

pila para el PC .

Page 16: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

� La memoria EEPROM está en un espacio independiente y se requiere del uso de 3 registros I/O para su acceso:

Memoria de dato (EEPROM)

Page 17: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Inicialización� El ATmega8 tiene cuatro fuentes de Inicialización

(Reset)� Power-on Reset. El MCU es inicializado cuando el voltaje de la

fuente está por abajo del voltaje de umbral de encendido (VPOT).� Reset Externo. El MCU es inicializado cuando un nivel bajo está

presente en la terminal RESET por un tiempo mayor que la longitud mínima del pulso.

� Watchdog Reset. El MCU es inicializado cuando el Watchdog Timer está habilitado y su periodo termina.

� Brown-out Reset. El MCU es inicializado cuando el detector de reducción de voltaje está habilitado y el voltaje VCC de la fuente va por debajo del umbral establecido (VBOT).

� Una vez que el MCU se recupera de una condición de Reset, espera un tiempo de establecimiento (Tout –con un valor típico de 4 ms), antes de recuperar al sistema, para garantizar que los registros tienen su valor inicial.

Page 18: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Pila de programa� La pila es implementada en el espacio de propósito general

(RAM).� Es usada para almacenamiento temporal de variables

(instrucciones PUSH y POP) o durante la llamada de subrutinas o el manejo de interrupciones.

� El registro SP es el apuntador al tope de la pila. Realmente el SP se compone de 2 registros, para la parte alta (SPH) y para la parte baja (SPL), esto para direccionar al espacio completo de memoria.

� La pila tiene un crecimiento hacia abajo, es decir, de las direcciones altas de memoria a las direcciones bajas.

� Después de un reset, el apuntador de Pila tiene el valor de 0x0000, por lo que debe ser inicializado dentro del programa (con 0x0460 para ATMega8), para que realice un almacenamiento dentro de un espacio válido.

Page 19: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Registro de Estado

Page 20: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Puertos de Entrada/Salida� Para cada puerto se manejan tres registros,

dentro del espacio de registros I/O:� Un registro de lectura/escritura sobre un lacth,

conectado a la terminal del puerto (PORTx).� Un registro de lectura/escritura que define la

dirección del puerto (DDRx). Las direcciones pueden configurarse de manera independiente, para cada terminal.

� 1 – Salida� 0 – Entrada� Un registro solo de lectura, para hacer

lecturas directas en las terminales de los puertos (PINx).

Mucho Cuidado con

el señor PINx

in RD,PINA

Page 21: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Puertos de Entrada/Salida� Si en PORTx.n se escribe un 1 lógico cuando la terminal es

configurada como entrada, el resistor de pull-up es activado. Para anular al resistor de pull-up, se debe escribir un 0 en PORTx.n o la terminal se debe configurar como salida (suponiendo que el bit PUD tiene 0).

� Las terminales están en un treestate cuando una condición de reset llega a estar activa, aún si no haya señal de reloj.

� Si en PORTxn se escribe un uno lógico cuando la terminal se configura como salida, en PINx.n se tendrá un nivel alto. Si se escribe un cero, se tendrá un nivel bajo.

� Normalmente, el estado con el pull-up habilitado es aceptable, en un ambiente de alta impedancia no se notará la diferencia entre un nivel alto y el pull-up. Si este no es el caso, con el bit PUD del registro SFIOR se pueden deshabilitar los pull-ups en todos los puertos.

� Ver manual para conmutar entre estados treestate y salida en alto.

Page 22: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

CLOCK� Se tienen diferentes fuentes para manejar al oscilador interno

y a la vez, la señales de reloj se distribuyen por los diferentes módulos:

Page 23: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Consumo/Modos Sleep� Los modos SLEEP habilitan a la aplicación a apagar

módulos sin usar en el MCU y por lo tanto, ahorrar energía.

� El AVR tiene 5 o 6 modos SLEEP y para entrar en alguno de ellos, el bit SE (SLEEP enable) del registro MCUCR (MCU Control Register) debe ponerse en alto.

� Los bits SM2, SM1 y SM0 de MCUCR determinan el modo:

Page 24: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Consumo/Modos Sleep

Page 25: Microcontroladores de Atmel - Facultad de Ciencias … · Introducción: Historia Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida

Referencias y a la Práctica….

� Sitio oficial de Atmel:� Página de AVR en Atmel

� Portales, foros:� AVRFreaks� Guia AVR� Mi recomendado AVRBeginners� Preguntarle a pepe que tiene bocha….

� Desarrollo:� Referencias de Wikipedia