Está en la página 1de 25

Microcontroladores de Atmel

Familia AVR

Ing. Marone Jos

Introduccin: Historia
Los AVR son una familia de microcontroladores RISC de Atmel. La arquitectura de los AVR fue concebida por dos estudiantes en el or!egian Institute of "ec#nolog$% $ posteriormente refinada $ desarrollada en Atmel or!a$% la empresa subsidiaria de Atmel% fundada por los dos arquitectos del c#ip. &l acronimo AVR fue reportado como Ad'anced Virtual RISC% pero #a$ 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
#ttp),,doru.info,pro-ects,#dl,pa'r,inde..#tml

Introduccin:
&l AVR fue dise(ado desde un comien/o para la e-ecuci0n eficiente de c0digo C compilado. 1or lo tanto% algunas instrucciones tales como 2suma inmediata2 32add immediate2 en ingls4 faltan% $a que la instrucci0n 2resta inmediata2 32substract immediate2 en ingls4 con el complemento dos puede ser usada como alternati'a. &l set de instrucciones de los AVR es m5s regular que el de la ma$or6a de los microcontroladores de 78bit 3por e-emplo% los 1IC4. Sin embargo% no es completamente ortogonal)
Los registros punteros 9% : $ ; tienen capacidades de direccionamiento diferentes entre s6. Los registros < al => tienen diferentes capacidades de direccionamiento que los registros =? al @=. Las registros de I,A < al @= tienen distintas caracter6sticas que las posiciones @B al ?@. La instrucci0n CLR afecta los 2flag2% mientras que la instrucci0n S&R no lo #ace% a pesar de que parecen ser instrucciones complementarias 3de-ar todos los bits en =% $ de-ar todos los bits en < respecti'amente4.

Familia AVR
La familia de microcontroladores AVR es mu$ numerosa% inclu$e C= dispositi'os que comparten el nDcleo% pero difieren en recursos. 1or e-emplo el atemega7)

Arquitectura - Encapsulados

CPU (Core)
1ara ma.imi/ar el rendimiento $ paralelismo% el AVR usa una arquitectura Ear'ard F con memorias $ buses separados para instrucciones $ datos. Las instrucciones en la memoria de 1rograma son e-ecutadas con una segmentaci0n de dos etapas. Mientras una instrucci0n est5 siendo e-ecutada% la siguiente es pre8capturada de la memoria de programa 3fetc#ing4. &l Arc#i'o de Registros contiene @B registros de prop0sito general de 7 bits% #abilitados para un acceso r5pido. &l AVR fue dise(ado desde un comien/o para la e-ecuci0n eficiente de c0digo C compilado. 1or lo tanto% algunas instrucciones tales como 2suma inmediata2 32add immediate2 en ingls4 faltan% $a que la instrucci0n 2resta inmediata2 32substract immediate2 en ingls4 con el complemento dos puede ser usada como alternati'a.

Arquitectura de la CPU

CPU (Core)
Seis de los @B registros pueden ser usados como apuntadores de =? bits para direccionamiento indirecto en el espacio de datos% #abilitando c5lculos de direcciones eficientes. Gno de estos apuntadores tambin puede usarse como apuntador para tablas de bDsqueda 3looH up tables4 en la memoria de programa. 1ara ello% estos registros se denominan 9% : $ ;. Iespus de una operaci0n aritmtica% el registro de &stado 3Status Register4 es actuali/ado% para refle-ar informaci0n acerca de la operaci0n. La ma$or6a de instrucciones AVR tienen un formato en una palabra de =?8bits. &n un ciclo de relo- se pueden leer B registros que funcionen como operandos para la ALG% que se realice la operaci0n $ el resultado quede disponible para escribirse en uno de esos registros.

CPU (Core)
1ara la e-ecuci0n% la duraci0n del ciclo es suficiente para permitir la lectura de registros% la operaci0n de la ALG $ la escritura en el registro destino.

Mapa de Memoria

Iesde = a B>?J

"oda la memoria de datos se puede direccionar directamente

Mapa de Memoria

Memoria de programa
&spacio continuo de memoria Flas# cu$o tama(o 'aria entre procesadores% para el A"Mega 7 es de 7 Jb$tes% organi/ados como KJ . =? bits. Soporta #asta =<%<<< ciclos de escritura,borrado. La memoria se puede particionar en una secci0n para aplicaci0n $ una secci0n de arranque% donde podr6a mane-arse un cargador para auto programaci0n
3Boot Loader Support Read-WhileWrite Self-programming4.

Memoria de Programa: (IRQs)


&n el espacio de almacenamiento se inclu$en a los Vectores de Interrupciones% iniciando en la direcci0n L<<<. &l nDmero de 'ectores% en la familia AVR% 'aria de procesador a procesador% en funci0n de los recursos e.istentes. Gn programa deber6a iniciar en una ubicaci0n% mas all5 de estos 'ectores. 3r-mp Reset4

Memoria de dato
&s un espacio de ==B< localidades de 7 bits e inclu$en)
8 Gn con-unto de @B localidades 3Registros4. 8 ?K Registros I , A 31uertos% configuraci0n de recursos% etc4. 8 =<BK localidades de prop0sito general. 3RAM4

Aptimi/ado para el repertorio de instrucciones AVR.

Son accedidos mediante las instrucciones I $ AG"

Memoria de dato (Registros I/O)


La arquitectura asegura el estado de los registros luego de un reset.
8 Mas info en el datas#eet
AJAMMM Gna rutina de atenci0n a interrupciones debe terminar con la instrucci0n R&"I% la cual recupera el 'alor de la pila para el 1C .

Memoria de dato (EEPROM)


La memoria &&1RAM est5 en un espacio independiente $ se requiere del uso de @ registros I,A para su acceso)

Inicializacin
&l A"mega7 tiene cuatro fuentes de Iniciali/aci0n 3Reset4
Power-on Reset. &l MCG es iniciali/ado cuando el 'olta-e de la fuente est5 por aba-o del 'olta-e de umbral de encendido 3V1A"4. Reset Externo. &l MCG es iniciali/ado cuando un ni'el ba-o est5 presente en la terminal R&S&" por un tiempo ma$or que la longitud m6nima del pulso. Watchdog Reset. &l MCG es iniciali/ado cuando el Natc#dog "imer est5 #abilitado $ su periodo termina. Brown-out Reset. &l MCG es iniciali/ado cuando el detector de reducci0n de 'olta-e est5 #abilitado $ el 'olta-e VCC de la fuente 'a por deba-o del umbral establecido 3VOA"4.

Gna 'e/ que el MCG se recupera de una condici0n de Reset% espera un tiempo de establecimiento 3"out F con un 'alor t6pico de K ms4% antes de recuperar al sistema% para garanti/ar que los registros tienen su 'alor inicial.

Pila de programa
La pila es implementada en el espacio de prop0sito general 3RAM4. &s usada para almacenamiento temporal de 'ariables 3instrucciones 1GSE $ 1A14 o durante la llamada de subrutinas o el mane-o de interrupciones. &l registro S1 es el apuntador al tope de la pila. Realmente el S1 se compone de B registros% para la parte alta 3S1E4 $ para la parte ba-a 3S1L4% esto para direccionar al espacio completo de memoria. La pila tiene un crecimiento #acia aba-o% es decir% de las direcciones altas de memoria a las direcciones ba-as. Iespus de un reset% el apuntador de 1ila tiene el 'alor de <.<<<<% por lo que debe ser iniciali/ado dentro del programa 3con <.<K?< para A"Mega74% para que realice un almacenamiento dentro de un espacio '5lido.

Registro de Estado

Puertos de Entrada/Salida
1ara cada puerto se mane-an tres registros% dentro del espacio de registros I,A)
Gn registro de lectura,escritura sobre un lact#% conectado a la terminal del puerto 31AR".4. Gn registro de lectura,escritura que define la direcci0n del puerto 3IIR.4. Las direcciones pueden configurarse de manera independiente% para cada terminal.

= F Salida < F &ntrada Gn registro solo de lectura% para #acer lecturas directas en las terminales de los puertos 31I .4.
Muc#o Cuidado con el se(or 1I . in RD,PINA

Puertos de Entrada/Salida
Si en 1AR"..n se escribe un = l0gico cuando la terminal es configurada como entrada% el resistor de pull8up es acti'ado. 1ara anular al resistor de pull8up% se debe escribir un < en 1AR"..n o la terminal se debe configurar como salida 3suponiendo que el bit 1GI tiene <4. Las terminales est5n en un treestate cuando una condici0n de reset llega a estar acti'a% aDn si no #a$a se(al de relo-. Si en 1AR".n se escribe un uno l0gico cuando la terminal se configura como salida% en 1I ..n se tendr5 un ni'el alto. Si se escribe un cero% se tendr5 un ni'el ba-o. ormalmente% el estado con el pull8up #abilitado es aceptable% en un ambiente de alta impedancia no se notar5 la diferencia entre un ni'el alto $ el pull8up. Si este no es el caso% con el bit 1GI del registro SFIAR se pueden des#abilitar los pull8ups en todos los puertos. Ver manual para conmutar entre estados treestate $ salida en alto.

CLOCK
Se tienen diferentes fuentes para mane-ar al oscilador interno $ a la 'e/% la se(ales de relo- se distribu$en por los diferentes m0dulos)

Consumo/Modos Sleep
Los modos SL&&1 #abilitan a la aplicaci0n a apagar m0dulos sin usar en el MCG $ por lo tanto% a#orrar energ6a. &l AVR tiene > o ? modos SL&&1 $ para entrar en alguno de ellos% el bit S& 3SL&&1 enable4 del registro MCGCR 3MCG Control Register4 debe ponerse en alto.

Los bits SMB% SM= $ SM< de MCGCR determinan el modo)

Consumo/Modos Sleep

Referencias y a la Prctica.
Sitio oficial de Atmel)
15gina de AVR en Atmel

1ortales% foros)
AVRFreaHs Puia AVR Mi recomendado AVROeginners 1reguntarle a pepe que tiene boc#aQ.

Iesarrollo)
Referencias de NiHipedia