AVR: arquitectura RISC de microcontroladores Atmel con memoria flash
AVR: arquitectura RISC de Atmel con memoria flash integrada — microcontroladores de alto rendimiento, bajo consumo y programación flexible para proyectos embebidos e IoT.
La arquitectura del microcontrolador AVR fue desarrollada por Atmel en 1996. Se basa en la arquitectura de microcontroladores Harvard. El AVR fue una de las primeras familias de microcontroladores en utilizar la memoria flash en el chip para el almacenamiento de programas, a diferencia de la ROM programable de un solo uso, la EPROM o la EEPROM utilizadas por otros microcontroladores de la época. El uso de flash facilitó la reprogramación directa en placa (in-circuit) y aceleró el desarrollo y la producción de dispositivos embebidos.
Origen y nombre
El nombre AVR suele atribuirse a los ingenieros noruegos Alf-Egil Bogen y Vegard Wollan, y a la idea de que AVR significaría "Alf and Vegard RISC". Atmel, por su parte, en ocasiones ha promovido una interpretación comercial como Advanced Virtual RISC. En la práctica, lo importante es que se trata de una familia de núcleos RISC de 8 bits (con variantes y evoluciones posteriores) diseñada para eficiencia y simplicidad.
Características principales
- Arquitectura RISC de 8 bits: instrucciones simples y de longitud fija (principalmente de 16 bits), optimizadas para ejecución rápida.
- Arquitectura Harvard: memorias de programa y de datos separadas, lo que permite accesos simultáneos y mayor rendimiento.
- Memoria Flash on-chip: almacenamiento de programa reprogramable eléctricamente, facilitando actualizaciones y desarrollo.
- Banco de registros: 32 registros de propósito general de 8 bits directamente conectados a la ALU, que permiten operaciones entre registros en un solo ciclo.
- Pipeline sencillo: fetch/execute en dos etapas; mientras una instrucción se ejecuta, la siguiente se obtiene de la memoria de programa, lo que permite que la mayoría de las instrucciones se completen en un solo ciclo de reloj.
- Memoria de datos: SRAM para datos volátiles y EEPROM para almacenamiento no volátil de parámetros.
- Periféricos integrados: temporizadores/contadores, ADC, USART/UART, SPI, I²C (TWI), PWM, watchdog, comparadores analógicos, entre otros.
- Bajo consumo: modos de ahorro de energía y controles para reducir el consumo en aplicaciones con baterías.
- Manejo de interrupciones: sistema de vectores de interrupción rápido y eficiente, con prioridades básicas.
Comparación con MCS-51 (Intel 8051)
La familia MCS-51 (8051) utiliza un ciclo de máquina que dura típicamente 12 ciclos de reloj y muchas instrucciones requieren ese ciclo completo. En cambio, los microcontroladores AVR pueden ejecutar la mayoría de las instrucciones en un solo ciclo de máquina y, dado que el ciclo de máquina coincide con un ciclo de reloj, el rendimiento por ciclo de reloj del AVR resulta mucho mayor en operaciones típicas (hasta 12 veces en comparaciones directas para ciertas instrucciones sencillas en situaciones ideales).
Familias y variantes
- tinyAVR: dispositivos muy compactos con funciones básicas, orientados a aplicaciones sencillas y de bajo coste.
- megaAVR: la familia más conocida (incluye los ATmega usados en muchas placas Arduino), con más memoria y periféricos.
- XMEGA: orientada a rendimiento superior, más periféricos avanzados, DACs, ADCs de mayor resolución y mayor capacidad de DMA.
- AVR32: arquitectura de 32 bits desarrollada por Atmel; es distinta e incompatible con los AVR de 8 bits y tuvo un desarrollo paralelo (más orientada a aplicaciones de mayor rendimiento).
Herramientas, programación y depuración
- Compiladores y librerías: AVR-GCC y avr-libc son herramientas libres muy utilizadas; Atmel/Microchip ofrece Microchip Studio (anteriormente Atmel Studio) con integración completa.
- Programación in-circuit: mediante ISP (In-System Programming) usando herramientas como avrdude o programadores comerciales (AVRISP, USBasp, Atmel-ICE).
- Depuración: JTAG, debugWIRE y otras interfaces según la familia para depuración en circuito.
- Bootloaders: muchas placas (por ejemplo Arduino) usan bootloaders en flash que permiten cargar código por serie/USB sin un programador externo.
- Interfaces modernas: algunas familias modernas usan UPDI o similares para programación y depuración.
Aplicaciones típicas
Los AVR se emplean ampliamente en electrónica embebida: controladores industriales, dispositivos domésticos, sensores, dispositivos IoT sencillos, y especialmente en el mundo educativo y de prototipado gracias a su uso en placas Arduino (por ejemplo el ATmega328P). Su combinación de facilidad de programación, bajo coste, consumo reducido y buena documentación los hace muy populares tanto para hobbyistas como en aplicaciones comerciales.
Conclusión
La arquitectura AVR marcó un antes y un después en la microelectrónica de propósito general al incorporar memoria flash reprogramable en-chip y un diseño RISC optimizado para ejecución en un solo ciclo. Su familia evolutiva (tiny, mega, XMEGA, etc.), junto con un ecosistema de herramientas maduras, continúa siendo una opción sólida para proyectos de 8 bits donde prima la simplicidad, el coste y la eficiencia energética.

Atmel AVR ATmega8 en DIP de 28 pines.
Familias básicas
tinyAVR
- 0,5-8 kB de memoria de programa
- hasta 0,5 kB de SRAM
- hasta 0,5 kB EEPROM
- hasta 20 MHz
- Paquete de 6-32 pines
megaAVR
- 4-256 kB de memoria de programa
- 0,5-16kB SRAM
- 0,5-4 kB EEPROM
- hasta 20 MHz
- Paquete de 20 a 100 pines
XMEGA
- 16-384kB de memoria de programa
- 2-32 kB SRAM
- Interfaz de bus externo para hasta 16M bytes de SRAM de SDRAM
- 1-4 kB EEPROM
- hasta 32 MHz
- Paquete de 44-100 pines
Características
Cada AVR tiene algunos puertos de entrada/salida. El puerto tiene hasta 8 pines físicos en su paquete. Cada pin puede ser configurado como entrada o salida. Si un pin se utiliza como entrada, puede activar las resistencias pull-up incorporadas a través del registro PORTx. Si un pin se configura como salida, puede manejar hasta 40mA de carga por pin y un máximo de 100mA para todos los pines del puerto.
Convertidor A/D
- 10 bits (tinyAVR, megaAVR) con multiplexación de hasta 8 canales
- 12 bits (XMEGA) con multiplexación de hasta 16 canales
Temporizadores/contadores (8 o 16 bits)
- Los usuarios pueden configurarlo como PWM, contador o temporizador.
- En el modo PWM simple, el registro de conteo se ejecuta sin parar y se compara con otro registro. Si el registro de conteo es mayor que el segundo registro el pin Ocx se pone a "1". En otro momento el pin Ocx se pone a "0".
- El contador tiene una fuente externa como un sensor fotográfico y puede contar la cantidad de personas que pasan por el sensor fotográfico.
- El temporizador da impulsos en tiempo exacto. Se utiliza para programar aplicaciones de reloj.
TWI - Two Wire Interface Utiliza el mismo protocolo que I2C y puede utilizarse como interfaz I 2C
UART/USART La UART puede utilizarse para la comunicación RS232/RS485.
SPI - Interfaz de periféricos en serie
- bus serie muy rápido que se utiliza para la transferencia de datos de la comunicación con los dispositivos
- puede grabar/leer el programa en/desde la memoria de programa o EEPROM a través de este bus
USI - Interfaz serie universal
- utilizado para la transferencia de datos síncrona a dos o tres hilos
JTAG
- interfaz para la depuración en línea
Convertidor D/A
- 12 bits (sólo XMEGA) con multiplexación de hasta 2 canales
Páginas relacionadas
- Arduino
Preguntas y respuestas
P: ¿Cuándo se desarrolló la arquitectura del microcontrolador AVR?
R: La arquitectura del microcontrolador AVR fue desarrollada en 1996 por Atmel.
P: ¿En qué arquitectura se basa el microcontrolador AVR?
R: El microcontrolador AVR se basa en la arquitectura de microcontroladores Harvard.
P: ¿Qué diferencia al microcontrolador AVR de otros microcontroladores en el momento de su desarrollo?
R: El microcontrolador AVR utiliza memoria flash en el chip para el almacenamiento de programas, a diferencia de la ROM programable una sola vez, la EPROM o la EEPROM que utilizaban otros microcontroladores de la época.
P: ¿Cuál es el significado que se suele dar a la abreviatura AVR?
R: Mucha gente cree que AVR son las siglas del procesador Risc de Alf (Egil Bogen) y Vegard (Wollan).
P: ¿A qué arquitectura sustituyó el microcontrolador AVR?
R: El microcontrolador AVR sustituyó a la antigua arquitectura MCS-51.
P: ¿Cuántos ciclos de reloj dura un ciclo de máquina del MCS-51?
R: Un ciclo de máquina del MCS-51 tarda 12 ciclos de reloj.
P: ¿Cuál es la ventaja de los microcontroladores AVR sobre el MCS-51 en términos de rendimiento por ciclo de reloj?
R: El rendimiento por ciclo de reloj es 12 veces superior con los microcontroladores AVR.
Buscar dentro de la enciclopedia