PDF de programación - Microcontroladores de ATMEL

Imágen de pdf Microcontroladores de ATMEL

Microcontroladores de ATMELgráfica de visualizaciones

Publicado el 2 de Agosto del 2017
1.316 visualizaciones desde el 2 de Agosto del 2017
664,9 KB
25 paginas
Creado hace 11a (03/10/2012)
Microcontroladores de Atmel

Familia AVR

Ing. Marone José

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

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 el 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).

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:

Arquitectura - Encapsulados

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.

Arquitectura de la CPU

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.

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.

Mapa de Memoria

Desde 1
a 256K

Toda la

memoria de

datos se puede

direccionar
directamente

Mapa de Memoria

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).

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)

Memoria de dato

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
instrucciones

IN y
OUT

Memoria de dato (Registros I/O)

La arquitectura asegura el estado de los registros luego

de un reset.
- Mas info en el datasheet

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 .

Memoria de dato (EEPROM)

La memoria EEPROM está en un espacio independiente

y se requiere del uso de 3 registros I/O para su
acceso:

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.

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.

Registro de Estado

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

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.

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:

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:

Consumo/Modos Sleep

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
  • Links de descarga
http://lwp-l.com/pdf6012

Comentarios de: Microcontroladores de ATMEL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad