Los AVR son una familia de microcontroladores 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% 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
Introducción:
&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 inglés4 faltan% $a que la instrucci0n 2resta inmediata2 32substract immediate2 en inglés4 con el complemento dos puede ser usada como alternati'a. &l set de instrucciones de los AVR es m5s regular que la 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, < al @= tienen distintas caracter6sticas que que las posiciones @B al ?@. La instrucci0n CLR afecta los 2flag2% mientras mi entras que la instrucci0n S&R no lo #ace% a pesar de que parecen ser instruccione i nstrucciones s complementarias 3de-ar 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 = dispositi'os que comparten el nDcleo% pero difieren en recursos. 1or e-emplo el atemega7 atemega7))
Arquitectura - Encapsulados
CPU (Core)
1ara maimi/ar el rendimiento $ paralelismo% el AVR usa una arquitectura Ear'ard con memori memorias as $ buses buses separados para instrucciones $ datos. Las instrucciones en la memoria de 1rograma son e-ecutadas con una segmentaci0n de dos etapas. 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 #abilitados para un acceso r5pido. &l AVR fue dise(ado desde un comien/o para la e-ecuci0n eficiente de c0digo C compilado. compilado . 1or lo tanto% algunas instrucciones tales como 2suma inmediata2 32add immediate2 en inglés4 faltan% $a que la instrucci0n 2resta inmediata2 32substract immediate2 en inglés4 con el complemento dos puede ser usada como alternati'a.
Arquitectura de la CPU
CPU (Core)
Seis de los @B registros 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 también puede usarse como apuntador para tablas de bDsqueda 3looH up tables4 en la memoria de programa. 1ara ello% estos registros se denominan 9% : $ ;. espués de una operaci0n aritmética% el registro de &stado 3Status 3Status Register4 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 =?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
esde = a B>?
"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 procesadores 7 es de 7 b$tes% organi/ados como K =? 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
Loader Support Support – Read-While Read-While-3Boot Loader Write Self-programming4.
Memo Me mori ria a de Pr Prog ogra rama ma: (IRQ´s)
&n el espacio de almacenamiento se inclu$en a los Vectores de Interrupciones% Interrupciones% iniciando en la direcci0n <<<. &l nDmero de 'ectores% en la familia AVR% 'aria de procesador a procesador% en funci0n de los recursos eistentes. Gn programa deber6a iniciar en una ubicaci0n% mas all5 de estos 'ectores. 3r-mp Reset4 Reset4
Memoria de dato
&s un espacio de ==B< localidades de 7 bits e inclu$en) 8 Gn con-un con-unto to de de @B localida localidades des 3Registros 3Registros4. 4. 8 ?K Regis Registro tros s I , 31uertos 1uertos%% configuraci0n de recursos% recursos% etc etc4. 4. 8 =
ptimi/ado para el repertorio de instruccione s AVR.
Son accedidos mediante las instruccione s I $
Memoria de dato (Registros I/O)
La arquitectura asegura el estado de los registros luego de un reset. 8 Mas info info en el data datas#e s#eet et J Gna rutina de atenci0n a interrupciones debe terminar con la instrucci0n R&"I R&"I%% la cual recupera el 'alor de la pila para el 1C .
Memoria de dato (EEPROM)
La memoria &&1RM est5 en un espacio independiente independiente $ se requiere del uso de @ registros I, para su acceso)
Inicialización
&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 3V1"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 3VO"4.
Gna 'e/ que el MCG se recupera de una condici0n de Reset% espera un tiempo de establecimiento establecimiento 3"out 3 "out 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 3RAM RAM4. 4. &s usada para almacenamiento temporal de 'ariables 3instrucciones 1GSE $ 114 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 completo de memoria. La pila tiene un crecimiento #acia aba-o% aba-o% es decir% de las direcciones altas de memoria a las direcciones ba-as. ba-as. espués de un reset% el apuntador de 1ila tiene el 'alor de <<<<<% por lo que debe ser iniciali/a iniciali/ado do dentro del programa 3con <
Registro de Estado
Puertos de Entrada/Salida
1ara cada puerto se mane-an tres registros% dentro del espacio de registros I,)
Gn registro de lectura,escritura sobre un lact#% conectado a la terminal del puerto 31R" 3 1R"4. 4. Gn registro de lectura,escritura que define la direcci0n del puerto 3R 3 R4. 4. Las direcciones pueden configurarse configurarse de manera independiente% para cada terminal.
= Salida < &ntrada Gn registro solo de lectura% para #acer lecturas directas en las terminales de los puertos 31I 31I4. 4.
Muc#o Cuidado con el se(or 1I in RD,PINA
Puertos de Entrada/Salida
Si en 1R".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 1R".n o la terminal se debe configurar como salida 3suponiendo que el bit 1G 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 1R"n se escribe un uno l0gico cuando la terminal se configura como salida 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 1G del registro SFIR se pueden des#abilitar 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 Práctica….
Sitio oficial de Atmel)
1ortales% foros)
15gina de AVR en Atmel
AVRFreaHs Puia AVR Mi recomendado AVROeginners 1reguntarle a pepe que tiene boc#aQ.