Articulo de referencia

microcontroladores AVR

Logotipo de AVR Varios microcontroladores AVR antiguos: ATmega8 en encapsulado DIP -28N de 28 pines, ATxmega128A1 en encapsulado TQFP -100 de 100 pines y ATtiny45 en encapsulado...

Logotipo de AVR
Varios microcontroladores AVR antiguos: ATmega8 en encapsulado DIP -28N de 28 pines, ATxmega128A1 en encapsulado TQFP -100 de 100 pines y ATtiny45 en encapsulado SO -8 de 8 pines.
El microcontrolador ATmega328 P viene en un encapsulado DIP -28N de 28 pines. Se encuentra comúnmente en las placas Arduino .

AVR es una familia de microcontroladores desarrollada desde 1996 por Atmel y adquirida por Microchip Technology en 2016. Son microcontroladores RISC de un solo chip de 8 bits basados ​​en una arquitectura Harvard modificada. AVR fue una de las primeras familias de microcontroladores en utilizar memoria flash integrada para el almacenamiento de programas, a diferencia de la ROM programable una sola vez , la EPROM o la EEPROM que utilizaban otros microcontroladores en aquel entonces.

Los microcontroladores AVR se utilizan ampliamente como sistemas embebidos . Son especialmente comunes en aplicaciones embebidas para aficionados y en el ámbito educativo, popularizadas por su inclusión en muchas de las placas de desarrollo de hardware abierto de la línea Arduino .

La arquitectura del microcontrolador AVR de 8 bits se introdujo en 1997. Para 2003, Atmel había enviado 500 millones de microcontroladores flash AVR. [ 1 ]

Historia

La arquitectura AVR fue concebida por dos estudiantes del Instituto Noruego de Tecnología (NTH), [ 2 ] Alf-Egil Bogen [ 3 ] y Vegard Wollan. [ 4 ]

Atmel afirma que el nombre AVR no es un acrónimo ni significa nada en particular. Los creadores del AVR no dan una respuesta definitiva sobre el significado de las siglas "AVR". [ 4 ] Sin embargo, se acepta comúnmente que AVR significa procesador RISC de Alf y Vegard . [ 5 ] Cabe señalar que el uso de "AVR" en este artículo se refiere generalmente a la línea RISC de 8 bits de los microcontroladores Atmel AVR.

El microcontrolador AVR original se desarrolló en una empresa local de diseño de ASIC en Trondheim, Noruega , llamada Nordic VLSI en aquel entonces (ahora Nordic Semiconductor ), donde Bogen y Wollan trabajaban como estudiantes. Se le conocía como μRISC (Micro RISC) [ 6 ] y estaba disponible como IP/bloque de construcción de silicio de Nordic VLSI. [ 7 ] Cuando Nordic VLSI vendió la tecnología a Atmel , Bogen y Wollan desarrollaron aún más la arquitectura interna en Atmel Norway, una filial de Atmel. Los diseñadores colaboraron estrechamente con los desarrolladores de compiladores de IAR Systems para garantizar que el conjunto de instrucciones AVR proporcionara una compilación eficiente de lenguajes de alto nivel . [ 8 ]

Entre los primeros microcontroladores de la línea AVR se encontraba el AT90S8515, que en un encapsulado DIP de 40 pines tenía la misma distribución de pines que un microcontrolador 8051 , incluyendo el bus de direcciones y datos multiplexado externo. La polaridad de la línea RESET era opuesta (el 8051 tiene un RESET activo en alto, mientras que el AVR tiene un RESET activo en bajo ), pero aparte de eso, la distribución de pines era idéntica.

La plataforma Arduino , desarrollada para proyectos electrónicos sencillos, se lanzó en 2005 e incorporaba microcontroladores ATmega8 AVR.

Descripción general del dispositivo

El AVR es una máquina con arquitectura Harvard modificada, donde el programa y los datos se almacenan en sistemas de memoria física separados que aparecen en diferentes espacios de direcciones, pero con 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 se caracteriza por microcontroladores de tamaño reducido 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 megaAVR 0.
  • Sistema de eventos
  • Conjunto de instrucciones AVRxt mejorado (sincronización de llamadas mejorada), multiplicador de hardware

megaAVR – la serie ATmega

La serie ATmega incluye microcontroladores que proporcionan un conjunto de instrucciones extendido (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, así como una amplia gama de pines disponibles. La serie megaAVR 0 (lanzada en 2016) también cuenta con funcionalidades como:

  • Sistema de eventos
  • Nuevos periféricos con funcionalidad mejorada
  • Conjunto de instrucciones AVRxt mejorado (mejora en la sincronización de las llamadas).

AVR Dx : La familia AVR Dx incluye varias series de microcontroladores, centradas en la interacción persona-ordenador (HCI) , el acondicionamiento de señales analógicas y la seguridad funcional.

Los números de pieza tienen el formato AVR ff D xpp , donde ff es el tamaño de la memoria flash, x es la familia y pp es el número de pines. Ejemplo: AVR128DA64: serie DA de 64 pines con memoria flash de 128k. Todos los dispositivos de la familia AVR Dx incluyen:

  • un temporizador asíncrono de tipo D que puede ejecutarse más rápido que la CPU
  • Convertidor analógico-digital de 12 bits
  • DAC de 10 bits
  • Serie AVR DA (principios de 2020): La alta densidad de memoria hace que estos microcontroladores sean idóneos para funciones que requieren un uso intensivo de pilas de comunicación, tanto cableadas como inalámbricas.
    • Sensores integrados para la medición táctil capacitiva ( HCI )
    • periféricos independientes del núcleo ( CIP ) y periféricos analógicos actualizados
    • sin cristal de alta frecuencia externo
  • Serie AVR DB (mediados-finales de 2020): hereda muchas características de la familia DA, a la vez que añade las suyas propias:
    • 2 o 3 amplificadores operacionales integrados en el chip
    • E/S multivoltaje (MVIO) en PORTC
    • Admite cristal HF externo
  • Serie AVR DD
    • Flash de 16–64 KiB
    • Memoria SRAM de 2 a 8 KiB
    • encapsulado de 14 a 32 pines
    •  oscilador interno de 24 MHz
    • Convertidor analógico-digital (ADC) diferencial de 12 bits y 130 kS/s, de 7 a 23 canales.
    • sin amplificadores
    • 1 comparador analógico
    • Dos USART, un SPI, un TWI de modo dual
    • Soporte para entrada/salida multivoltaje (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–64 KiB
    • encapsulado de 28 a 48 pines
    •  oscilador interno de 20 MHz
    • Convertidor analógico-digital (ADC) diferencial de 12 bits y 130 kS/s, de 24 a 32 canales.
    • Amplificador de ganancia programable (PGA) con hasta 16x de ganancia
    • 2 comparadores analógicos
    • Tres USART, un SPI, un TWI de modo dual
    • Sin entrada/salida multivoltaje (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, tales como:

Regulador automático de voltaje (AVR) específico para la aplicación

  • Los megaAVR incorporan funciones especiales que no se encuentran en otros miembros de la familia AVR, como controlador LCD, controlador USB , PWM avanzado, CAN, etc.

FPSLIC (AVR con FPGA)

  • FPGA de 5k a 40k compuertas
  • Memoria SRAM para el código del programa AVR, a diferencia de todos los demás AVR.
  • El núcleo AVR puede funcionar hasta a 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, sin relación con la 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 al de 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 se eliminó de Linux a partir del kernel 4.12; el soporte del compilador para la arquitectura en GCC nunca se incorporó al repositorio central de código fuente del compilador y estaba disponible principalmente en una bifurcación con soporte del proveedor. En el momento en que se introdujo AVR32, Atmel ya era licenciatario de la arquitectura ARM , y los microcontroladores ARM7 y ARM9 se habían lanzado antes y simultáneamente con AVR32; Posteriormente, 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

Atmel ATxmega128A1 en encapsulado TQFP de 100 pines
Disparo de matriz ATMEL MEGA32U4

Los microcontroladores AVR tienen 32 registros de un solo byte y se clasifican como dispositivos RISC de 8 bits.

La memoria flash , la EEPROM y la SRAM están integradas en un solo chip, lo que elimina la necesidad de memoria externa en la mayoría de las aplicaciones. Algunos dispositivos cuentan con una opción de bus externo paralelo para añadir memoria de datos adicional o dispositivos mapeados en memoria. Casi todos los dispositivos (excepto los chips TinyAVR más pequeños) disponen de interfaces serie, que permiten conectar EEPROM o chips flash serie de mayor tamaño.

Memoria del programa

Las instrucciones del programa se almacenan en memoria flash no volátil . Aunque los microcontroladores 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 dispositivo (por ejemplo, la línea ATmega64x tiene 64 KB de memoria flash, mientras que la línea ATmega32x tiene 32 KB). No se dispone de memoria de programa externa; todo el código ejecutado por el núcleo AVR debe residir en la memoria flash integrada. Sin embargo, esta limitación no se aplica a los chips AVR/FPGA AT94 FPSLIC.  

Memoria interna de datos

El espacio de direcciones de datos consta del archivo de registros , los registros de E/S y la 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 van seguidos de 160 registros de "E/S extendida", accesibles únicamente como E/S asignadas a 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 .

Aunque existen esquemas de direccionamiento separados y códigos de operación optimizados para acceder al banco de registros y a los primeros 64 registros de E/S, todos ellos también pueden ser direccionados y manipulados como si estuvieran en la memoria SRAM.

Las variantes más pequeñas del tinyAVR utilizan una arquitectura reducida con solo 16 registros (se omiten los registros 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 la SRAM. Además, estos dispositivos presentan 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 amplía para incluir también memoria no volátil, como la memoria Flash y los 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 registros de trabajo no se asigna al 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 asignan al espacio de direcciones de datos 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 aumentado sustancialmente a 4096 bytes (0000 16 –0FFF 16 ). Sin embargo, al igual que en las generaciones anteriores, las instrucciones de manipulación de E/S rápidas 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 asignar la EEPROM interna al espacio de direcciones de datos (1000 16 –1FFF 16 ). La SRAM real se encuentra después de estos rangos, comenzando en 2000 16 .

Puertos de entrada/salida de propósito general (GPIO)

Cada puerto GPIO de un microcontrolador AVR, ya sea pequeño o grande, 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 puede utilizarse para conmutar pines: escribir un uno lógico en un bit del PIN x conmuta el bit correspondiente en el PUERTO x , independientemente de la configuración del bit DDR x . [ 10 ]

Los microcontroladores ATtiny AVR más recientes, como el ATtiny817 y sus variantes, tienen sus registros de control de puertos definidos de forma algo diferente. Los microcontroladores xmegaAVR cuentan con registros adicionales para configuraciones push/pull, tótem y pull-up.

EEPROM

Casi todos los microcontroladores AVR cuentan con una memoria EEPROM interna para el almacenamiento semipermanente de datos. Al igual que la memoria flash, la EEPROM conserva su contenido incluso cuando se interrumpe el suministro eléctrico.

En la mayoría de las variantes de la arquitectura AVR, esta memoria EEPROM interna no está asignada al espacio de memoria direccionable del microcontrolador. Solo se puede acceder a ella de la misma manera que a un dispositivo periférico externo, utilizando 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 EEPROM a la memoria de datos o de programa, según la configuración. La familia XMEGA también permite asignar la EEPROM al espacio de direcciones de datos.

Dado que el número de escrituras en la EEPROM es limitado ( Atmel especifica 100.000 ciclos de escritura en sus hojas de datos ), una rutina de escritura de EEPROM bien diseñada debería comparar el contenido de una dirección de EEPROM con el contenido deseado y solo realizar una escritura real si es necesario cambiar el contenido.  

Ejecución del programa

Los microcontroladores AVR de Atmel cuentan con un diseño de segmentación de dos etapas y un solo nivel , lo que significa que la siguiente instrucción de máquina se obtiene mientras se ejecuta la actual. La mayoría de las instrucciones tardan solo uno o dos ciclos de reloj, lo que convierte a los AVR en microcontroladores relativamente rápidos de ocho bits .

Los procesadores AVR fueron diseñados teniendo en cuenta la ejecución eficiente de código C compilado y cuentan con varios punteros integrados para dicha tarea.

Conjunto de instrucciones

El conjunto de instrucciones 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 AVR ha competido. Sin embargo, no es completamente regular:

  • Los registros de puntero X, Y y Z tienen capacidades de direccionamiento diferentes entre sí.
  • Las ubicaciones de registro R0 a R15 tienen capacidades de direccionamiento más limitadas que las ubicaciones de registro R16 a R31.
  • Los puertos de E/S del 0 al 31 pueden direccionarse por bits, a diferencia de los puertos de E/S del 32 al 63.
  • La instrucción CLR (borrar todos los bits a cero) afecta a los indicadores, mientras que SER (establecer todos los bits a uno) no lo hace, aunque sean instrucciones complementarias. (CLR es una pseudo-operació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 las operaciones de movimiento/carga/almacenamiento/salto como LDI no lo hacen).
  • El acceso a los datos de solo lectura almacenados en la memoria de programa (flash) requiere instrucciones LPM especiales; de lo contrario, el bus flash está reservado para la memoria de instrucciones.

Algunas diferencias específicas de cada chip afectan a 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 salto y llamada con rangos más largos; y así sucesivamente.

El conjunto de instrucciones, en su mayoría estándar, hace que los compiladores de C (e incluso de Ada) sean bastante sencillos y eficientes. GCC incluye soporte para AVR desde hace bastante tiempo, y dicho soporte es ampliamente utilizado. LLVM también cuenta con soporte rudimentario para AVR. De hecho, Atmel solicitó la opinión de los principales desarrolladores de compiladores para microcontroladores pequeños, con el fin de determinar las características del conjunto de instrucciones más útiles en un compilador para lenguajes de alto nivel. [ 8 ]

Velocidad del microcontrolador

La línea AVR suele admitir velocidades de reloj de 0 a 20  MHz, y algunos dispositivos alcanzan los 32  MHz. El funcionamiento con menor consumo de energía generalmente requiere una velocidad de reloj reducida. Todos los AVR recientes (Tiny, Mega y Xmega, pero no el 90S) incorporan un oscilador integrado, lo que elimina la necesidad de relojes externos o circuitos resonadores. Algunos AVR también cuentan con un preescalador de reloj del sistema que puede dividir la frecuencia del reloj del sistema hasta por 1024. Este preescalador se puede reconfigurar mediante software durante la ejecución, lo que permite optimizar la velocidad del reloj.

Dado que todas las operaciones (excepto 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 operaciones de carga y almacenamiento en memoria tardan dos ciclos, y las bifurcaciones también. Las bifurcaciones en los últimos microcontroladores de "PC de 3 bytes", como el ATmega2560, son un ciclo más lentas que en dispositivos anteriores.

Desarrollo

Los microcontroladores AVR gozan de gran popularidad gracias a las herramientas de desarrollo gratuitas y económicas disponibles, incluyendo placas de desarrollo a precios razonables y software de desarrollo gratuito. Los AVR se comercializan bajo diversas marcas 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.

El compilador cruzado Atmel AVR GNU C/C++ , "avr-gcc" y "avr-g++", se utiliza tanto en WinAVR como en Atmel Studio. [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] El equipo de Arduino tomó prestado de WinAVR para la versión de Windows del software de Arduino . [ 17 ]

Consulte los enlaces externos para acceder a sitios relacionados con el desarrollo de AVR.

Características

Los receptores AV ofrecen una amplia gama de funciones:

  • Puertos de E/S multifuncionales, bidireccionales y de propósito general con resistencias pull-up integradas y configurables.
  • Múltiples osciladores internos, incluyendo un oscilador RC sin partes externas.
  • Memoria flash de instrucciones interna y autoprogramable de hasta 256  KB (384  KB en XMega).
    • Programable en el sistema mediante interfaces propietarias de bajo voltaje serie/paralelo 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 mediante programación en el sistema (ISP) o HVSP. Por defecto, los microcontroladores 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 un número reducido de pines, ya que solo requiere uno.
  • Memoria EEPROM interna de hasta 4  KB
  • Memoria SRAM interna de hasta 16  KB (32  KB en XMega)
  •  En ciertos modelos, incluidos el Mega8515 y el Mega162, se requiere un espacio de datos externo de 64 KB en formato little-endian.
    • El espacio de datos externo se superpone al espacio de datos interno, de modo que el  espacio de direcciones 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 modelos 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 acceso directo a hasta 16 MB de memoria de datos.
  • Temporizadores de 8 y 16 bits
    • Salida PWM (algunos dispositivos cuentan con un periférico PWM mejorado que incluye un generador de tiempo muerto).
    • Captura de entrada que registra una marca de tiempo activada por un flanco 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
  • detección de bajadas de tensión
  • Temporizador de vigilancia (WDT)
  • Múltiples modos de suspensión para ahorrar energía
  • Modelos de controladores para iluminación y control de motores ( específicos para PWM )
  • Compatibilidad con controladores CAN
  • Compatibilidad con controladores USB
    • Hardware y controlador Hub de alta velocidad (12  Mbit/s) con AVR integrado.
    • También se ofrecen gratuitamente emulaciones de software de manipulación de bits de baja velocidad (1,5  Mbit/s) ( HID ).
  • Compatibilidad con controladores Ethernet
  • Soporte para controlador LCD
  • Dispositivos de bajo voltaje que funcionan hasta 1,8  V (hasta 0,7  V para componentes con convertidor ascendente CC-CC incorporado).
  • Dispositivos picoPower
  • Controladores DMA y comunicación periférica del "sistema de eventos".
  • Soporte criptográfico rápido para AES y DES.

Interfaces de programación

Existen diversas maneras de cargar código de programa en un chip AVR. Los métodos de programación varían según la familia de chips AVR. La mayoría de los métodos descritos a continuación utilizan la línea RESET para entrar en modo de programación. Para evitar que el chip entre accidentalmente en dicho modo, se recomienda conectar una resistencia pull-up entre el pin RESET y la fuente de alimentación positiva. [ 22 ]

Proveedor de servicios de Internet

Diagramas de conectores ISP de 6 y 10 pines

El método de programación en sistema (ISP) se realiza funcionalmente a través de SPI , con la posibilidad de modificar la línea de reinicio. Siempre que los pines SPI del AVR no estén conectados a nada que pueda interferir, el chip AVR puede permanecer soldado a la placa de circuito impreso durante la reprogramación. Solo se necesita 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 un ordenador 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 serie y varios programadores de terceros y de "hágalo usted mismo". [ 23 ]

PDI

La interfaz de programación y depuración (PDI) es una interfaz propietaria 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 logra 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. [ 24 ]

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 recientes. Los chips UPDI se pueden programar mediante un Atmel-ICE, un PICkit 4, un Arduino (programado con jtag2updi) [ 25 ] o a través de una UART (con una resistencia de 1 kΩ entre los pines TX y RX) controlada por la utilidad pymcuprog de Python de Microchip. [ 26 ]

Serie de alto voltaje

La programación serial de alto voltaje (HVSP) [ 27 ] se utiliza principalmente como modo de respaldo en microcontroladores AVR pequeños. Un encapsulado AVR de 8 pines no ofrece muchas combinaciones de señales únicas para poner el AVR en modo de programación. Sin embargo, el AVR solo debe recibir una señal de 12 voltios durante la programación y nunca durante el funcionamiento normal. El modo de alto voltaje también se puede usar en algunos dispositivos donde el pin de reinicio está deshabilitado por fusibles.

Paralelo de alto voltaje

La programación paralela de alto voltaje (HVPP) se considera el "último recurso" y puede ser la única manera de corregir la configuración incorrecta de los fusibles en un chip AVR.

Cargador de arranque

La mayoría de los modelos AVR pueden reservar una región de gestor de arranque  , de 256 bytes a 4  KB, donde puede residir el código de reprogramación. Al reiniciarse, el gestor de arranque se ejecuta primero y determina, mediante programación del usuario, si se debe reprogramar o saltar a la aplicación principal. El código puede reprogramar a través de cualquier interfaz disponible, o bien leer un binario cifrado mediante un adaptador Ethernet como PXE . Atmel dispone de notas de aplicación y código para diversas interfaces de bus. [ 28 ] [ 29 ] [ 30 ] [ 31 ]

memoria de sólo lectura

La serie AT90SC de AVR está disponible con una ROM de máscara de fábrica para la memoria de programa, en lugar de flash. [ 32 ] Debido al alto costo inicial y la cantidad mínima de pedido, una ROM de máscara solo es rentable para series de producción altas.

aWire

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 para la depuración, que en su mayoría implican la depuración en el propio chip mientras este se encuentra en el sistema de destino.

debugWIRE

debugWIRE es la solución de Atmel para proporcionar capacidades de depuración en el chip mediante un único pin del microcontrolador. Resulta útil para componentes con pocos pines que no disponen de los cuatro pines "libres" necesarios para JTAG. Los microcontroladores JTAGICE mkII y mkIII, así como el AVR Dragon, son compatibles con debugWIRE. Este chip se desarrolló después del lanzamiento original de JTAGICE, y actualmente sus clones también lo admiten.

JTAG

La función Joint Test Action Group ( JTAG ) proporciona acceso a la funcionalidad de depuración en el chip mientras este se ejecuta en el sistema de destino. [ 33 ] JTAG permite acceder a la memoria y los registros internos, establecer puntos de interrupción en el código y ejecutar paso a paso para observar el comportamiento del sistema.

Atmel ofrece una serie de adaptadores JTAG para el AVR:

  1. El Atmel-ICE [ 34 ] es el adaptador más reciente. Admite las interfaces JTAG, debugWire, aWire, SPI, TPI y PDI.
  2. El JTAGICE 3 [ 35 ] es un depurador de gama media de la familia JTAGICE (JTAGICE mkIII). Admite las interfaces JTAG, aWire, SPI y PDI.
  3. El JTAGICE mkII [ 36 ] reemplaza al JTAGICE y tiene un precio similar. El JTAGICE mkII se conecta al PC mediante USB y admite tanto JTAG como la interfaz debugWIRE más reciente. Numerosos clones de terceros del dispositivo Atmel JTAGICE mkII comenzaron a comercializarse después de que Atmel publicara el protocolo de comunicación. [ 37 ]
  4. El AVR Dragon [ 38 ] es una alternativa económica (aproximadamente $50) al JTAGICE mkII para ciertos componentes. El AVR Dragon ofrece programación serial en sistema, programación serial de alto voltaje y programación paralela, así como emulación de JTAG o debugWIRE para componentes con 32  KB de memoria de programa o menos. ATMEL modificó la función de depuración del AVR Dragon con el firmware más reciente de AVR Studio 4 – AVR Studio 5, y ahora admite dispositivos con más de 32  KB de memoria de programa.
  5. El adaptador JTAGICE se conecta al PC mediante un puerto serie estándar. [ 39 ] Aunque Atmel ha declarado que el adaptador JTAGICE ha llegado al final de su ciclo de vida , todavía es compatible con AVR Studio y otras herramientas.

JTAG también se puede usar para realizar una prueba de escaneo de límites [ 40 ] , que prueba las conexiones eléctricas entre los AVR y otros chips compatibles con escaneo de límites en un sistema. El escaneo de límites es muy adecuado para una línea de producción, mientras que el aficionado probablemente obtendrá mejores resultados realizando las pruebas con un multímetro o un osciloscopio.

Herramientas de desarrollo y kits de evaluación

Placa de desarrollo Atmel STK500

Las herramientas de desarrollo y los kits de evaluación oficiales de Atmel AVR contienen varios 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 el sistema de desarrollo STK600 es una actualización del STK500. [ 41 ] 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 conexión para todas las señales GPIO del dispositivo de destino.

Las placas de destino disponen de zócalos ZIF para encapsulados 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 dirige las señales al pin correspondiente en la placa del dispositivo. Existen diversas placas de enrutamiento de señales que se pueden usar con una misma placa de destino, dependiendo del dispositivo instalado en el zócalo ZIF.

El STK600 permite la programación en sistema desde el PC mediante 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", permite conectar cualquier puerto USART de nivel TTL del chip a un chip MAX232 integrado para convertir las señales a niveles RS-232. Las señales RS-232 se conectan a los pines RX, TX, CTS y RTS del conector DB-9.

Kit de inicio STK500

El kit de desarrollo y kit de inicio STK500 incluye programación en serie (ISP) y programación de alto voltaje (HVP) para todos los dispositivos AVR, ya sea directamente o mediante tarjetas de expansión. La tarjeta está equipada con zócalos DIP para todos los AVR disponibles en encapsulados DIP.

Módulos de expansión STK500: Existen varios módulos de expansión disponibles para la placa STK500:

  • STK501: Añade compatibilidad con microcontroladores en encapsulados TQFP de 64 pines.
  • STK502: Añade compatibilidad con microcontroladores LCD AVR en encapsulados TQFP de 64 pines.
  • STK503: Añade compatibilidad con microcontroladores en encapsulados TQFP de 100 pines.
  • STK504: Añade compatibilidad con microcontroladores LCD AVR en encapsulados TQFP de 100 pines.
  • STK505: Añade compatibilidad con microcontroladores AVR de 14 y 20 pines.
  • STK520: Añade compatibilidad con microcontroladores de 14, 20 y 32 pines de las familias AT90PWM y ATmega.
  • STK524: Añade compatibilidad con la familia de microcontroladores ATmega32M1/C1 de 32 pines para CAN/LIN/Control de Motor.
  • STK525: Añade compatibilidad con los microcontroladores AT90USB en encapsulados TQFP de 64 pines.
  • STK526: Añade compatibilidad con los microcontroladores AT90USB en encapsulados TQFP de 32 pines.

Kit de inicio STK200

El kit de desarrollo y kit de inicio STK200 cuenta con un zócalo DIP compatible con chips AVR de 40, 20 u 8 pines. La placa incluye una  fuente de reloj de 4 MHz, 8 LED , 8 botones de entrada, un puerto RS-232 , un zócalo para una memoria SRAM  de 32 KB y numerosas entradas/salidas generales. El chip se puede programar mediante un dongle conectado al puerto paralelo.

Atmel-ICE

El Atmel ICE es la herramienta económica actualmente compatible para programar y depurar todos los dispositivos AVR (a diferencia de AVRISP/AVRISP mkII, Dragon, etc., que se describen más adelante). Se conecta a un PC y recibe alimentación desde él mediante USB, y es compatible con las 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 las admita cada dispositivo:

  • Dispositivos AVR XMEGA de 8 bits a través de la interfaz PDI de 2 hilos.
  • 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 para TPI
  • Microcontroladores basados ​​en Arm Cortex-M de 32 bits SAM a través de SWD

Se admiten rangos de voltaje de funcionamiento 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 desde 7,5  kbit/s hasta 7  Mbit/s.
  • Admite velocidades de transmisión debugWIRE desde 4  kbit/s hasta 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 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 permite la transmisión de datos desde un dispositivo de destino al ordenador conectado. Esta interfaz sirve como complemento útil para la unidad, permitiendo la demostración de las funciones de la aplicación y facilitando la depuración a nivel de aplicación.

AVRISP y AVRISP mkII

AVRISP mkII

AVRISP y AVRISP mkII son herramientas económicas que permiten programar todos los microcontroladores AVR mediante ICSP .

El AVRISP se conecta a un PC mediante un puerto serie y se alimenta 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 un PC mediante USB y se alimenta a través de este puerto. Unos LED visibles a través de la carcasa translúcida indican el estado de la alimentación del dispositivo.

Dado que el AVRISP mkII carece de circuitos integrados de controlador/búfer, [ 42 ] puede presentar problemas al programar placas de destino con múltiples cargas en sus líneas SPI. En tales casos, se requiere un programador capaz de suministrar mayor corriente. Como alternativa, el AVRISP mkII aún puede utilizarse si se colocan 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 están descatalogados y sus páginas de producto han sido eliminadas del sitio web de Microchip. A julio de 2019, el AVRISP mkII aún se encuentra disponible en varios distribuidores. También existen varios clones de terceros.

Dragón AVR

AVR Dragon con cable de programación ISP y zócalo ZIF azul/verdoso conectado.

El Atmel Dragon es una herramienta económica que se conecta a un PC mediante USB. El Dragon puede programar todos los AVR a través de JTAG, HVP, PDI [ 43 ] 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 a dispositivos con 32  KB o menos de memoria de programa se ha eliminado en AVR Studio 4.18. [ 44 ] El Dragon tiene un área de prototipado pequeña que puede alojar un AVR de 8, 28 o 40 pines, incluyendo conexiones a los pines de alimentación y programación. No hay espacio para circuitos adicionales, aunque esto puede proporcionarse mediante un producto de terceros llamado "Dragon Rider". [ 45 ]

JTAGICE

La herramienta de depuración JTAG In Circuit Emulator (JTAGICE) permite la depuración en chip (OCD) de microcontroladores AVR con interfaz JTAG. La versión original de JTAGICE (a veces denominada retroactivamente JTAGICE mkI) utiliza una interfaz RS-232 para conectarse a un PC y solo puede programar microcontroladores AVR con interfaz JTAG. La versión JTAGICE mkI ya no se fabrica, pero ha sido reemplazada por la versión JTAGICE mkII.

JTAGICE mkII

La herramienta de depuración JTAGICE mkII admite la depuración en chip (OCD) de microcontroladores AVR con interfaces SPI, JTAG, PDI y debugWIRE. La interfaz debugWire permite depurar utilizando un solo pin (el pin de reinicio), lo que facilita la depuración de aplicaciones que se ejecutan en microcontroladores con pocos pines.

El JTAGICE mkII se conecta mediante USB, pero también dispone de una conexión alternativa a través de un puerto serie, que requiere una fuente de alimentación independiente. Además de JTAG, el mkII admite programación ISP (mediante adaptadores de 6 o 10 pines). Tanto la conexión USB como la serie 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 mediante USB y admite las interfaces JTAG, aWire, SPI y PDI. [ 46 ] El kit incluye varios adaptadores para su uso con la mayoría de las configuraciones de pines de interfaz.

¡AVR UNO!

AVR ONE! es una herramienta de desarrollo profesional para todos los dispositivos AVR de Atmel de 8 y 32 bits con capacidad de depuración en chip. Admite los modos de programación SPI, JTAG, PDI y aWire, así como la depuración mediante las interfaces debugWIRE, JTAG, PDI y aWire. [ 47 ]

Tablero de demostración de mariposas

Microcontrolador Atmel ATmega169 en encapsulado MLF de 64 pines en la parte posterior de una placa Atmel AVR Butterfly.

La popular placa de demostración AVR Butterfly es un ordenador autónomo alimentado por batería que ejecuta el microcontrolador Atmel AVR ATmega169V. Fue construida para mostrar la familia AVR, especialmente una interfaz LCD integrada que era novedosa en aquel entonces. La placa incluye la pantalla LCD, joystick, altavoz, puerto serie, reloj en tiempo real (RTC), chip de memoria flash y sensores de temperatura y voltaje. Las versiones anteriores de la AVR Butterfly también contenían una fotorresistencia de CdS ; esta no está presente en las placas Butterfly producidas después de junio de 2006 para cumplir con la normativa RoHS . [ 48 ] La pequeña placa tiene un alfiler en la parte posterior para que pueda usarse como identificación.

El AVR Butterfly viene con software preinstalado para demostrar las capacidades del microcontrolador. El firmware de fábrica permite mostrar tu nombre, las lecturas de los sensores y la hora. El AVR Butterfly también cuenta con un transductor piezoeléctrico que se puede usar para reproducir sonidos y música.

El microcontrolador AVR Butterfly demuestra el control de una pantalla LCD mediante una pantalla de 14 segmentos con seis caracteres alfanuméricos. Sin embargo, la interfaz LCD consume muchos pines de entrada/salida.

La CPU ATmega169 de la placa Butterfly alcanza velocidades de hasta 8  MHz, pero viene configurada de fábrica a 2  MHz mediante software para preservar la duración de la batería de botón. Un gestor de arranque preinstalado permite reprogramar la placa mediante un conector serie RS-232 estándar con nuevos programas que los usuarios pueden escribir con las herramientas gratuitas del IDE de Atmel.

Llave USB AT90

Esta pequeña placa, aproximadamente la mitad del tamaño de una tarjeta de visita, tiene un precio ligeramente superior al de una AVR Butterfly. Incluye un microcontrolador AT90USB1287 con soporte USB On-The-Go (OTG), 16  MB de memoria DataFlash , LEDs, un pequeño joystick y un sensor de temperatura. La placa incluye software que le permite funcionar como dispositivo de almacenamiento masivo USB (su documentación se incluye en la memoria DataFlash), joystick USB y más. Para funcionar como host USB, requiere alimentación por batería, pero cuando se utiliza como periférico USB, solo necesita la alimentación suministrada por USB.

Únicamente el puerto JTAG utiliza  la configuració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 permite tanto la programación como la depuración, ya que la  limitación de 32 KB se eliminó en AVR Studio 4.18, y el JTAGICE mkII es capaz de programar y depurar el procesador. Este también puede programarse mediante USB desde un host Windows o Linux, utilizando los protocolos USB de "Actualización de Firmware del Dispositivo". Atmel incluye programas de ejemplo propietarios (con código fuente incluido, pero distribución restringida) y una pila de protocolos USB con el dispositivo.

LUFA [ 49 ] es una pila de protocolo USB de software libre de terceros ( licencia MIT ) para USBKey y otros AVR USB de 8 bits.

Kit inalámbrico Raven

El kit RAVEN permite el desarrollo inalámbrico mediante los chipsets IEEE 802.15.4 de Atmel , compatibles con Zigbee y otras tecnologías inalámbricas. Se asemeja a un par de tarjetas Butterfly inalámbricas de mayor potencia, junto con una llave USB inalámbrica, y su precio ronda los 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 de licencia libre). Los módulos de radio funcionan con procesadores ATmega1284p, que a su vez cuentan con una pantalla LCD segmentada personalizada controlada por un procesador ATmega3290p. Los periféricos Raven son similares a los de Butterfly: altavoz piezoeléctrico, memoria DataFlash (de mayor capacidad), EEPROM externa, sensores,  cristal de 32 kHz para RTC , etc. Están diseñados para el desarrollo de nodos de sensores remotos, el control de relés o cualquier otra aplicación necesaria.

La memoria USB utiliza un chip AT90USB1287 para conectarse a un host USB y a los  enlaces inalámbricos de 2,4 GHz. Estos están diseñados para monitorizar y controlar los nodos remotos, alimentándose de la energía del host en lugar de utilizar baterías locales.

Programadores externos

Existe una amplia variedad de herramientas de programación y depuración de terceros disponibles para el AVR. Estos dispositivos utilizan diversas interfaces, incluyendo RS-232, puerto paralelo de PC y USB. [ 50 ]

Usos

Placa Arduino Duemilanove con microcontrolador Atmel AVR ATmega328 de 28 pines DIP.
Controlador Atmel AVR ATmega8 DIP de 28 pines en una placa de desarrollo personalizada

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 ejemplos de su uso actual 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 anteriores a la Diecimila). Los microcontroladores ATmega1280 y ATmega2560, con mayor número de pines y capacidad de memoria, también se han utilizado para desarrollar la plataforma Arduino Mega . Las placas Arduino pueden utilizarse con su lenguaje y entorno de desarrollo integrado (IDE ), o con entornos de programación más convencionales ( C , ensamblador , etc.), al igual que las plataformas AVR estandarizadas y ampliamente disponibles.

Los receptores AV basados ​​en USB se han utilizado en los mandos de Microsoft Xbox. La conexión entre los mandos y la Xbox es USB.

Numerosas empresas producen placas de microcontroladores basadas en AVR destinadas a aficionados, constructores de robots, experimentadores y desarrolladores de sistemas pequeños, entre ellas: Cubloc, [ 51 ] gnusb, [ 52 ] BasicX , [ 53 ] Oak Micros, [ 54 ] ZX Microcontrollers, [ 55 ] y myAVR. [ 56 ] También existe una gran comunidad de placas compatibles con Arduino que dan soporte a usuarios similares.

Schneider Electric solía producir el chip de control de movimiento y motor M3000, que incorporaba un núcleo Atmel AVR y un controlador de movimiento avanzado para su uso en diversas aplicaciones de movimiento, pero este ha sido descontinuado. [ 57 ]

clones de FPGA

Con la creciente popularidad de las FPGA en la comunidad de código abierto, se han empezado a desarrollar procesadores de código abierto compatibles con el conjunto de instrucciones AVR. El sitio web de OpenCores enumera los siguientes proyectos principales de clones de AVR:

  • pAVR, [ 58 ] escrito en VHDL , tiene como objetivo crear el procesador AVR más rápido y con más funciones, mediante la implementación de técnicas que no se encuentran en el procesador AVR original, como una segmentación más profunda.
  • avr_core, [ 59 ] escrito en VHDL , es un clon destinado a ser lo más parecido posible al ATmega103.
  • Navré, [ 60 ] escrito en Verilog , implementa todas las instrucciones de Classic Core y está orientado a un alto rendimiento y un bajo consumo de recursos. No admite interrupciones .
  • softavrcore, [ 61 ] escrito en Verilog , implementa el conjunto de instrucciones AVR hasta AVR5, admite interrupciones con confirmación automática opcional, ahorro de energía mediante el modo de suspensión , además de 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 podrían conectarse y configurarse para este núcleo. Dentro del paquete, también se incluye una versión completa de FreeRTOS como ejemplo de la utilización del núcleo y los periféricos.
  • La conferencia sobre CPU del proyecto opencores [ 62 ] escrita en VHDL por el Dr. Jürgen Sauermann explica en detalle cómo diseñar un sistema en un chip (SoC) completo basado en AVR.

Otros proveedores

Además de los chips fabricados por Atmel, LogicGreen Technologies ofrece clones. [ 63 ] Estas piezas no son clones exactos: tienen algunas características que no se encuentran en los chips de los que son "clon" 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 herramientas de programación diferentes.

El NIIET fabrica en Voronezh , Rusia, microcontroladores que utilizan la arquitectura ATmega, como parte de la serie 1887 de circuitos integrados. Esto incluye un ATmega128 con la designación 1887VE7T ( en ruso : 1887ВЕ7Т ). [ 64 ]

Referencias

  1. Comunicado de prensa de Atmel. "Atmel vende 500 millones de unidades de su microcontrolador AVR" .
  2. Desde 1996, NTH forma parte de la Universidad Noruega de Ciencia y Tecnología (NTNU).
  3. Blog de alfbogen.com
  4. 1 2 Archivado en Ghostarchivey la Wayback Machine: "La historia de AVR" . youtube.com. 12 de junio de 2008.
  5. "UNSW School of Computer Science and Engineering - General AVR Info" . Cse.unsw.edu.au. Archivado del original el 23 de junio de 2012. Consultado el 19 de septiembre de 2012 .
  6. Introducción a Atmel y al microcontrolador AVR
  7. "Sistemas embebidos y microcontroladores" (PDF) . Archivado del original (PDF) el 24/12/2004 . Consultado el 01/10/2018 .
  8. 1 2 Myklebust, Gaute. El codiseño del microcontrolador AVR y el compilador C (PDF) . Atmel Noruega. CiteSeerX 10.1.1.63.1447 . Recuperado el 19 de septiembre de 2012 . 
  9. Circuito integrado programable a nivel de sistema en campo . Archivado el 27/11/2012 en Wayback Machine .
  10. atmel.com
  11. Circuitos integrados para tarjetas inteligentes de Atmel
  12. Microchip. "Cadenas de herramientas para microcontroladores AVR (MCU)" .
  13. Timothy S Margush. "Se requiere algo de ensamblaje: Programación en lenguaje ensamblador con el microcontrolador AVR". 2016. "Capítulo 14: Programación del AVR en C" . pág. 539
  14. JM Hughes. "Arduino: Una referencia técnica" . 2016. págs. 127-131.
  15. Joe Pardue. "Programación en C para microcontroladores: con ATMEL's AVR Butterfly y el compilador gratuito WinAVR" . 2005.
  16. Elliot Williams. "Programación AVR" . 2014.
  17. Dale Wheat. "Arduino Internals" . 2011. pág. 227.
  18. "AVR319: Uso del módulo USI para comunicación SPI" (PDF) . Atmel . 2004. Archivado (PDF) del original el 17 de junio de 2012. Consultado el 10 de junio de 2014 .
  19. "Atmel AVR310: Uso del módulo USI como maestro I 2 C" (PDF) . Atmel . 2013. Archivado (PDF) del original el 14 de julio de 2014. Consultado el 10 de junio de 2014 .
  20. "AVR312: Uso del módulo USI como esclavo I 2 C" (PDF) . Atmel . 2005. Archivado (PDF) del original el 14 de julio de 2014. Consultado el 10 de junio de 2014 .
  21. "AVR307: UART semidúplex con el módulo USI" (PDF) . Atmel . 2003. Archivado (PDF) del original el 14 de julio de 2014. Consultado el 10 de junio de 2014 .
  22. "Consideraciones de diseño de hardware AVR" (PDF) (nota de aplicación). Atmel Corporation. Junio ​​de 2015. pág. 5. Archivado (PDF) del original el 22 de diciembre de 2014. Recuperado el 14 de junio de 2015. La línea de reinicio tiene una resistencia pull-up interna, pero si el entorno es ruidoso, puede resultar insuficiente y, por lo tanto, el reinicio puede ocurrir esporádicamente. 
  23. "Programador AVRDUDE" . Savannah.nongnu.org . Consultado el 19 de septiembre de 2012 .
  24. "Controlador de programación PDI" (PDF) . Archivado (PDF) del original el 25-03-2020 . Recuperado el 19-09-2012 .
  25. "GitHub - ElTangas/Jtag2updi: software de programación UPDI para Arduino (dirigido a los microcontroladores Tiny AVR-0/1/2, Mega AVR-0 y AVR-DA/DB)" . GitHub . 17 de diciembre de 2021.
  26. "pymcuprog - Programador de MCU en Python" . Github . Herramientas PIC y AVR de Microchip. 13 de noviembre de 2022. Consultado el 18 de noviembre de 2022 .
  27. "HVSP_Description" . Support.atmel.no. Archivado del original el 12-10-2009 . Recuperado el 19-09-2012 .
  28. "Cargador de arranque AVR cifrado con DES" (PDF) . Archivado (PDF) del original el 16 de mayo de 2005. Consultado el 19 de septiembre de 2012 .
  29. "Cargador de arranque AVR cifrado con AES" (PDF) . Consultado el 19 de septiembre de 2012 .
  30. "XMEGA Bootloader" (PDF) . Consultado el 19 de septiembre de 2012 .
  31. "AVR USB Bootloader" (PDF) . Archivado (PDF) del original el 28-06-2006 . Consultado el 19-09-2012 .
  32. "Microcontroladores Flash Autoprogramables de Atmel" . Archivado del original el 26 de julio de 2020. Consultado el 12 de marzo de 2020 .
  33. "Guía para comprender JTAG y los fusibles de seguridad en el AVR" . Consultado el 19 de septiembre de 2012 .
  34. "Atmel-ICE - Atmel Corporation" . Atmel.com . Consultado el 11 de septiembre de 2015 .
  35. "JTAGICE 3- Atmel Corporation" . Atmel.com . Consultado el 19 de septiembre de 2012 .
  36. "AVR JTAGICE mkII" . Atmel . Consultado el 13 de enero de 2013 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  37. "Protocolo de comunicación JTAGICE mkII" (PDF) . Archivado (PDF) del original el 16 de mayo de 2005. Consultado el 19 de septiembre de 2012 .
  38. "AVR Dragon" . Atmel . Consultado el 13 de enero de 2013 .
  39. "Guía del usuario de AVR JTAGICE mkII" (PDF) . microchip.com . Archivado (PDF) del original el 2 de julio de 2017. Consultado el 25 de marzo de 2020 .
  40. Comunicado de prensa de JTAGICE, 2004. Archivado el 7 de julio de 2011 en Wayback Machine.
  41. "STK600" . Atmel . Consultado el 13 de enero de 2013 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  42. "AVRISP mkII Desmontado" . Archivado del original el 8 de noviembre de 2014. Consultado el 8 de noviembre de 2014 .
  43. "AVR1005: Introducción a XMEGA, página 7" (PDF) . Atmel. Archivado (PDF) del original el 7 de octubre de 2009. Consultado el 7 de noviembre de 2011 .
  44. "Notas de la versión AVR Studio v4.18" . Consultado el 19 de septiembre de 2012 .
  45. "Tecnología ECROS - Jinete Dragón" . Ecrostech.com. 2 de marzo de 2008. Consultado el 19 de septiembre de 2012 .
  46. Página del producto JTAGICE3
  47. Página del producto AVR ONE!
  48. Mariposa AVR
  49. "LUFA (anteriormente MyUSB)" . Four Walled Cubicle . Consultado el 19 de septiembre de 2012 .
  50. Consulta avrffreaks.net para obtener una lista completa.
  51. "Comfile Technology" . Comfile Technology, Inc. Archivado del original el 17 de enero de 2013. Consultado el 13 de enero de 2013 .
  52. "gnusb: Caja de sensores USB de código abierto" . Consultado el 13 de enero de 2013 .
  53. "BasicX" . NetMedia, Inc. Archivado del original el 23 de mayo de 2013. Consultado el 13 de enero de 2013 .
  54. "Bienvenido a Oak Micros" . Oak Micros . Archivado del original el 25 de octubre de 2012. Consultado el 13 de enero de 2013 .
  55. "ZBasic" . Consultado el 13 de enero de 2013 .
  56. "myAVR" . Laser & Co. Solutions GmbH . Consultado el 13 de enero de 2013 .
  57. "M3000 Controlador de movimiento en un chip" . imshome.com . Schneider Electric Motion USA. Archivado del original el 2 de diciembre de 2009. Consultado el 2 de agosto de 2011 .
  58. "pAVR :: Overview" . OpenCores . Consultado el 19-09-2012 . 
  59. "AVR Core :: Overview" . OpenCores . Consultado el 19 de septiembre de 2012 . 
  60. "Descripción general del clon Navré AVR (RISC de 8 bits)" . OpenCores . Consultado el 19 de septiembre de 2012 .
  61. "Soft AVR Core + Interfaces Overview" . OpenCores . Consultado el 16 de junio de 2020 .
  62. "Clase sobre CPU" . OpenCores . Consultado el 16 de febrero de 2015 .
  63. "Microcontrolador FLASH LGT8F88A" . LogicGreen Technologies. Archivado del original el 29/08/2017 . Recuperado el 18/01/2019 .un clon del ATmega88.
  64. ^ "Микроконтроллеры" [ Microcontroladores ] (en ruso). Vorónezh: OAO "NIIET". Archivado desde el original el 22 de agosto de 2017 . Consultado el 22 de agosto de 2017 .

Lecturas adicionales

  • Williams, Elliot (2014). Programación AVR: Aprendiendo a escribir software para hardware . Maker Media. ISBN 978-1449355784.
  • Schmidt, Maik (2011). Arduino: Guía de inicio rápido . Pragmatic Bookshelf. ISBN 978-1-934356-66-1.
  • Margush, Timothy S. (2011). Some Assembly Required: Assembly Language Programming with the AVR Microcontroller . CRC Press. ISBN 978-1439820643.
  • Mazidi, Muhammad Ali; Naimi, Sarmad; Naimi, Sepehr (2010). AVR Microcontroller and Embedded Systems: Using Assembly and C . Pearson. ISBN 978-0138003319.
Sitio web oficial
  • Atmel AVR
Comunidad oficial
  • Comunidad AVR Freaks
  • Foro de Microchips
Diagramas 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)