AVR es una familia de microcontroladores desarrollada 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 de una sola vez utilizadas por otros microcontroladores en ese momento.
Los microcontroladores AVR encuentran muchas aplicaciones como sistemas integrados . Son especialmente comunes en aplicaciones integradas educativas y para aficionados, popularizadas por su inclusión en muchas de las placas de desarrollo de hardware abiertas de la línea Arduino .
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 dice 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 qué significa el término "AVR". [3] Sin embargo, se acepta comúnmente que AVR significa procesador R ISC de Alf y V egard . [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 Atmel AVR.
El MCU AVR original se desarrolló en una casa ASIC local [ se necesita aclaración ] en Trondheim, Noruega , llamada Nordic VLSI en ese momento, ahora Nordic Semiconductor , donde Bogen y Wollan trabajaban como estudiantes. [ cita necesaria ] Se conocía como μRISC (Micro RISC) [5] y estaba disponible como IP de silicio/bloque de construcción de Nordic VLSI. [6] Cuando Nordic VLSI vendió la tecnología a Atmel , Bogen y Wollan desarrollaron aún más la arquitectura interna en Atmel Noruega, una subsidiaria de Atmel. Los diseñadores trabajaron estrechamente con los escritores de compiladores de 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 paquete DIP de 40 pines tiene la misma distribución de pines que un microcontrolador 8051 , incluida la dirección multiplexada externa y el bus de datos. La polaridad de la línea RESET era opuesta (los 8051 tenían 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 enviado 500 millones de microcontroladores flash AVR. [8] La plataforma Arduino , desarrollada para proyectos electrónicos simples, fue lanzada en 2005 y presentaba microcontroladores ATmega8 AVR.
El AVR es una máquina de arquitectura Harvard modificada, donde los programas y los datos se almacenan en sistemas de memoria física separados que aparecen en diferentes espacios de direcciones, pero que tienen la capacidad de leer elementos de datos de la memoria del programa mediante instrucciones especiales.
Los AVR generalmente se clasifican en lo siguiente:
tinyAVR – la serie ATtiny
La serie ATtiny presenta microcontroladores de paquete pequeño con un conjunto de periféricos limitado disponible. Sin embargo, la serie tinyAVR 0/1/2 mejorada (lanzada en 2016) incluye:
megaAVR – la serie ATmega
La serie ATmega cuenta con microcontroladores que proporcionan un conjunto de instrucciones extendido (multiplica instrucciones e instrucciones para manejar memorias de programa más grandes), un conjunto de periféricos extenso, una cantidad sólida de memoria de programa, así como una amplia gama de pines disponibles. La serie megaAVR 0 (lanzada en 2016) también tiene funciones como:
AVR Dx : la familia AVR Dx presenta múltiples series de microcontroladores, enfocados 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:
xmega
la serie ATxmega ofrece una amplia variedad de periféricos y funcionalidades como:
AVR específico de la aplicación
FPSLIC (AVR con FPGA)
AVR de 32 bits
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 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 asignados en memoria. Casi todos los dispositivos (excepto los chips TinyAVR más pequeños) tienen interfaces en serie, que se pueden utilizar para conectar EEPROM en serie o chips flash más grandes.
Las instrucciones del programa se almacenan en una memoria flash no volátil . Aunque las MCU son de 8 bits, cada instrucción requiere una o dos palabras de 16 bits. El tamaño de la memoria del programa generalmente se indica 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 hay ninguna provisión para memoria de programa fuera del chip; Todo el código ejecutado por el núcleo del AVR debe residir en la memoria flash del chip. Sin embargo, esta limitación no se aplica a los chips AT94 FPSLIC AVR/FPGA.
El espacio de direcciones de datos consta del archivo de registro , 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.
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 extendidas”, a los que sólo se puede acceder como E/S asignadas en 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 extendidas", en 0100 16 .
Aunque existen esquemas de direccionamiento separados y códigos de operación optimizados para acceder al archivo de registro y a los primeros 64 registros de E/S, todos también se pueden direccionar y manipular como si estuvieran en SRAM.
La más pequeña de las variantes de tinyAVR utiliza una arquitectura reducida con solo 16 registros (se omiten de 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 estándar AVR. 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 total direccionable directa (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 Flash y bits de configuración; por lo tanto, la instrucción Cargar 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á asignado al espacio de direcciones de datos; como tal, 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 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 aumentado sustancialmente a 4096 bytes (0000 16 –0FFF 16 ). Sin embargo, al igual que con las generaciones anteriores, las instrucciones rápidas de manipulación de E/S solo pueden llegar a 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 utilizar opcionalmente para asignar la EEPROM interna al espacio de direcciones de datos (1000 16 –1FFF 16 ). La SRAM actual se sitúa tras estos rangos, a partir del año 2000 16 .
Cada puerto GPIO en un AVR pequeño o mega maneja 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.
Los ATtiny AVR más nuevos, como ATtiny817 y sus hermanos, tienen sus registros de control de puertos definidos de manera algo diferente. xmegaAVR tiene registros adicionales para configuraciones push/pull, tótem y pullup.
Casi todos los microcontroladores AVR tienen EEPROM interna para 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 de la MCU. Sólo 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 otras RAM internas.
Sin embargo, algunos dispositivos de la familia SecureAVR (AT90SC) [11] utilizan una asignación EEPROM especial 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 EEPROM es limitado (Atmel especifica 100.000 ciclos de escritura en sus hojas de datos), una rutina de escritura 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.
Los AVR de Atmel tienen un diseño de tubería de un solo nivel y dos etapas . Esto significa que la siguiente instrucción de máquina se recupera mientras se ejecuta la actual. La mayoría de las instrucciones requieren sólo 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 teniendo en mente la ejecución eficiente del código C compilado y tienen varios punteros integrados para la tarea.
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 8051 y los microcontroladores PIC con los que AVR compite hoy. Sin embargo, no es del todo regular:
Además, algunas diferencias específicas de los chips 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 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 derivación y llamada con alcances más largos; Etcétera.
El conjunto de instrucciones, en su mayoría regular, hace que los compiladores de C (e incluso de Ada) sean bastante sencillos y eficientes. GCC ha incluido soporte AVR desde hace bastante tiempo y ese soporte se utiliza ampliamente. LLVM también tiene soporte AVR rudimentario. De hecho, Atmel solicitó informació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]
La línea AVR normalmente admite velocidades de reloj de 0 a 20 MHz, y algunos dispositivos alcanzan los 32 MHz. El funcionamiento con menor potencia normalmente requiere una velocidad de reloj reducida. Todos los AVR recientes (Tiny, Mega y Xmega, pero no el 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 preescalador del reloj del sistema que puede dividir el reloj del sistema hasta en 1024. Este preescalador se puede reconfigurar mediante software durante el tiempo de ejecución, lo que permite optimizar la velocidad del reloj.
Dado que todas las operaciones (excluyendo la multiplicación y la suma/resta de 16 bits) en los registros R0–R31 son de ciclo único, el AVR puede lograr hasta 1 MIPS por MHz, es decir, un procesador de 8 MHz puede lograr hasta 8 MIPS. Las cargas y almacenes hacia/desde la memoria toman dos ciclos, la bifurcación toma dos ciclos. Las bifurcaciones en las últimas piezas de "PC de 3 bytes", como ATmega2560, son un ciclo más lentas que en dispositivos anteriores.
Los AVR tienen muchos 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 enlaces externos para sitios relacionados con el desarrollo de AVR.
Los AVR ofrecen una amplia gama de funciones:
Existen muchas formas de cargar 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 entre accidentalmente en dicho modo, se recomienda conectar una resistencia pull-up entre el pin RESET y la fuente de alimentación positiva. [dieciséis]
El método de programación de programación en el sistema (ISP) se realiza funcionalmente a través de SPI , además de algunos ajustes en la línea de reinicio. Siempre que los pines SPI del AVR no estén conectados a nada disruptivo, el chip 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 más antiguos basados en puerto serie Atmel y varios programadores de terceros y "hágalo usted mismo". [17]
La interfaz de programación y depuración (PDI) es una interfaz propiedad de Atmel para programación externa y depuración en chip de dispositivos XMEGA. El 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 del usuario. Esto se hace accediendo al controlador XMEGA NVM a través de la interfaz PDI y ejecutando los comandos del controlador NVM. El PDI es una interfaz de 2 pines que utiliza el pin de reinicio para entrada de reloj (PDI_CLK) y un pin de datos dedicado (PDI_DATA) para entrada y salida. [18]
La interfaz unificada de programación y depuración (UPDI) es una interfaz de un solo cable para programación externa y depuración en chip de dispositivos ATtiny y ATmega más nuevos. Atmel-ICE y 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 por una resistencia de 1 kΩ y la utilidad pymcuprog proporcionada por Microchip. [20]
La programación en serie de alto voltaje (HVSP) [21] es principalmente el modo de respaldo en AVR más pequeños. Un paquete AVR de 8 pines no deja muchas combinaciones de señales únicas para colocar el AVR en modo de programación. Sin embargo, una señal de 12 voltios es algo que el AVR sólo 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 ha sido desactivado por fusibles.
La programación paralela de alto voltaje (HVPP) se considera el "último recurso" y puede ser la única forma de corregir configuraciones de fusibles defectuosas en un chip AVR.
La mayoría de los modelos de AVR pueden reservar una región del cargador de arranque , de 256 bytes a 4 KB, donde puede residir el código de reprogramación. Al reiniciar, el gestor de arranque se ejecuta primero y determina, programado por el usuario, si reprogramar o saltar a la aplicación principal. El código puede reprogramarse 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ódigos relacionados con muchas interfaces de bus. [22] [23] [24] [25]
La serie AT90SC de AVR está disponible con una ROM de máscara de fábrica en lugar de flash para la memoria de programa. [26] Debido al alto costo inicial y la cantidad mínima de pedido, una ROM de máscara solo es rentable para tiradas de alta producción.
aWire es una nueva interfaz de depuración de un cable disponible en los nuevos dispositivos UC3L AVR32.
El AVR ofrece varias opciones de depuración, la mayoría de las cuales implican la depuración en el chip mientras el chip está en el sistema de destino.
debugWIRE es la solución de Atmel para proporcionar capacidades de depuración en chip a través de un único pin de microcontrolador. Es particularmente útil para piezas con 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.
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 a los registros, establecer puntos de interrupción en el código y ejecutar en un solo paso para observar el comportamiento del sistema.
Atmel proporciona una serie de adaptadores JTAG para el AVR:
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 muy adecuado para una línea de producción, mientras que al aficionado probablemente le convendrá más realizar pruebas con un multímetro u osciloscopio.
Las herramientas de desarrollo y 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:
El kit de inicio y el sistema de desarrollo STK600 es una actualización del STK500. [35] El STK600 utiliza una placa base, una placa de enrutamiento de señal y una placa de destino.
La placa base es similar a la STK500, ya que proporciona 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 clavijas 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 encuentra entre la placa base y la placa de destino, y dirige las señales al pin adecuado en la placa del dispositivo. Hay muchas placas de enrutamiento de señales diferentes que se pueden usar con una sola placa de destino, dependiendo del dispositivo que esté en el zócalo ZIF.
El STK600 permite la programación dentro del sistema desde la PC a través de USB, dejando el puerto RS-232 disponible para el microcontrolador de destino. Un encabezado de 4 pines en el STK600 con la etiqueta 'Repuesto RS-232' 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 están conectadas a los pines RX, TX, CTS y RTS del conector DB-9.
El kit de inicio y sistema de desarrollo STK500 cuenta con ISP y programación de alto voltaje (HVP) para todos los dispositivos AVR, ya sea directamente o mediante placas de extensión. La placa está equipada con enchufes DIP para todos los AVR disponibles en paquetes DIP.
Módulos de expansión STK500: Hay varios módulos de expansión disponibles para la placa STK500:
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 dongle conectado al puerto paralelo.
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 analizan a continuación). Se conecta y recibe energía de una PC a través de USB y admite interfaces JTAG , PDI , aWire , debugWIRE , SPI , SWD , TPI y UPDI (la interfaz de depuración y programa unificado de Microchip).
El ICE puede programar y depurar todos los AVR a través de la interfaz JTAG y programar con interfaces adicionales compatibles con cada dispositivo:
Se admiten rangos de voltaje operativo objetivo de 1,62 V a 5,5 V, así como los siguientes rangos de reloj:
El ICE es compatible con Microchip Studio IDE, así como con una interfaz de línea de comandos (atprogram).
Atmel-ICE admite una implementación limitada de la interfaz de puerta de enlace de datos (DGI) cuando las funciones de depuración y programación no están en uso. La interfaz de puerta de enlace de datos es una interfaz para transmitir datos desde un dispositivo de destino a la computadora conectada. Esto pretende ser un complemento útil de la unidad para permitir la demostración de las funciones de la aplicación y como ayuda en la depuración a nivel de aplicación.
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 serie y obtiene energía del sistema de destino. El AVRISP permite utilizar cualquiera de los 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 del USB. Los LED visibles a través de la caja translúcida indican el estado de la energía 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 AVRISP como AVRISP mkII ahora están descontinuados y las páginas de productos se eliminaron del sitio web de Microchip. En julio de 2019, el AVRISP mkII todavía está disponible en varios distribuidores. También hay varios clones de terceros disponibles.
Atmel Dragon es una herramienta económica que se conecta a una PC mediante USB. Dragon puede programar todos los AVR mediante JTAG, HVP, PDI, [37] o ICSP. Dragon también permite la depuración de todos los AVR a través de JTAG, PDI o debugWire; En AVR Studio 4.18 se eliminó una limitación anterior para dispositivos con 32 KB o menos de memoria de programa. [38] El Dragon tiene una pequeña área de prototipo que puede acomodar un AVR de 8, 28 o 40 pines, incluidas conexiones a pines de alimentación y programación. No hay área para ningún circuito adicional, aunque esto puede ser proporcionado por un producto de terceros llamado "Dragon Rider". [39]
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 (a veces denominado retroactivamente JTAGICE mkI) utiliza una interfaz RS-232 para una PC y solo puede programar AVR con una interfaz JTAG. El JTAGICE mkI ya no está en producción, sin embargo, ha sido reemplazado por el 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 hay una conexión alternativa a través de un puerto serie, que requiere el uso de una fuente de alimentación independiente. Además de JTAG, el mkII admite programación ISP (utilizando adaptadores de 6 o 10 pines). Tanto el enlace USB como el serial utilizan una variante del protocolo STK500.
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. [40] El kit incluye varios adaptadores para usar con la mayoría de los pines de interfaz.
¡El AVR UNO! es una herramienta de desarrollo profesional para todos los dispositivos AVR Atmel de 8 y 32 bits 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]
La muy popular placa de demostración AVR Butterfly es una computadora autónoma que funciona con baterías y que ejecuta el microcontrolador Atmel AVR ATmega169V. Fue construido para mostrar la familia AVR, especialmente una nueva interfaz LCD incorporada. La placa incluye pantalla LCD, joystick, altavoz, puerto serie, reloj en tiempo real (RTC), chip de memoria flash y sensores de temperatura y voltaje. Las versiones anteriores del AVR Butterfly también contenían un fotorresistor CdS ; no está presente en las placas Butterfly producidas después de junio de 2006 para permitir el cumplimiento de RoHS . [42] El tablero pequeño tiene un alfiler en la parte posterior para que pueda usarse como insignia con su nombre.
El AVR Butterfly viene precargado con software para demostrar las capacidades del microcontrolador. El firmware de fábrica puede desplazar su nombre, mostrar las lecturas del sensor y mostrar 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 la conducción de la pantalla LCD ejecutando 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 del Butterfly es capaz de alcanzar velocidades de hasta 8 MHz, pero viene configurada de fábrica por software a 2 MHz para preservar la duración de la batería del botón. Un programa de arranque preinstalado permite reprogramar la placa a través de un conector serie RS-232 estándar con nuevos programas que los usuarios pueden escribir con las herramientas gratuitas Atmel IDE.
Esta pequeña placa, de aproximadamente la mitad del tamaño de una tarjeta de presentación, 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 alimentación proporcionada a través de USB.
Sólo el puerto JTAG utiliza una distribución de pines convencional de 2,54 mm. Todos los demás puertos de E/S del 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 es capaz de 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 "Device Firmware Update". Atmel envía programas de ejemplo propietarios (código fuente incluido pero distribución restringida) y una pila de protocolo USB con el dispositivo.
LUFA [43] es una pila de protocolo USB de software gratuito de terceros ( licencia MIT ) para USBKey y otros AVR USB de 8 bits.
El kit RAVEN admite el desarrollo inalámbrico utilizando los conjuntos de chips 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, además de una llave USB inalámbrica; y cuesta aproximadamente esa cantidad (menos de 100 dólares). 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 gratuita). Las radios funcionan con procesadores ATmega1284p, que son compatibles con una pantalla LCD segmentada personalizada impulsada por un procesador ATmega3290p. Los periféricos de Raven se parecen al Butterfly: altavoz piezoeléctrico, DataFlash (más grande), EEPROM externa, sensores, cristal de 32 kHz para RTC , etc. 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 conexiones a un host USB y a enlaces inalámbricos de 2,4 GHz. Estos están destinados a monitorear y controlar los nodos remotos, dependiendo de la energía del host en lugar de las baterías locales.
Hay disponible una amplia variedad de herramientas de programación y depuración de terceros para el AVR. Estos dispositivos utilizan varias interfaces, incluidas RS-232, puerto paralelo de PC y USB. [44]
Los AVR se han utilizado en diversas aplicaciones automotrices, como sistemas de seguridad, protección, tren motriz y entretenimiento. Atmel lanzó recientemente una nueva publicación "Atmel Automotive Compilation" para ayudar a los desarrolladores con aplicaciones automotrices. Algunos 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). Los ATmega1280 y ATmega2560, con más capacidades de configuración de pines 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 simplemente estandarizadas y ampliamente disponibles.
Se han utilizado AVR basados en USB en los controladores manuales de Microsoft Xbox. El enlace entre los controladores y 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 ellos: Cubloc, [45] gnusb, [46] BasicX , [47] Oak Micros, [48] ZX Microcontrollers, [49 ] y miAVR. [50] También existe una gran comunidad de placas compatibles con Arduino que admiten usuarios similares.
Schneider Electric solía producir el chip de control de movimiento y motor M3000, que incorpora un núcleo Atmel AVR y un controlador de movimiento avanzado para su uso en una variedad de aplicaciones de movimiento, pero esto ha sido descontinuado. [51]
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 de OpenCores enumera los siguientes proyectos importantes de clonación de AVR:
Además de los chips fabricados por Atmel, hay clones disponibles en 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 utilizar diferentes herramientas de programación.
NIIET en Voronezh , Rusia, fabrica microcontroladores que utilizan la arquitectura ATmega como parte de la serie 1887 de circuitos integrados. Esto incluye un ATmega128 con la designación 1887VE7T ( ruso : 1887ВЕ7Т ). [58]
La línea de reinicio tiene una resistencia pull-up interna, pero si el ambiente es ruidoso puede ser insuficiente y, por lo tanto, el reinicio puede ocurrir esporádicamente.