


AVR es una familia de microcontroladores desarrollados desde 1996 por Atmel , adquirida por Microchip Technology en 2016. Se trata de microcontroladores de un solo chip RISC de 8 bits con arquitectura Harvard modificada . AVR fue una de las primeras familias de microcontroladores en utilizar memoria flash en chip para el almacenamiento de programas, a diferencia de la ROM , EPROM o EEPROM programables una sola vez que utilizaban otros microcontroladores en ese momento.
Los microcontroladores AVR tienen muchas aplicaciones como sistemas integrados . Son especialmente comunes en aplicaciones integradas educativas y para aficionados, y se popularizaron gracias a su inclusión en muchas de las placas de desarrollo de hardware abierto de la línea Arduino .
Historia
La arquitectura AVR fue concebida por dos estudiantes del Instituto Noruego de Tecnología (NTH), [1] Alf-Egil Bogen [2] y Vegard Wollan. [3]
Atmel afirma que el nombre AVR no es un acrónimo y no significa nada en particular. Los creadores del AVR no dan una respuesta definitiva sobre el significado del término "AVR". [3] Sin embargo, se acepta comúnmente que AVR significa procesador R ISC de Alf y Vegard . [4] Tenga en cuenta que el uso de "AVR" en este artículo generalmente se refiere a la línea RISC de 8 bits de microcontroladores AVR de Atmel.
El MCU AVR original fue desarrollado en una casa local de ASIC [ aclaración necesaria ] en Trondheim, Noruega , llamada Nordic VLSI en ese momento, ahora Nordic Semiconductor , donde Bogen y Wollan trabajaban como estudiantes. [ cita requerida ] Se lo conocía como μRISC (Micro RISC) [5] y estaba disponible como IP de silicio/bloque de construcción de Nordic VLSI. [6] Cuando la tecnología fue vendida a Atmel desde Nordic VLSI , la arquitectura interna fue desarrollada aún más por Bogen y Wollan en Atmel Norway, una subsidiaria de Atmel. Los diseñadores trabajaron en estrecha colaboración con los escritores de compiladores en IAR Systems para garantizar que el conjunto de instrucciones AVR proporcionara una compilación eficiente de lenguajes de alto nivel . [7]
Entre los primeros de la línea AVR se encontraba el AT90S8515, que en un encapsulado DIP de 40 pines tiene la misma distribución de pines que un microcontrolador 8051 , incluido el bus de datos y direcciones multiplexadas externas. La polaridad de la línea RESET era opuesta (el 8051 tiene un RESET activo-alto, mientras que el AVR tiene un RESET activo-bajo ), pero, aparte de eso, la distribución de pines era idéntica.
La arquitectura del microcontrolador AVR de 8 bits se introdujo en 1997. En 2003, Atmel había vendido 500 millones de microcontroladores flash AVR. [8] La plataforma Arduino , desarrollada para proyectos electrónicos simples, se lanzó en 2005 e incluía microcontroladores AVR ATmega8.
Descripción general del dispositivo
La AVR es una máquina de arquitectura Harvard modificada, donde el programa y los datos se almacenan en sistemas de memoria física separados que aparecen en espacios de direcciones diferentes, pero que tienen la capacidad de leer elementos de datos de la memoria del programa mediante instrucciones especiales.
Familias básicas
Los AVR generalmente se clasifican de la siguiente manera:
tinyAVR – la serie ATtiny
La serie ATtiny incluye microcontroladores de encapsulado pequeño con un conjunto limitado de periféricos disponibles. Sin embargo, la serie tinyAVR 0/1/2 mejorada (lanzada en 2016) incluye:
- Periféricos iguales o superiores a la serie 0 de megaAVR
- Sistema de eventos
- Conjunto de instrucciones AVRxt mejorado (sincronización de llamadas mejorada), multiplicación de hardware
megaAVR – la serie ATmega
La serie ATmega incluye microcontroladores que ofrecen un conjunto de instrucciones ampliado (instrucciones de multiplicación e instrucciones para manejar memorias de programa más grandes), un amplio conjunto de periféricos, una cantidad considerable de memoria de programa y una amplia gama de pines disponibles. La serie megaAVR 0 (lanzada en 2016) también tiene funciones como:
- Sistema de eventos
- Nuevos periféricos con funcionalidad mejorada
- Conjunto de instrucciones AVRxt mejorado (sincronización de llamadas mejorada)
AVR Dx – La familia AVR Dx presenta múltiples series de microcontroladores, enfocadas en HCI , acondicionamiento de señales analógicas y seguridad funcional.
Los números de piezas tienen el formato AVR ff D xpp , donde ff es el tamaño del flash, x es la familia y pp es el número de pines. Ejemplo: AVR128DA64: serie DA de 64 pines con flash de 128k. Todos los dispositivos de la familia AVR Dx incluyen:
- Un temporizador asíncrono de tipo D que puede funcionar más rápido que la CPU
- Convertidor analógico-digital de 12 bits
- Convertidor D/A de 10 bits
- Serie AVR DA (principios de 2020): la alta densidad de memoria hace que estos MCU sean adecuados tanto para funciones intensivas en comunicaciones cableadas como inalámbricas.
- Sensores integrados para medición táctil capacitiva ( HCI )
- Periféricos independientes del núcleo ( CIP ) actualizados y periféricos analógicos
- Sin cristal externo de alta frecuencia
- Serie AVR DB (mediados-finales de 2020): hereda muchas características de la familia DA, pero agrega las suyas propias:
- 2 o 3 amplificadores operacionales en chip
- Entrada y salida de voltaje múltiple (MVIO) en PORTC
- Admite cristal HF externo
- Serie DD de AVR
- Memoria flash de 16-64 KiB
- Memoria SRAM de 2 a 8 KiB
- Paquete de 14-32 pines
- oscilador interno de 24 MHz
- Convertidor analógico-digital (ADC) diferencial de 12 bits, 130 kS/s y 7-23 canales
- Sin amplificadores
- 1 comparador analógico
- Dos USART, un SPI, un TWI de modo dual
- Admite entrada/salida de voltaje múltiple (MVIO) en 3 o 4 pines en el puerto C
- 4 celdas de lógica personalizada configurable (CCL), 6 canales del sistema de eventos
- Serie AVR EA
- Flash de 8 a 64 k
- Paquete de 28 a 48 pines
- oscilador interno de 20 MHz
- Convertidor analógico-digital (ADC) diferencial de 12 bits, 130 kS/s y 24-32 canales
- Amplificador de ganancia programable (PGA) con ganancia de hasta 16x
- 2 comparadores analógicos
- Tres USART, un SPI, un TWI de modo dual
- Sin entrada/salida de voltaje múltiple (MVIO)
- 4 celdas de lógica personalizada configurable (CCL), 6 canales del sistema de eventos
XMEGA
La serie ATxmega ofrece una amplia variedad de periféricos y funcionalidades como:
- Funciones de rendimiento ampliadas, como DMA, "Sistema de eventos" y compatibilidad con criptografía
- Amplio conjunto periférico con ADC
AVR específico de la aplicación
- megaAVR con características especiales que no se encuentran en los otros miembros de la familia AVR, como controlador LCD, controlador USB , PWM avanzado, CAN, etc.
FPSLIC (AVR con FPGA)
- Puertas FPGA de 5k a 40k
- SRAM para el código del programa AVR, a diferencia de todos los demás AVR
- El núcleo AVR puede funcionar a hasta 50 MHz [9]
AVR de 32 bits
- En 2006, Atmel lanzó microcontroladores basados en la arquitectura AVR32 de 32 bits . Esta era una arquitectura completamente diferente, no relacionada con el AVR de 8 bits, destinada a competir con los procesadores basados en ARM . Tenía una ruta de datos de 32 bits, instrucciones SIMD y DSP , junto con otras características de procesamiento de audio y video. El conjunto de instrucciones era similar a otros núcleos RISC, pero no era compatible con el AVR original (ni con ninguno de los diversos núcleos ARM). Desde entonces, el soporte para AVR32 ha sido eliminado de Linux a partir del kernel 4.12; el soporte del compilador para la arquitectura en GCC nunca se incorporó al repositorio de código fuente central del compilador y estaba disponible principalmente en una bifurcación compatible con el proveedor. En el momento en que se presentó AVR32, Atmel ya había sido licenciatario de la arquitectura ARM , y los microcontroladores ARM7 y ARM9 se habían lanzado antes y simultáneamente con el AVR32; Más tarde, Atmel centró la mayor parte de sus esfuerzos de desarrollo en chips de 32 bits con núcleos ARM Cortex-M y Cortex-A .
Arquitectura del dispositivo
.png/500px-ATMEL_MEGA32U4_(Micro_Controller).png)
Los AVR tienen 32 registros de un solo byte y están clasificados como dispositivos RISC de 8 bits.
Flash , EEPROM y SRAM están todos integrados en un solo chip, lo que elimina la necesidad de memoria externa en la mayoría de las aplicaciones. Algunos dispositivos tienen una opción de bus externo paralelo para permitir agregar memoria de datos adicional o dispositivos mapeados en memoria. Casi todos los dispositivos (excepto los chips TinyAVR más pequeños) tienen interfaces seriales, que se pueden usar para conectar EEPROM seriales o chips flash más grandes.
Memoria del programa
Las instrucciones del programa se almacenan en una memoria flash no volátil . Aunque los MCU son de 8 bits, cada instrucción ocupa una o dos palabras de 16 bits. El tamaño de la memoria del programa suele indicarse en el nombre del propio dispositivo (por ejemplo, la línea ATmega64x tiene 64 KB de memoria flash, mientras que la línea ATmega32x tiene 32 KB). No hay ninguna disposición para la memoria del programa fuera del chip; todo el código ejecutado por el núcleo AVR debe residir en la memoria flash del chip. Sin embargo, esta limitación no se aplica a los chips AVR/FPGA AT94 FPSLIC.
Memoria de datos interna
El espacio de direcciones de datos consta del archivo de registros , los registros de E/S y la memoria SRAM . Algunos modelos pequeños también asignan la ROM del programa al espacio de direcciones de datos, pero los modelos más grandes no lo hacen.
Registros internos
En las variantes tinyAVR y megaAVR de la arquitectura AVR , los registros de trabajo se asignan como las primeras 32 direcciones de memoria de datos (0000 16 –001F 16 ), seguidas de 64 registros de E/S (0020 16 –005F 16 ). En dispositivos con muchos periféricos, estos registros son seguidos por 160 registros de “E/S extendida”, solo accesibles como E/S asignadas a la memoria (0060 16 –00FF 16 ).
La SRAM real comienza después de estas secciones de registro, en la dirección 0060 16 o, en dispositivos con "E/S extendida", en 0100 16 .
Si bien existen esquemas de direccionamiento separados y códigos de operación optimizados para acceder al archivo de registros y a los primeros 64 registros de E/S, todos ellos también pueden direccionarse y manipularse como si estuvieran en SRAM.
Las variantes tinyAVR más pequeñas utilizan una arquitectura reducida con solo 16 registros (se omiten r0 a r15) que no son direccionables como ubicaciones de memoria. La memoria de E/S comienza en la dirección 0000 16 , seguida de SRAM. Además, estos dispositivos tienen ligeras desviaciones del conjunto de instrucciones AVR estándar. En particular, las instrucciones de carga/almacenamiento directo (LDS/STS) se han reducido de 2 palabras (32 bits) a 1 palabra (16 bits), lo que limita la memoria direccionable directa total (la suma de E/S y SRAM) a 128 bytes. Por el contrario, el espacio de direcciones de 16 bits de la instrucción de carga indirecta (LD) se expande para incluir también memoria no volátil como Flash y bits de configuración; por lo tanto, la instrucción de carga de memoria de programa (LPM) es innecesaria y se omite. (Para obtener información detallada, consulte el conjunto de instrucciones Atmel AVR ).
En la variante XMEGA, el archivo de registro de trabajo no está mapeado en el espacio de direcciones de datos; por lo tanto, no es posible tratar ninguno de los registros de trabajo de XMEGA como si fueran SRAM. En cambio, los registros de E/S se mapean en el espacio de direcciones de datos comenzando desde el principio del espacio de direcciones. Además, la cantidad de espacio de direcciones de datos dedicado a los registros de E/S ha crecido sustancialmente a 4096 bytes (0000 16 –0FFF 16 ). Sin embargo, como con las generaciones anteriores, las instrucciones de manipulación rápida de E/S solo pueden alcanzar las primeras 64 ubicaciones de registros de E/S (las primeras 32 ubicaciones para instrucciones bit a bit). Después de los registros de E/S, la serie XMEGA reserva un rango de 4096 bytes del espacio de direcciones de datos, que se puede usar opcionalmente para mapear la EEPROM interna al espacio de direcciones de datos (1000 16 –1FFF 16 ). La SRAM real se encuentra después de estos rangos, a partir de 2000 16 .
Puertos GPIO
Cada puerto GPIO de un AVR pequeño o megacontrolador controla hasta ocho pines y está controlado por tres registros de 8 bits: DDR x , PORT x y PIN x , donde x es el identificador del puerto.
- DDR x : Registro de dirección de datos, configura los pines como entradas o salidas.
- PUERTO x : Registro del puerto de salida. Establece el valor de salida en los pines configurados como salidas. Habilita o deshabilita la resistencia pull-up en los pines configurados como entradas.
- PIN x : registro de entrada, utilizado para leer una señal de entrada. En algunos dispositivos, este registro se puede utilizar para alternar entre pines: escribir un uno lógico en un bit PIN x alterna el bit correspondiente en PORT x , independientemente de la configuración del bit DDR x . [10]
Los AVR ATtiny más nuevos, como el ATtiny817 y sus hermanos, tienen sus registros de control de puerto definidos de manera algo diferente. Los xmegaAVR tienen registros adicionales para configuraciones push/pull, totem-pole y pullup.
Memoria EEPROM
Casi todos los microcontroladores AVR tienen una EEPROM interna para el almacenamiento de datos semipermanente. Al igual que la memoria flash, la EEPROM puede mantener su contenido cuando se corta la energía eléctrica.
En la mayoría de las variantes de la arquitectura AVR, esta memoria EEPROM interna no está asignada al espacio de memoria direccionable del MCU. Solo se puede acceder a ella de la misma manera que a un dispositivo periférico externo, mediante registros de puntero especiales e instrucciones de lectura/escritura, lo que hace que el acceso a la EEPROM sea mucho más lento que a otras memorias RAM internas.
Sin embargo, algunos dispositivos de la familia SecureAVR (AT90SC) [11] utilizan una asignación especial de la EEPROM a la memoria de datos o de programa, según la configuración. La familia XMEGA también permite que la EEPROM se asigne al espacio de direcciones de datos.
Dado que la cantidad de escrituras en EEPROM es limitada (Atmel especifica 100 000 ciclos de escritura en sus hojas de datos), una rutina de escritura en EEPROM bien diseñada debe comparar el contenido de una dirección EEPROM con el contenido deseado y solo realizar una escritura real si es necesario cambiar el contenido.
Ejecución del programa
Los AVR de Atmel tienen un diseño de canalización de un solo nivel y dos etapas . Esto significa que la siguiente instrucción de la máquina se obtiene mientras se ejecuta la actual. La mayoría de las instrucciones requieren solo uno o dos ciclos de reloj, lo que hace que los AVR sean relativamente rápidos entre los microcontroladores de ocho bits .
Los procesadores AVR fueron diseñados con la ejecución eficiente de código C compilado en mente y tienen varios punteros integrados para la tarea.
Conjunto de instrucciones
El conjunto de instrucciones del AVR es más ortogonal que el de la mayoría de los microcontroladores de ocho bits, en particular los clones del 8051 y los microcontroladores PIC con los que el AVR compite actualmente. Sin embargo, no es completamente regular:
- Los registros de puntero X, Y y Z tienen capacidades de direccionamiento que son diferentes entre sí.
- Las ubicaciones de registros R0 a R15 tienen capacidades de direccionamiento más limitadas que las ubicaciones de registros R16 a R31.
- Los puertos de E/S 0 a 31 se pueden direccionar por bits, a diferencia de los puertos de E/S 32 a 63.
- CLR (borrar todos los bits a cero) afecta a los indicadores, mientras que SER (establecer todos los bits a uno) no lo hace, a pesar de que son instrucciones complementarias. (CLR es una pseudooperación para EOR R, R; mientras que SER es la abreviatura de LDI R,$FF. Las operaciones aritméticas como EOR modifican los indicadores, mientras que los movimientos/cargas/almacenes/ramificaciones como LDI no lo hacen).
- El acceso a datos de solo lectura almacenados en la memoria del programa (flash) requiere instrucciones LPM especiales; de lo contrario, el bus flash está reservado para la memoria de instrucciones.
Además, algunas diferencias específicas de cada chip afectan la generación de código. Los punteros de código (incluidas las direcciones de retorno en la pila) tienen una longitud de dos bytes en chips con hasta 128 KB de memoria flash, pero de tres bytes en chips más grandes; no todos los chips tienen multiplicadores de hardware; los chips con más de 8 KB de memoria flash tienen instrucciones de bifurcación y llamada con rangos más largos, y así sucesivamente.
El conjunto de instrucciones, en su mayor parte regular, hace que los compiladores de C (e incluso de Ada) sean bastante sencillos y eficientes. GCC incluye soporte AVR desde hace bastante tiempo, y ese soporte se utiliza ampliamente. LLVM también tiene un soporte AVR rudimentario. De hecho, Atmel solicitó la opinión de los principales desarrolladores de compiladores para microcontroladores pequeños, para determinar las características del conjunto de instrucciones que eran más útiles en un compilador para lenguajes de alto nivel. [7]
Velocidad de la MCU
La línea AVR normalmente puede soportar velocidades de reloj de 0 a 20 MHz, y algunos dispositivos alcanzan los 32 MHz. El funcionamiento con menor potencia generalmente requiere una velocidad de reloj reducida. Todos los AVR recientes (Tiny, Mega y Xmega, pero no 90S) cuentan con un oscilador en chip, lo que elimina la necesidad de relojes externos o circuitos de resonador. Algunos AVR también tienen un prescaler de reloj del sistema que puede dividir el reloj del sistema hasta por 1024. Este prescaler se puede reconfigurar por software durante el tiempo de ejecución, lo que permite optimizar la velocidad del reloj.
Dado que todas las operaciones (excluidas la multiplicación y la suma/resta de 16 bits) en los registros R0–R31 son de un solo ciclo, el AVR puede alcanzar hasta 1 MIPS por MHz, es decir, un procesador de 8 MHz puede alcanzar hasta 8 MIPS. Las cargas y los almacenamientos en/desde la memoria requieren dos ciclos, las ramificaciones requieren dos ciclos. Las ramificaciones en los últimos componentes de "PC de 3 bytes", como el ATmega2560, son un ciclo más lentas que en los dispositivos anteriores.
Desarrollo
Los AVR tienen un gran número de seguidores debido a las herramientas de desarrollo gratuitas y económicas disponibles, incluidas placas de desarrollo a precios razonables y software de desarrollo gratuito. Los AVR se venden con varios nombres que comparten el mismo núcleo básico, pero con diferentes combinaciones de periféricos y memoria. La compatibilidad entre chips de cada familia es bastante buena, aunque las características del controlador de E/S pueden variar.
Consulte los enlaces externos para obtener sitios relacionados con el desarrollo de AVR.
Características
Los AVR ofrecen una amplia gama de funciones:
- Puertos de E/S de propósito general, bidireccionales y multifunción con resistencias pull-up integradas y configurables
- Múltiples osciladores internos, incluido el oscilador RC sin partes externas
- Memoria flash de instrucciones internas autoprogramable de hasta 256 KB (384 KB en XMega)
- Programable en el sistema mediante interfaces propietarias de bajo voltaje seriales/paralelos o JTAG
- Sección de código de arranque opcional con bits de bloqueo independientes para protección
- Compatibilidad con depuración en chip (OCD) a través de JTAG o debugWIRE en la mayoría de los dispositivos
- Las señales JTAG (TMS, TDI, TDO y TCK) se multiplexan en los pines GPIO . Estos pines se pueden configurar para funcionar como JTAG o GPIO según la configuración de un bit de fusible , que se puede programar a través de ISP o HVSP. De manera predeterminada, los AVR con JTAG vienen con la interfaz JTAG habilitada.
- debugWIRE utiliza el pin /RESET como canal de comunicación bidireccional para acceder a los circuitos de depuración integrados en el chip. Está presente en dispositivos con menor cantidad de pines, ya que solo requiere un pin.
- EEPROM de datos internos hasta 4 KB
- SRAM interna de hasta 16 KB (32 KB en XMega)
- Espacio de datos little endian externo de 64 KB en ciertos modelos, incluidos Mega8515 y Mega162.
- El espacio de datos externos se superpone con el espacio de datos internos, de modo que el espacio de dirección completo de 64 KB no aparece en el bus externo y los accesos a, por ejemplo, la dirección 0100 16 accederán a la RAM interna, no al bus externo.
- En algunos miembros de la serie XMega, el espacio de datos externo se ha mejorado para admitir tanto SRAM como SDRAM. Además, los modos de direccionamiento de datos se han ampliado para permitir el direccionamiento directo de hasta 16 MB de memoria de datos.
- Temporizadores de 8 y 16 bits
- Salida PWM (algunos dispositivos tienen un periférico PWM mejorado que incluye un generador de tiempo muerto)
- Captura de entrada que registra una marca de tiempo activada por un borde de señal
- Comparador analógico
- Convertidores A/D de 10 o 12 bits , con multiplexación de hasta 16 canales
- Convertidores D/A de 12 bits
- Una variedad de interfaces seriales, incluyendo
- Interfaz de dos cables (TWI) compatible con I²C
- Periféricos seriales síncronos/asincrónicos ( UART /USART) (utilizados con RS-232 , RS-485 y más)
- Bus de interfaz periférica en serie (SPI)
- Interfaz serial universal (USI): un módulo de comunicación de hardware multipropósito que se puede utilizar para implementar una interfaz SPI, [12] I 2 C [13] [14] o UART [15] .
- Detección de caídas de tensión
- Temporizador de vigilancia (WDT)
- Múltiples modos de suspensión para ahorro de energía
- Modelos de controladores de control de iluminación y motores ( específicos de PWM )
- Soporte del controlador CAN
- Compatibilidad con controlador
USB
- Controlador de hardware y concentrador de velocidad completa (12 Mbit/s) con AVR incorporado.
- También hay emulaciones de software de bitbanging de baja velocidad (1,5 Mbit/s) ( HID ) disponibles de forma gratuita.
- Compatibilidad con controlador Ethernet
- Compatibilidad con controlador LCD
- Dispositivos de bajo voltaje que funcionan hasta 1,8 V (hasta 0,7 V para piezas con convertidor ascendente CC-CC incorporado)
- Dispositivos picoPower
- Controladores DMA y comunicación periférica “sistema de eventos”.
- Soporte de criptografía rápida para AES y DES
Interfaces de programación
Existen muchos métodos para cargar el código de programa en un chip AVR. Los métodos para programar chips AVR varían de una familia de AVR a otra. La mayoría de los métodos descritos a continuación utilizan la línea RESET para ingresar al modo de programación. Para evitar que el chip ingrese accidentalmente a dicho modo, se recomienda conectar una resistencia pull-up entre el pin RESET y la fuente de alimentación positiva. [16]
Proveedor de servicios de Internet

El método de programación de programación en el sistema (ISP) se realiza funcionalmente a través de SPI , más algunos ajustes en la línea de reinicio. Mientras los pines SPI del AVR no estén conectados a nada que los perturbe, el chip del AVR puede permanecer soldado en una PCB mientras se reprograma. Todo lo que se necesita es un conector de 6 pines y un adaptador de programación. Esta es la forma más común de desarrollar con un AVR.
El dispositivo Atmel-ICE o AVRISP mkII (dispositivo heredado) se conecta al puerto USB de una computadora y realiza la programación en el sistema utilizando el software de Atmel.
AVRDUDE (AVR Downloader/UploaDEr) se ejecuta en Linux , FreeBSD , Windows y Mac OS X , y admite una variedad de hardware de programación en el sistema, incluidos Atmel AVRISP mkII, Atmel JTAG ICE, programadores Atmel más antiguos basados en puerto serial y varios programadores de terceros y "hágalo usted mismo". [17]
PDI
La interfaz de programación y depuración (PDI) es una interfaz patentada de Atmel para la programación externa y la depuración en chip de dispositivos XMEGA. La PDI admite la programación de alta velocidad de todos los espacios de memoria no volátil (NVM); flash, EEPROM, fusibles, bits de bloqueo y la fila de firma de usuario. Esto se realiza accediendo al controlador NVM de XMEGA a través de la interfaz PDI y ejecutando comandos del controlador NVM. La PDI es una interfaz de 2 pines que utiliza el pin de reinicio para la entrada de reloj (PDI_CLK) y un pin de datos dedicado (PDI_DATA) para entrada y salida. [18]
UPDI
La interfaz unificada de programación y depuración (UPDI) es una interfaz de un solo cable para la programación externa y la depuración en chip de los dispositivos ATtiny y ATmega más nuevos. El Atmel-ICE y el PICkit 4 son capaces de programar chips UPDI. También es posible utilizar un Arduino gracias a jtag2updi, [19] o un adaptador USB-UART estándar con los pines TX y RX en cortocircuito mediante una resistencia de 1 kΩ y la utilidad pymcuprog proporcionada por Microchip. [20]
Serie de alto voltaje
La programación serial de alto voltaje (HVSP) [21] es principalmente el modo de respaldo en los AVR más pequeños. Un encapsulado AVR de 8 pines no deja muchas combinaciones de señales únicas para colocar el AVR en un modo de programación. Sin embargo, una señal de 12 voltios es algo que el AVR solo debería ver durante la programación y nunca durante el funcionamiento normal. El modo de alto voltaje también se puede utilizar en algunos dispositivos donde el pin de reinicio se ha desactivado mediante fusibles.
Paralelo de alto voltaje
La programación paralela de alto voltaje (HVPP) se considera el "último recurso" y puede ser la única forma de corregir configuraciones de fusibles incorrectas en un chip AVR.
Cargador de arranque
La mayoría de los modelos AVR pueden reservar una región de cargador de arranque , de 256 bytes a 4 KB, donde puede residir el código de reprogramación. Al reiniciar, el cargador de arranque se ejecuta primero y realiza una determinación programada por el usuario sobre si se debe reprogramar o saltar a la aplicación principal. El código se puede reprogramar a través de cualquier interfaz disponible, o puede leer un binario cifrado a través de un adaptador Ethernet como PXE . Atmel tiene notas de aplicación y código pertenecientes a muchas interfaces de bus. [22] [23] [24] [25]
memoria de sólo lectura
La serie AT90SC de AVR está disponible con una máscara-ROM de fábrica en lugar de flash para la memoria del programa. [26] Debido al alto costo inicial y la cantidad mínima de pedido, una máscara-ROM solo es rentable para tiradas de alta producción.
un cable
aWire es una nueva interfaz de depuración de un solo cable disponible en los nuevos dispositivos UC3L AVR32.
Interfaces de depuración
El AVR ofrece varias opciones de depuración, la mayoría de las cuales implican la depuración en el chip mientras éste se encuentra en el sistema de destino.
depuraciónCABLE
debugWIRE es la solución de Atmel para proporcionar capacidades de depuración en chip a través de un solo pin del microcontrolador. Es particularmente útil para componentes con un menor número de pines que no pueden proporcionar los cuatro pines "de repuesto" necesarios para JTAG. JTAGICE mkII, mkIII y AVR Dragon admiten debugWIRE. debugWIRE se desarrolló después del lanzamiento original de JTAGICE y ahora los clones lo admiten.
JTAG
La función Joint Test Action Group ( JTAG ) proporciona acceso a la funcionalidad de depuración en el chip mientras el chip se ejecuta en el sistema de destino. [27] JTAG permite acceder a la memoria interna y los registros, establecer puntos de interrupción en el código y ejecutar pasos únicos para observar el comportamiento del sistema.
Atmel proporciona una serie de adaptadores JTAG para el AVR:
- El Atmel-ICE [28] es el adaptador más reciente. Admite interfaces JTAG, debugWire, aWire, SPI, TPI y PDI.
- JTAGICE 3 [29] es un depurador de gama media de la familia JTAGICE (JTAGICE mkIII). Admite interfaces JTAG, aWire, SPI y PDI.
- El JTAGICE mkII [30] reemplaza al JTAGICE y tiene un precio similar. El JTAGICE mkII se conecta a la PC a través de USB y admite tanto JTAG como la nueva interfaz debugWIRE. Numerosos clones de terceros del dispositivo Atmel JTAGICE mkII comenzaron a distribuirse después de que Atmel lanzara el protocolo de comunicación. [31]
- El AVR Dragon [32] es un sustituto de bajo costo (aproximadamente $50) del JTAGICE mkII para ciertas piezas de destino. El AVR Dragon proporciona programación serial en el sistema, programación serial de alto voltaje y programación paralela, así como emulación JTAG o debugWIRE para piezas con 32 KB de memoria de programa o menos. ATMEL cambió la función de depuración del AVR Dragon con el último firmware de AVR Studio 4 - AVR Studio 5 y ahora admite dispositivos con más de 32 KB de memoria de programa.
- El adaptador JTAGICE se conecta a la PC a través de un puerto serial estándar. [33] Aunque Atmel ha declarado que el adaptador JTAGICE está " fuera de servicio ", aún es compatible con AVR Studio y otras herramientas.
JTAG también se puede utilizar para realizar una prueba de escaneo de límites , [34] que prueba las conexiones eléctricas entre los AVR y otros chips con capacidad de escaneo de límites en un sistema. El escaneo de límites es adecuado para una línea de producción, mientras que el aficionado probablemente esté mejor probando con un multímetro o un osciloscopio.
Herramientas de desarrollo y kits de evaluación

Las herramientas de desarrollo y los kits de evaluación oficiales de Atmel AVR contienen una serie de kits de inicio y herramientas de depuración compatibles con la mayoría de los dispositivos AVR:
Kit de inicio STK600
El kit de inicio y sistema de desarrollo STK600 es una actualización del STK500. [35] El STK600 utiliza una placa base, una placa de enrutamiento de señales y una placa de destino.
La placa base es similar a la STK500, ya que proporciona una fuente de alimentación, reloj, programación en el sistema, un puerto RS-232 y un puerto CAN (Controller Area Network, un estándar automotriz) a través de conectores DE9 y pines de estaca para todas las señales GPIO del dispositivo de destino.
Las placas de destino tienen zócalos ZIF para paquetes DIP , SOIC , QFN o QFP , según la placa.
La placa de enrutamiento de señales se ubica entre la placa base y la placa de destino, y envía las señales al pin correspondiente en la placa del dispositivo. Hay muchas placas de enrutamiento de señales diferentes que se pueden usar con una sola placa de destino, según el dispositivo que se encuentre en el zócalo ZIF.
El STK600 permite la programación en el sistema desde la PC a través de USB, dejando el puerto RS-232 disponible para el microcontrolador de destino. Un conector de 4 pines en el STK600 etiquetado como "RS-232 spare" puede conectar cualquier puerto USART de nivel TTL en el chip a un chip MAX232 integrado para traducir las señales a niveles RS-232. Las señales RS-232 se conectan a los pines RX, TX, CTS y RTS en el conector DB-9.
Kit de inicio STK500
El kit de inicio y sistema de desarrollo STK500 incluye programación de alto voltaje (HVP) e ISP para todos los dispositivos AVR, ya sea directamente o a través de placas de extensión. La placa está equipada con conectores DIP para todos los AVR disponibles en encapsulados DIP.
Módulos de expansión STK500: Hay varios módulos de expansión disponibles para la placa STK500:
- STK501 – Agrega soporte para microcontroladores en paquetes TQFP de 64 pines.
- STK502 – Agrega soporte para AVR LCD en paquetes TQFP de 64 pines.
- STK503 – Agrega soporte para microcontroladores en paquetes TQFP de 100 pines.
- STK504 – Agrega soporte para AVR LCD en paquetes TQFP de 100 pines.
- STK505 – Agrega soporte para AVR de 14 y 20 pines.
- STK520 – Agrega soporte para microcontroladores de 14, 20 y 32 pines de la familia AT90PWM y ATmega.
- STK524 – Agrega soporte para la familia de control de motor/LIN/CAN de 32 pines ATmega32M1/C1.
- STK525 – Agrega soporte para los microcontroladores AT90USB en paquetes TQFP de 64 pines.
- STK526 – Agrega soporte para los microcontroladores AT90USB en paquetes TQFP de 32 pines.
Kit de inicio STK200
El kit de inicio y sistema de desarrollo STK200 tiene un zócalo DIP que puede alojar un chip AVR en un encapsulado de 40, 20 u 8 pines. La placa tiene una fuente de reloj de 4 MHz, 8 diodos emisores de luz (LED), 8 botones de entrada, un puerto RS-232 , un zócalo para una SRAM de 32 KB y numerosas E/S generales. El chip se puede programar con un dispositivo conectado al puerto paralelo.
Atmel-ICE
El ICE de Atmel es la herramienta económica que actualmente se admite para programar y depurar todos los dispositivos AVR (a diferencia de los AVRISP/AVRISP mkII, Dragon, etc., que se analizan a continuación). Se conecta a una PC y recibe alimentación de esta a través de USB, y admite interfaces JTAG , PDI , aWire , debugWIRE , SPI , SWD , TPI y UPDI (la interfaz unificada de programación y depuración de Microchip).
El ICE puede programar y depurar todos los AVR a través de la interfaz JTAG y programar con interfaces adicionales según lo admita cada dispositivo:
- Dispositivos AVR XMEGA de 8 bits a través de la interfaz PDI de 2 cables
- Dispositivos megaAVR y tinyAVR de 8 bits a través de SPI para todos con soporte OCD (depurador en chip)
- Microcontroladores tinyAVR de 8 bits con soporte TPI
- Microcontroladores basados en SAM Arm Cortex-M de 32 bits a través de SWD
Se admiten rangos de voltaje operativo objetivo de 1,62 V a 5,5 V, así como los siguientes rangos de reloj:
- Admite frecuencias de reloj JTAG y PDI de 32 kHz a 7,5 MHz
- Admite velocidades de transmisión aWire de 7,5 kbit/s a 7 Mbit/s
- Admite velocidades en baudios de debugWIRE de 4 kbit/s a 0,5 Mbit/s
- Admite frecuencias de reloj SPI de 8 kHz a 5 MHz
- Admite frecuencias de reloj SWD de 32 kHz a 2 MHz
El ICE es compatible con el IDE de Microchip Studio, así como con una interfaz de línea de comandos (atprogram).
El Atmel-ICE admite una implementación limitada de la interfaz de puerta de enlace de datos (DGI) cuando no se utilizan las funciones de depuración y programación. La interfaz de puerta de enlace de datos es una interfaz para transmitir datos desde un dispositivo de destino a la computadora conectada. Está pensada como un complemento útil de la unidad para permitir la demostración de las funciones de la aplicación y como una ayuda en la depuración a nivel de aplicación.
AVRISP y AVRISP mkII

AVRISP y AVRISP mkII son herramientas económicas que permiten programar todos los AVR a través de ICSP .
El AVRISP se conecta a una PC a través de un puerto serial y obtiene energía del sistema de destino. El AVRISP permite utilizar cualquiera de las configuraciones de pines ICSP "estándar", ya sea el conector de 10 pines o el de 6 pines.
El AVRISP mkII se conecta a una PC a través de USB y obtiene energía de este puerto. Los LED visibles a través de la carcasa translúcida indican el estado de la energía del objetivo.
Como el AVRISP mkII carece de circuitos integrados de controlador/búfer, [36] puede tener problemas para programar placas de destino con múltiples cargas en sus líneas SPI. En tales casos, se requiere un programador capaz de generar mayor corriente. Alternativamente, el AVRISP mkII aún se puede usar si se pueden colocar resistencias limitadoras de carga de bajo valor (~150 ohmios) en las líneas SPI antes de cada dispositivo periférico.
Tanto el AVRISP como el AVRISP mkII ya no se fabrican y las páginas de productos se han eliminado del sitio web de Microchip. A julio de 2019, el AVRISP mkII todavía está disponible en varios distribuidores. También hay varios clones de terceros disponibles.
Dragón AVR

El Atmel Dragon es una herramienta económica que se conecta a una PC a través de USB. El Dragon puede programar todos los AVR a través de JTAG, HVP, PDI, [37] o ICSP. El Dragon también permite la depuración de todos los AVR a través de JTAG, PDI o debugWire; una limitación anterior para dispositivos con 32 KB o menos de memoria de programa se ha eliminado en AVR Studio 4.18. [38] El Dragon tiene un área de prototipo pequeña que puede acomodar un AVR de 8, 28 o 40 pines, incluidas las conexiones a los pines de alimentación y programación. No hay área para ningún circuito adicional, aunque esto puede proporcionarse mediante un producto de terceros llamado "Dragon Rider". [39]
JTAGICE
La herramienta de depuración JTAG In Circuit Emulator (JTAGICE) admite la depuración en chip (OCD) de AVR con una interfaz JTAG. El JTAGICE original (al que a veces se hace referencia retroactivamente como JTAGICE mkI) utiliza una interfaz RS-232 para PC y solo puede programar AVR con una interfaz JTAG. El JTAGICE mkI ya no se fabrica, sin embargo ha sido reemplazado por el JTAGICE mkII.
JTAGICE mkII
La herramienta de depuración JTAGICE mkII admite la depuración en chip (OCD) de AVR con interfaces SPI, JTAG, PDI y debugWIRE. La interfaz debugWire permite la depuración utilizando solo un pin (el pin de reinicio), lo que permite la depuración de aplicaciones que se ejecutan en microcontroladores con un número bajo de pines.
El JTAGICE mkII se conecta mediante USB, pero existe una conexión alternativa a través de un puerto serial, que requiere el uso de una fuente de alimentación independiente. Además de JTAG, el mkII admite la programación ISP (mediante adaptadores de 6 o 10 pines). Tanto los enlaces USB como seriales utilizan una variante del protocolo STK500.
JTAGICE3
El JTAGICE3 actualiza el mkII con capacidades de depuración más avanzadas y una programación más rápida. Se conecta a través de USB y es compatible con las interfaces JTAG, aWire, SPI y PDI. [40] El kit incluye varios adaptadores para usar con la mayoría de los pines de interfaz.
¡AVR UNO!
AVR ONE! es una herramienta de desarrollo profesional para todos los dispositivos AVR de 8 y 32 bits de Atmel con capacidad de depuración en chip. Admite modos de programación SPI, JTAG, PDI y aWire y depuración mediante interfaces debugWIRE, JTAG, PDI y aWire. [41]
Tablero de demostración de mariposas

La popular placa de demostración AVR Butterfly es una computadora autónoma alimentada por batería que ejecuta el microcontrolador Atmel AVR ATmega169V. Fue construida para mostrar la familia AVR, especialmente una nueva interfaz LCD incorporada. La placa incluye la pantalla LCD, joystick, altavoz, puerto serie, reloj de tiempo real (RTC), chip de memoria flash y sensores de temperatura y voltaje. Las versiones anteriores de AVR Butterfly también contenían una fotorresistencia CdS ; no está presente en las placas Butterfly producidas después de junio de 2006 para permitir el cumplimiento de RoHS . [42] La pequeña placa tiene un alfiler de camisa en su parte posterior para que pueda usarse como placa de identificación.
El AVR Butterfly viene con software precargado para demostrar las capacidades del microcontrolador. El firmware de fábrica puede mostrar su nombre, las lecturas del sensor y la hora. El AVR Butterfly también tiene un transductor piezoeléctrico que se puede utilizar para reproducir sonidos y música.
El AVR Butterfly demuestra el funcionamiento de una pantalla LCD mediante la ejecución de una pantalla de 14 segmentos y seis caracteres alfanuméricos. Sin embargo, la interfaz LCD consume muchos de los pines de E/S.
La CPU ATmega169 de Butterfly es capaz de alcanzar velocidades de hasta 8 MHz, pero está configurada de fábrica por software a 2 MHz para preservar la vida útil de la batería del botón. Un programa de cargador de arranque preinstalado permite reprogramar la placa a través de un conector serial RS-232 estándar con nuevos programas que los usuarios pueden escribir con las herramientas gratuitas IDE de Atmel.
Llave USB AT90
Esta pequeña placa, de aproximadamente la mitad del tamaño de una tarjeta de visita, tiene un precio ligeramente superior al de una AVR Butterfly. Incluye un AT90USB1287 con soporte USB On-The-Go (OTG), 16 MB de DataFlash , LED, un pequeño joystick y un sensor de temperatura. La placa incluye software que le permite actuar como un dispositivo de almacenamiento masivo USB (su documentación se envía en el DataFlash), un joystick USB y más. Para admitir la capacidad de host USB, debe funcionar con una batería, pero cuando se ejecuta como un periférico USB, solo necesita la energía proporcionada a través de USB.
Solo el puerto JTAG utiliza una distribución de pines convencional de 2,54 mm. Todos los demás puertos de E/S AVR requieren conectores más compactos de 1,27 mm.
El AVR Dragon puede programar y depurar, ya que la limitación de 32 KB se eliminó en AVR Studio 4.18, y el JTAGICE mkII puede programar y depurar el procesador. El procesador también se puede programar a través de USB desde un host Windows o Linux, utilizando los protocolos USB de "Actualización de firmware del dispositivo". Atmel envía programas de ejemplo propietarios (código fuente incluido pero distribución restringida) y una pila de protocolos USB con el dispositivo.
LUFA [43] es una pila de protocolos USB de software libre de terceros ( licencia MIT ) para USBKey y otros AVR USB de 8 bits.
Kit inalámbrico Raven
El kit RAVEN admite el desarrollo inalámbrico mediante chipsets IEEE 802.15.4 de Atmel, para Zigbee y otras pilas inalámbricas. Se parece a un par de tarjetas Butterfly inalámbricas más potentes, más una llave USB inalámbrica; y cuesta aproximadamente lo mismo (menos de 100 dólares estadounidenses). Todas estas placas admiten el desarrollo basado en JTAG.
El kit incluye dos placas AVR Raven, cada una con un transceptor de 2,4 GHz compatible con IEEE 802.15.4 (y una pila Zigbee con licencia libre). Las radios se controlan con procesadores ATmega1284p, que están respaldados por una pantalla LCD segmentada personalizada controlada por un procesador ATmega3290p. Los periféricos Raven se parecen a los Butterfly: altavoz piezoeléctrico, DataFlash (más grande), EEPROM externa, sensores, cristal de 32 kHz para RTC , etc. Estos están pensados para su uso en el desarrollo de nodos de sensores remotos, para controlar relés o lo que sea necesario.
La memoria USB utiliza un AT90USB1287 para las conexiones a un host USB y a los enlaces inalámbricos de 2,4 GHz. Estos están pensados para supervisar y controlar los nodos remotos, y dependen de la energía del host en lugar de las baterías locales.
Programadores de terceros
Existe una amplia variedad de herramientas de programación y depuración de terceros disponibles para el AVR. Estos dispositivos utilizan varias interfaces, entre ellas RS-232, puerto paralelo de PC y USB. [44]
Usos

Los AVR se han utilizado en diversas aplicaciones automotrices, como sistemas de seguridad, protección, tren motriz y entretenimiento. Atmel ha lanzado recientemente una nueva publicación, "Atmel Automotive Compilation", para ayudar a los desarrolladores con aplicaciones automotrices. Algunos de los usos actuales se encuentran en BMW, Daimler-Chrysler y TRW.
La plataforma de computación física Arduino se basa en un microcontrolador ATmega328 (ATmega168 o ATmega8 en versiones de placa anteriores a la Diecimila). El ATmega1280 y el ATmega2560, con más capacidad de pinout y memoria, también se han empleado para desarrollar la plataforma Arduino Mega . Las placas Arduino se pueden utilizar con su lenguaje e IDE , o con entornos de programación más convencionales ( C , ensamblador , etc.) como plataformas AVR estandarizadas y ampliamente disponibles.
Los AVR basados en USB se han utilizado en los controladores portátiles de Microsoft Xbox. El vínculo entre los controladores y la Xbox es USB.
Numerosas empresas producen placas de microcontroladores basadas en AVR destinadas a ser utilizadas por aficionados, constructores de robots, experimentadores y desarrolladores de pequeños sistemas, entre las que se incluyen: Cubloc, [45] gnusb, [46] BasicX , [47] Oak Micros, [48] ZX Microcontrollers, [49] y myAVR. [50] También existe una gran comunidad de placas compatibles con Arduino que apoyan a usuarios similares.
Schneider Electric solía producir el chip de control de movimiento y motor M3000, que incorporaba un núcleo AVR Atmel y un controlador de movimiento avanzado para su uso en una variedad de aplicaciones de movimiento, pero se ha descontinuado. [51]
Clones de FPGA
Con la creciente popularidad de los FPGA entre la comunidad de código abierto, la gente ha comenzado a desarrollar procesadores de código abierto compatibles con el conjunto de instrucciones AVR. El sitio web OpenCores enumera los siguientes proyectos principales de clones de AVR:
- pAVR, [52] escrito en VHDL , tiene como objetivo crear el procesador AVR más rápido y con más funciones, implementando técnicas que no se encuentran en el procesador AVR original, como una canalización más profunda.
- avr_core, [53] escrito en VHDL , es un clon que pretende ser lo más parecido posible al ATmega103.
- Navré, [54] escrito en Verilog , implementa todas las instrucciones de Classic Core y está orientado al alto rendimiento y al bajo uso de recursos. No admite interrupciones .
- softavrcore, [55] escrito en Verilog , implementa la instrucción AVR configurada hasta AVR5, admite interrupciones junto con reconocimiento automático de interrupciones opcional, ahorro de energía a través del modo de suspensión más algunas interfaces periféricas y aceleradores de hardware (como UART , SPI , unidad de cálculo de verificación de redundancia cíclica y temporizadores del sistema ). Estos periféricos demuestran cómo se pueden conectar y configurar para este núcleo. Dentro del paquete, también está disponible un puerto FreeRTOS con todas las funciones como ejemplo para la utilización del núcleo + periférico.
- La conferencia sobre CPU del proyecto Opencores [56] escrita en VHDL por el Dr. Jürgen Sauermann explica en detalle cómo diseñar un sistema completo basado en AVR en un chip (SoC).
Otros vendedores
Además de los chips fabricados por Atmel, hay clones disponibles de LogicGreen Technologies. [57] Estas piezas no son clones exactos: tienen algunas características que no se encuentran en los chips de los que son "clones" y velocidades de reloj máximas más altas, pero usan SWD ( Serial Wire Debug , una variante de JTAG de ARM ) en lugar de ISP para la programación, por lo que se deben usar diferentes herramientas de programación.
Los microcontroladores que utilizan la arquitectura ATmega están siendo fabricados por NIIET en Voronezh , Rusia, como parte de la serie 1887 de circuitos integrados. Esto incluye un ATmega128 bajo la designación 1887VE7T ( ‹Ver Tfd› Ruso : 1887ВЕ7Т ). [58]
Referencias
- ^ Desde 1996, NTH se ha convertido en parte de la Universidad Noruega de Ciencia y Tecnología (NTNU)
- ^ blog de alfbogen.com
- ^ ab Archivado en Ghostarchive y Wayback Machine: "La historia de AVR". youtube.com.
- ^ "UNSW School of Computer Science and Engineering - General AVR Info" (Información general sobre AVR de la Facultad de Ciencias Informáticas e Ingeniería de la UNSW). Cse.unsw.edu.au. Archivado desde el original el 23 de junio de 2012. Consultado el 19 de septiembre de 2012 .
- ^ Introducción a Atmel y al microcontrolador AVR [ enlace muerto permanente ]
- ^ "Sistemas embebidos y microcontroladores" (PDF) . Archivado desde el original (PDF) el 24 de diciembre de 2004. Consultado el 1 de octubre de 2018 .
- ^ de Myklebust, Gaute. El microcontrolador AVR y el compilador C: diseño conjunto (PDF) . Atmel Noruega. CiteSeerX 10.1.1.63.1447 . Consultado el 19 de septiembre de 2012 .
- ^ Nota de prensa de Atmel. "Se envían 500 millones de unidades del microcontrolador AVR de Atmel".
- ^ Circuito integrado a nivel de sistema programable en campo. Archivado el 27 de noviembre de 2012 en Wayback Machine .
- ^ atmel.com
- ^ Circuitos integrados de tarjetas inteligentes Atmel
- ^ "AVR319: Uso del módulo USI para comunicación SPI" (PDF) . Atmel . 2004. Archivado (PDF) desde el original el 17 de junio de 2012 . Consultado el 10 de junio de 2014 .
- ^ "Atmel AVR310: Uso del módulo USI como un controlador maestro I2C" (PDF) . Atmel . 2013. Archivado (PDF) desde el original el 14 de julio de 2014 . Consultado el 10 de junio de 2014 .
- ^ "AVR312: Uso del módulo USI como esclavo I2C" (PDF) . Atmel . 2005. Archivado (PDF) desde el original el 14 de julio de 2014 . Consultado el 10 de junio de 2014 .
- ^ "AVR307: UART semidúplex que utiliza el módulo USI" (PDF) . Atmel . 2003. Archivado (PDF) desde el original el 14 de julio de 2014 . Consultado el 10 de junio de 2014 .
- ^ "Consideraciones de diseño de hardware de AVR" (PDF) (nota de aplicación). Atmel Corporation. Jun 2015. p. 5. Archivado (PDF) del original el 22 de diciembre de 2014. Consultado el 14 de junio de 2015.
La línea de reinicio tiene una resistencia pull-up interna, pero si el entorno es ruidoso puede ser insuficiente y, por lo tanto, el reinicio puede ocurrir esporádicamente.
- ^ "Programador AVRDUDE". Savannah.nongnu.org . Consultado el 19 de septiembre de 2012 .
- ^ "Controlador de programación PDI" (PDF) . Archivado (PDF) del original el 25 de marzo de 2020 . Consultado el 19 de septiembre de 2012 .
- ^ "GitHub - ElTangas/Jtag2updi: software de programación UPDI para Arduino (para microcontroladores Tiny AVR-0/1/2, Mega AVR-0 y AVR-DA/DB)". GitHub . 17 de diciembre de 2021.
- ^ "pymcuprog - Programador de MCU Python". Github . Herramientas PIC&AVR de Microchip. 13 de noviembre de 2022 . Consultado el 18 de noviembre de 2022 .
- ^ "HVSP_Description". Support.atmel.no. Archivado desde el original el 2009-10-12 . Consultado el 2012-09-19 .
- ^ "Des-encrypted AVR Bootloader" (PDF) . Archivado (PDF) desde el original el 2005-05-16 . Consultado el 2012-09-19 .
- ^ "Cargador de arranque AVR cifrado con AES" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ "Cargador de arranque XMEGA" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ "AVR USB Bootloader" (PDF) . Archivado (PDF) desde el original el 28 de junio de 2006 . Consultado el 19 de septiembre de 2012 .
- ^ "Microcontroladores Flash autoprogramables de Atmel" (PDF) . Consultado el 12 de marzo de 2020 .
- ^ "Guía para comprender los fusibles de seguridad y JTAG en el AVR" . Consultado el 19 de septiembre de 2012 .[ enlace muerto permanente ]
- ^ "Atmel-ICE - Atmel Corporation". Atmel.com . Consultado el 11 de septiembre de 2015 .
- ^ "JTAGICE 3- Atmel Corporation". Atmel.com . Consultado el 19 de septiembre de 2012 .
- ^ "AVR JTAGICE mkII". Atmel . Archivado desde el original el 15 de febrero de 2013 . Consultado el 13 de enero de 2013 .
- ^ "Protocolo de comunicación JTAGICE mkII" (PDF) . Archivado (PDF) desde el original el 2005-05-16 . Consultado el 2012-09-19 .
- ^ "AVR Dragon". Atmel . Consultado el 13 de enero de 2013 .
- ^ "Guía del usuario de AVR JTAGICE mkII" (PDF) . microchip.com . Archivado (PDF) del original el 2017-07-02 . Consultado el 25 de marzo de 2020 .
- ^ Comunicado de prensa de JTAGICE, 2004. Archivado el 7 de julio de 2011 en Wayback Machine.
- ^ "STK600". Atmel . Archivado desde el original el 15 de febrero de 2013 . Consultado el 13 de enero de 2013 .
- ^ "AVRISP mkII desmontado". Archivado desde el original el 8 de noviembre de 2014. Consultado el 8 de noviembre de 2014 .
- ^ "AVR1005: Introducción a XMEGA, página 7" (PDF) . Atmel. Archivado (PDF) desde el original el 2009-10-07 . Consultado el 7 de noviembre de 2011 .
- ^ "Notas de la versión de AVR Studio v4.18" . Consultado el 19 de septiembre de 2012 .
- ^ "Tecnología ECROS - Jinete de dragones". Ecrostech.com. 2008-03-02 . Consultado el 2012-09-19 .
- ^ Página del producto JTAGICE3
- ^ Página del producto AVR ONE!
- ^ Mariposa AVR
- ^ "LUFA (anteriormente MyUSB)". Cubículo de cuatro paredes . Consultado el 19 de septiembre de 2012 .
- ^ Consulte avrffreaks.net para obtener una lista completa.
- ^ "Comfile Technology". Comfile Technology, Inc. Archivado desde el original el 17 de enero de 2013. Consultado el 13 de enero de 2013 .
- ^ "gnusb: Caja de sensores USB de código abierto" . Consultado el 13 de enero de 2013 .
- ^ "BasicX". NetMedia, Inc. Archivado desde el original el 23 de mayo de 2013. Consultado el 13 de enero de 2013 .
- ^ "Bienvenido a Oak Micros". Oak Micros . Oak Micros. Archivado desde el original el 25 de octubre de 2012 . Consultado el 13 de enero de 2013 .
- ^ "ZBasic" . Consultado el 13 de enero de 2013 .
- ^ "myAVR". Laser & Co. Solutions GmbH . Consultado el 13 de enero de 2013 .
- ^ "Controlador de movimiento M3000 en un chip". imshome.com . Schneider Electric Motion USA. Archivado desde el original el 2009-12-02 . Consultado el 2011-08-02 .
- ^ "pAVR:: Descripción general". OpenCores . Consultado el 19 de septiembre de 2012 .
- ^ "AVR Core :: Descripción general". OpenCores . Consultado el 19 de septiembre de 2012 .
- ^ "Descripción general del clon Navré AVR (RISC de 8 bits)". OpenCores . Consultado el 19 de septiembre de 2012 .
- ^ "Descripción general de Soft AVR Core + Interfaces". OpenCores . Consultado el 16 de junio de 2020 .
- ^ "Conferencia sobre CPU". OpenCores . Consultado el 16 de febrero de 2015 .
- ^ "Microcontrolador FLASH LGT8F88A". LogicGreen Technologies. Archivado desde el original el 2017-08-29 . Consultado el 2019-01-18 ,un clon del ATmega88.
- ^ "Microcontroladores" (en ruso). Voronezh: OAO "NIIET". Archivado desde el original el 22 de agosto de 2017 . Consultado el 22 de agosto de 2017 .
Lectura adicional
- Williams, Elliot (2014). Programación AVR: aprender a escribir software para hardware . Maker Media. ISBN 978-1449355784.
- Schmidt, Maik (2011). Arduino: una guía de inicio rápido . Pragmatic Bookshelf. ISBN 978-1-934356-66-1.
- Margush, Timothy S. (2011). Algo de ensamblaje requerido: programación en lenguaje ensamblador con el microcontrolador AVR . CRC Press. ISBN 978-1439820643.
- Mazidi, Muhammad Ali; Naimi, Sarmad; Naimi, Sepehr (2010). Microcontrolador AVR y sistemas integrados: uso de ensamblaje y C. Pearson. ISBN 978-0138003319.
Enlaces externos
- Sitio web oficial
- AVR de Atmel
- Comunidad oficial
- Comunidad de fanáticos de AVR
- Foro de Microchip
- Diagramas de distribución de pines
- Paquetes AVR DIP: ATtiny44/45/84/85, ATmega328P, ATmega644P, ATmega1284P
- Paquetes AVR SMD: ATmega328, ATmega2560, ATmega32U4
- Simuladores
- AVR8js (simulador de 8 bits en el navegador)
