stringtranslate.com

Microcontroladores AVR

Logotipo de AVR
Varios microcontroladores AVR más antiguos: ATmega8 en paquete dual en línea estrecho de 28 pines ( DIP -28N), ATxmega128A1 en paquete plano cuádruple delgado de 100 pines ( TQFP -100), ATtiny45 en paquete de contorno pequeño de 8 pines ( SO -8).
ATmega328 P en encapsulado dual en línea estrecho de 28 pines ( DIP -28N). Se encuentra comúnmente en placas Arduino .

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:

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:

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:

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

Arquitectura del dispositivo

Atmel ATxmega128A1 en encapsulado TQFP de 100 pines
Matriz ATMEL MEGA32U4

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.

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:

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:

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

Diagramas de encabezados de ISP de 6 y 10 pines

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:

  1. El Atmel-ICE [28] es el adaptador más reciente. Admite interfaces JTAG, debugWire, aWire, SPI, TPI y PDI.
  2. JTAGICE 3 [29] es un depurador de gama media de la familia JTAGICE (JTAGICE mkIII). Admite interfaces JTAG, aWire, SPI y PDI.
  3. 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]
  4. 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.
  5. 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

Placa de desarrollo Atmel STK500

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:

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:

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 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 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

AVR Dragon con cable de programación ISP y conector ZIF azul/verdoso adjunto

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

Atmel ATmega169 en un paquete MLF de 64 pads en la parte posterior de una placa Atmel AVR Butterfly

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

DIP de 28 pines Atmel AVR ATmega328 en una placa Arduino Duemilanove
DIP de 28 pines Atmel AVR ATmega8 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 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:

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

  1. ^ Desde 1996, NTH se ha convertido en parte de la Universidad Noruega de Ciencia y Tecnología (NTNU)
  2. ^ blog de alfbogen.com
  3. ^ ab Archivado en Ghostarchive y Wayback Machine: "La historia de AVR". youtube.com.
  4. ^ "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 .
  5. ^ Introducción a Atmel y al microcontrolador AVR [ enlace muerto permanente ]
  6. ^ "Sistemas embebidos y microcontroladores" (PDF) . Archivado desde el original (PDF) el 24 de diciembre de 2004. Consultado el 1 de octubre de 2018 .
  7. ^ 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 . 
  8. ^ Nota de prensa de Atmel. "Se envían 500 millones de unidades del microcontrolador AVR de Atmel".
  9. ^ Circuito integrado a nivel de sistema programable en campo. Archivado el 27 de noviembre de 2012 en Wayback Machine .
  10. ^ atmel.com
  11. ^ Circuitos integrados de tarjetas inteligentes Atmel
  12. ^ "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 .
  13. ^ "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 .
  14. ^ "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 .
  15. ^ "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 .
  16. ^ "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.
  17. ^ "Programador AVRDUDE". Savannah.nongnu.org . Consultado el 19 de septiembre de 2012 .
  18. ^ "Controlador de programación PDI" (PDF) . Archivado (PDF) del original el 25 de marzo de 2020 . Consultado el 19 de septiembre de 2012 .
  19. ^ "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.
  20. ^ "pymcuprog - Programador de MCU Python". Github . Herramientas PIC&AVR de Microchip. 13 de noviembre de 2022 . Consultado el 18 de noviembre de 2022 .
  21. ^ "HVSP_Description". Support.atmel.no. Archivado desde el original el 2009-10-12 . Consultado el 2012-09-19 .
  22. ^ "Des-encrypted AVR Bootloader" (PDF) . Archivado (PDF) desde el original el 2005-05-16 . Consultado el 2012-09-19 .
  23. ^ "Cargador de arranque AVR cifrado con AES" (PDF) . Consultado el 19 de septiembre de 2012 .
  24. ^ "Cargador de arranque XMEGA" (PDF) . Consultado el 19 de septiembre de 2012 .
  25. ^ "AVR USB Bootloader" (PDF) . Archivado (PDF) desde el original el 28 de junio de 2006 . Consultado el 19 de septiembre de 2012 .
  26. ^ "Microcontroladores Flash autoprogramables de Atmel" (PDF) . Consultado el 12 de marzo de 2020 .
  27. ^ "Guía para comprender los fusibles de seguridad y JTAG en el AVR" . Consultado el 19 de septiembre de 2012 .[ enlace muerto permanente ]
  28. ^ "Atmel-ICE - Atmel Corporation". Atmel.com . Consultado el 11 de septiembre de 2015 .
  29. ^ "JTAGICE 3- Atmel Corporation". Atmel.com . Consultado el 19 de septiembre de 2012 .
  30. ^ "AVR JTAGICE mkII". Atmel . Archivado desde el original el 15 de febrero de 2013 . Consultado el 13 de enero de 2013 .
  31. ^ "Protocolo de comunicación JTAGICE mkII" (PDF) . Archivado (PDF) desde el original el 2005-05-16 . Consultado el 2012-09-19 .
  32. ^ "AVR Dragon". Atmel . Consultado el 13 de enero de 2013 .
  33. ^ "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 .
  34. ^ Comunicado de prensa de JTAGICE, 2004. Archivado el 7 de julio de 2011 en Wayback Machine.
  35. ^ "STK600". Atmel . Archivado desde el original el 15 de febrero de 2013 . Consultado el 13 de enero de 2013 .
  36. ^ "AVRISP mkII desmontado". Archivado desde el original el 8 de noviembre de 2014. Consultado el 8 de noviembre de 2014 .
  37. ^ "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 .
  38. ^ "Notas de la versión de AVR Studio v4.18" . Consultado el 19 de septiembre de 2012 .
  39. ^ "Tecnología ECROS - Jinete de dragones". Ecrostech.com. 2008-03-02 . Consultado el 2012-09-19 .
  40. ^ Página del producto JTAGICE3
  41. ^ Página del producto AVR ONE!
  42. ^ Mariposa AVR
  43. ^ "LUFA (anteriormente MyUSB)". Cubículo de cuatro paredes . Consultado el 19 de septiembre de 2012 .
  44. ^ Consulte avrffreaks.net para obtener una lista completa.
  45. ^ "Comfile Technology". Comfile Technology, Inc. Archivado desde el original el 17 de enero de 2013. Consultado el 13 de enero de 2013 .
  46. ^ "gnusb: Caja de sensores USB de código abierto" . Consultado el 13 de enero de 2013 .
  47. ^ "BasicX". NetMedia, Inc. Archivado desde el original el 23 de mayo de 2013. Consultado el 13 de enero de 2013 .
  48. ^ "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 .
  49. ^ "ZBasic" . Consultado el 13 de enero de 2013 .
  50. ^ "myAVR". Laser & Co. Solutions GmbH . Consultado el 13 de enero de 2013 .
  51. ^ "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 .
  52. ^ "pAVR:: Descripción general". OpenCores . Consultado el 19 de septiembre de 2012 .
  53. ^ "AVR Core :: Descripción general". OpenCores . Consultado el 19 de septiembre de 2012 .
  54. ^ "Descripción general del clon Navré AVR (RISC de 8 bits)". OpenCores . Consultado el 19 de septiembre de 2012 .
  55. ^ "Descripción general de Soft AVR Core + Interfaces". OpenCores . Consultado el 16 de junio de 2020 .
  56. ^ "Conferencia sobre CPU". OpenCores . Consultado el 16 de febrero de 2015 .
  57. ^ "Microcontrolador FLASH LGT8F88A". LogicGreen Technologies. Archivado desde el original el 2017-08-29 . Consultado el 2019-01-18 ,un clon del ATmega88.
  58. ^ "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

Enlaces externos

Sitio web oficial
Comunidad oficial
Diagramas de distribución de pines
Simuladores