stringtranslate.com

microcontroladores AVR

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

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 .

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

Descripción general del dispositivo

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.

familias basicas

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

Arquitectura del dispositivo

Atmel ATxmega128A1 en paquete TQFP de 100 pines

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.

Memoria de programa

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.

Memoria de datos interna

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.

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

Puertos GPIO

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.

EEPROM

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.

Ejecución del programa

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.

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

velocidad de la microcontroladora

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.

Desarrollo

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.

Características

Los AVR ofrecen una amplia gama de funciones:

Interfaces de programación

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]

ISP

Diagramas de encabezados 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 , 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]

PDI

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]

UPDI

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]

Serie de alto voltaje

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.

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 defectuosas en un chip AVR.

Cargador de arranque

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]

ROM

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.

un alambre

aWire es una nueva interfaz de depuración de un 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 el chip está en el sistema de destino.

depuraciónWIRE

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.

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

  1. El Atmel-ICE [28] es el último adaptador. Admite interfaces JTAG, debugWire, aWire, SPI, TPI y PDI.
  2. El JTAGICE 3 [29] es un depurador de rango medio 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 es compatible tanto con JTAG como con la nueva interfaz debugWIRE. Numerosos clones de terceros del dispositivo Atmel JTAGICE mkII comenzaron a enviarse 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 partes de destino. El AVR Dragon proporciona programación en serie en el sistema, programación en serie de alto voltaje y programación en paralelo, 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 de 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 interactúa con la PC a través de un puerto serie estándar. [33] Aunque Atmel ha declarado el adaptador JTAGICE " fin de vida útil ", todavía 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 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.

Herramientas de desarrollo y kits de evaluación.

Placa de desarrollo Atmel STK500

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:

Equipo de inicio STK600

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.

Equipo de inicio STK500

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:

Equipo 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 dongle conectado al puerto paralelo.

Atmel-ICE

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

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

Dragón AVR

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

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]

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

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.

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. [40] El kit incluye varios adaptadores para usar con la mayoría de los pines de interfaz.

¡AVR UNO!

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

Tablero de demostración de mariposas.

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

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.

AT90USBClave

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.

kit inalámbrico cuervo

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.

Programadores de terceros

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]

Usos

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

Clones 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 de OpenCores enumera los siguientes proyectos importantes de clonación de AVR:

Otros proveedores

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]

Referencias

  1. ^ Desde 1996, NTH pasa a formar parte de la Universidad Noruega de Ciencia y Tecnología (NTNU)
  2. ^ blog alfbogen.com
  3. ^ ab Archivado en Ghostarchive y Wayback Machine: "La historia de AVR". youtube.com.
  4. ^ "Escuela de Ingeniería y Ciencias de la Computación de la UNSW - Información general sobre AVR". Cse.unsw.edu.au. Archivado desde el original el 23 de junio de 2012 . Consultado el 19 de septiembre de 2012 .
  5. ^ Una introducción a Atmel y el microcontrolador AVR [ enlace muerto permanente ]
  6. ^ "Sistemas integrados y microcontroladores" (PDF) . Archivado desde el original (PDF) el 24 de diciembre de 2004 . Consultado el 1 de octubre de 2018 .
  7. ^ ab Myklebust, Gaute. Codiseño del microcontrolador AVR y el compilador C (PDF) . Atmel Noruega. CiteSeerX 10.1.1.63.1447 . Consultado el 19 de septiembre de 2012 . 
  8. ^ Comunicado de prensa de Atmel. "El microcontrolador AVR de Atmel envía 500 millones de unidades".
  9. ^ Circuito integrado de 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 de 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 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 utilizando 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 AVR" (PDF) (nota de aplicación). Corporación Atmel. Junio ​​de 2015. pág. 5. Archivado (PDF) desde el 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 ambiente 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) desde el 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 (objetivos MCU 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 y AVR con microchip. 13 de noviembre de 2022 . Consultado el 18 de noviembre de 2022 .
  21. ^ "HVSP_Descripción". Soporte.atmel.no. Archivado desde el original el 12 de octubre de 2009 . Consultado el 19 de septiembre de 2012 .
  22. ^ "Cargador de arranque AVR cifrado con DES" (PDF) . Archivado (PDF) desde el original el 16 de mayo de 2005 . Consultado el 19 de septiembre de 2012 .
  23. ^ "Cargador de arranque AVR cifrado AES" (PDF) . Consultado el 19 de septiembre de 2012 .
  24. ^ "Cargador de arranque XMEGA" (PDF) . Consultado el 19 de septiembre de 2012 .
  25. ^ "Cargador de arranque USB AVR" (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 JTAG y los fusibles de seguridad del AVR" . Consultado el 19 de septiembre de 2012 .[ enlace muerto permanente ]
  28. ^ "Atmel-ICE - Corporación Atmel". Atmel.com . Consultado el 11 de septiembre de 2015 .
  29. ^ "JTAGICE 3- Corporación Atmel". 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 16 de mayo de 2005 . Consultado el 19 de septiembre de 2012 .
  32. ^ "Dragón AVR". Atmel . Consultado el 13 de enero de 2013 .
  33. ^ "Guía del usuario de AVR JTAGICE mkII" (PDF) . microchip.com . Archivado (PDF) desde el original el 2 de julio de 2017 . Consultado el 25 de marzo de 2020 .
  34. ^ Comunicado de prensa de JTAGICE, 2004. Archivado el 7 de julio de 2011 en la 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 7 de octubre de 2009 . 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 - Dragon Rider". Ecrostech.com. 2008-03-02 . Consultado el 19 de septiembre de 2012 .
  40. ^ Página del producto JTAGICE3
  41. ^ ¡ AVR UNO! Página del producto
  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. ^ "Tecnología Comfile". 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. ^ "BásicoX". NetMedia, Inc. Archivado desde el original el 23 de mayo de 2013 . Consultado el 13 de enero de 2013 .
  48. ^ "Bienvenido a Oak Micros". Micros de roble . Micros de roble. Archivado desde el original el 25 de octubre de 2012 . Consultado el 13 de enero de 2013 .
  49. ^ "ZBásico" . Consultado el 13 de enero de 2013 .
  50. ^ "miAVR". Laser & Co. Soluciones GmbH . Consultado el 13 de enero de 2013 .
  51. ^ "Controlador de movimiento M3000 en un chip". imshome.com . Schneider Electric Motion Estados Unidos. Archivado desde el original el 2 de diciembre de 2009 . Consultado el 2 de agosto de 2011 .
  52. ^ "pAVR :: Descripción general". OpenCores . Consultado el 19 de septiembre de 2012 .
  53. ^ "Núcleo AVR :: 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 las interfaces Soft AVR Core +". OpenCores . Consultado el 16 de junio de 2020 .
  56. ^ "Conferencia sobre CPU". OpenCores . Consultado el 16 de febrero de 2015 .
  57. ^ "Microcontrolador FLASH LGT8F88A". Tecnologías LogicGreen. Archivado desde el original el 29 de agosto de 2017 . Consultado el 18 de enero de 2019 ,un clon del ATmega88.
  58. ^ "Микроконтроллеры" [Microcontroladores] (en ruso). Vorónezh: OAO "NIIET". Archivado desde el original el 22 de agosto de 2017 . Consultado el 22 de agosto de 2017 .

Otras lecturas

enlaces externos

Página web oficial
Comunidad oficial
Diagramas de distribución de pines