Microcontroladores AVR

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Familia de microcontroladores
Logo AVR
Varios microcontroladores AVR más antiguos: ATmega8 en paquete de 28-pin estrecho doble en línea (DIP-28N), ATxmega128A1 en paquete plano de quad de 100-pin delgado (TQFP-100), ATtiny45 en paquete de 8-pin pequeño (SO-8).
ATmega328P en un paquete doble en línea de 28 puntos (DIP-28N). Se encuentra comúnmente en tablas de 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 usar memoria flash en chip para el almacenamiento de programas, a diferencia de las ROM, EPROM o EEPROM programables una sola vez que usaban otros microcontroladores en ese momento.

Los microcontroladores AVR encuentran muchas aplicaciones como sistemas integrados. Son especialmente comunes en aplicaciones integradas educativas y de aficionados, popularizadas por 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), Alf-Egil Bogen y Vegard Wollan.

Atmel dice que el nombre AVR no es un acrónimo y no representa nada en particular. Los creadores del AVR no dan una respuesta definitiva sobre qué significa el término "AVR" representa. Sin embargo, comúnmente se acepta que AVR significa procesador Alf y Vegard RISC. 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.

La MCU AVR original se desarrolló en una casa ASIC local en Trondheim, Noruega, llamada Nordic VLSI en ese momento, ahora Nordic Semiconductor, donde Bogen y Wollan trabajaban como estudiantes. Se conocía como μRISC (Micro RISC) y estaba disponible como bloque de construcción/IP de silicio de Nordic VLSI. Cuando la tecnología se vendió a Atmel de Nordic VLSI, Bogen y Wollan desarrollaron aún más la arquitectura interna en Atmel Norway, una subsidiaria de Atmel. Los diseñadores trabajaron en estrecha colaboración 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.

Entre los primeros de la línea AVR estaba el AT90S8515, que en un paquete DIP de 40 pines tiene el mismo pinout que un microcontrolador 8051, incluida la dirección multiplexada externa y el bus de datos. La polaridad de la línea RESET era opuesta (el 8051 tiene un RESET activo-alto, mientras que el AVR tiene un RESET), pero aparte de eso, el pinout era idéntico.

La arquitectura del microcontrolador AVR de 8 bits se introdujo en 1997. En 2003, Atmel había enviado 500 millones de microcontroladores flash AVR. La plataforma Arduino, desarrollada para proyectos electrónicos simples, fue lanzada en 2005 e incluía microcontroladores ATmega8 AVR.

Descripción general del dispositivo

El 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 diferentes espacios de direcciones, 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 en lo siguiente:

tinyAVR: la serie ATtiny

Tamaño Flash Frecuencia
[MHz]
Paquete SRAM EEPROM
0,5 a 32 KB 1.6–20 Paquete de 6 a 32 pines 64 a 3072 bytes 64–256 bytes

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:

  • Periféricos iguales o superiores a megaAVR 0-series
  • Sistema de eventos
  • Mejora de la VA Conjunto de instrucciones de Rxt, el hardware se multiplica

megaAVR: la serie ATmega

Tamaño Flash Frecuencia
[MHz]
Paquete SRAM EEPROM
4 a 256 KB 1.6–20 Paquete 28-100-pin 256–16384 bytes 256 a 4096 bytes

La serie ATmega cuenta con microcontroladores que proporcionan un conjunto de instrucciones ampliado (instrucciones de multiplicación 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 funcionalidades como:

  • Sistema de eventos
  • Nuevos periféricos con funcionalidad mejorada
  • Mejora de la VA Conjunto de instrucción Rxt

AVR Dx: la familia AVR Dx presenta múltiples series de microcontroladores, enfocados en HCI, acondicionamiento de señales analógicas y seguridad funcional.

Tamaño Flash Frecuencia
[MHz]
Paquete SRAM EEPROM Año de lanzamiento
16 a 128 KB 20–24 a 1.8–5.5 V Paquete de 14-64-pin 4 a 16 KB 512 bytes 2020

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

  • un tipo Async D timer que puede funcionar rápido que CPU
  • 12-bit ADC
  • 10-bit DAC
  • AVR DA-series (cerca de 2020) – La alta densidad de memoria hace que estos MCUs estén bien adaptados tanto para las funciones cableadas como inalámbricas de comunicación-intensivas.
    • sensores integrados para la medición capacitativa del tacto (HCI)
    • ofrece las últimas CIP y una robusta cartera analógica integrada
    • no cristal de alta frecuencia externo
  • AVR DB-series (mid-late 2020) – hereda muchas características de la familia DA, al tiempo que agrega su propio:
    • 2 o 3 on-chip opamps
    • MultiVoltaje IO (MVIO) en PORTC
    • Soporta cristal HF externo
  • AVR DD-series (aún no se ha liberado A partir de septiembre de 2021) – pequeños microcontroladores de paquetes diseñados para llevar el control en tiempo real y la operación multi-voltaje a aplicaciones de control industrial, productos de electrodoméstico, automotriz e Internet de las cosas (IoT).
    • Soporte MVIO en 3 o 4 pines
  • AVR EA-series (aún no se ha liberado a partir de septiembre de 2021)
    • flash de 8 a 64k
    • Paquete 28-48-pin

XMEGA

Tamaño Flash Frecuencia
[MHz]
Paquete SRAM EEPROM Año de lanzamiento
16 a 256 KB 32 Paquete 44-100-pin 1 a 32 KB 512–2048 bytes

La serie ATxmega ofrece una amplia variedad de periféricos y funcionalidades como:

  • Características de rendimiento ampliadas, como DMA, "Event System", y soporte de criptografía
  • Extensivo conjunto periférico con ADC

AVR específico de la aplicación

  • megaAVRs con características especiales no encontradas en los otros miembros de la familia AVR, como controlador LCD, controlador USB, avanzado PWM, CAN, etc.

FPSLIC (AVR con FPGA)

  • FPGA 5k a 40k puertas
  • SRAM para el código del programa AVR, a diferencia de todos los demás AVRs
  • El núcleo AVR puede funcionar hasta 50 MHz

AVR de 32 bits

  • En 2006, Atmel lanzó microcontroladores basados en la arquitectura AVR32 de 32 bits. Esta fue una arquitectura completamente diferente sin relación con el AVR de 8 bits, destinado a competir con los procesadores basados en ARM. Tenía una ruta de datos de 32 bits, instrucciones SIMD y DSP, junto con otras funciones de procesamiento de audio y vídeo. El conjunto de instrucciones era similar a otros núcleos de RISC, pero no era compatible con el AVR original (ni con cualquiera de los diversos núcleos de ARM). Desde entonces, el soporte para AVR32 ha sido retirado de Linux como del kernel 4.12; el soporte de compilador para la arquitectura en GCC nunca se ha basado en el repositorio central de código fuente del compilador y estaba disponible principalmente en un tenedor respaldado por proveedores. En el momento en que se introdujo AVR32, Atmel ya había sido licenciado de la arquitectura ARM, con microcontroladores ARM7 y ARM9 que habían sido liberados antes y simultáneamente con los AVR32; más tarde Atmel centró la mayor parte del esfuerzo de desarrollo en chips de 32 bits con núcleos ARM Cortex-M y Cortex-A.

Arquitectura del dispositivo

Flash, EEPROM y SRAM están integrados en un solo chip, lo que elimina la necesidad de una 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 más grandes o chips flash.

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 propio dispositivo (por ejemplo, la línea ATmega64x tiene 64 KB de flash, mientras que la línea ATmega32x tiene 32 KB).

No hay provisión para la memoria de programa fuera del chip; todo el código ejecutado por el núcleo AVR debe residir en el flash en el 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 lo hacen.

Registros internos

Atmel ATxmega128A1 en paquete TQFP 100-pin

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

En las variantes tinyAVR y megaAVR de la arquitectura AVR, los registros de trabajo se asignan como las primeras 32 direcciones de memoria (000016–001F16), seguidas de 64 registros de E/S (002016–005F16). En dispositivos con muchos periféricos, estos registros van seguidos de 160 registros de "E/S extendidas", a los que solo se puede acceder como E/S asignadas a la memoria (006016–00FF16).

La SRAM real comienza después de estas secciones de registro, en la dirección 006016 o, en dispositivos con "E/S extendidas", en 010016.

Aunque existen esquemas de direccionamiento separados y códigos de operación optimizados para acceder al archivo de registro y los primeros 64 registros de E/S, todos también pueden direccionarse y manipularse 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 r0 a r15) que no son direccionables como ubicaciones de memoria. La memoria de E/S comienza en la dirección 000016, seguida de SRAM. Además, estos dispositivos tienen ligeras desviaciones del conjunto de instrucciones AVR estándar. En particular, las instrucciones de carga/almacenamiento directas (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 Cargar memoria de programa (LPM) es innecesaria y se omite. (Para obtener información detallada, consulte el conjunto de instrucciones de Atmel AVR).

En la variante XMEGA, el archivo de registro de trabajo no se asigna 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 su lugar, 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 (000016–0FFF16). Sin embargo, al igual que con las generaciones anteriores, las instrucciones de manipulación de E/S rápidas solo pueden llegar a las primeras 64 ubicaciones de registros de E/S (las primeras 32 ubicaciones para instrucciones bit a bit). Siguiendo 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 (100016–1FFF16). La SRAM real se encuentra después de estos rangos, comenzando en 200016.

Puertos GPIO

Cada puerto GPIO en un pequeño o mega AVR maneja hasta ocho pines y está controlado por tres registros de 8 bits: DDRx, PORTx y PINx, donde x es el identificador del puerto.

  • DDRx: Dirección de datos Registro, configura los pines como entradas o salidas.
  • PORTx: Registro del puerto de salida. Establece el valor de salida en los pines configurados como salidas. Permite o desactiva el resistor de arranque en pines configurado como entrada.
  • PINx: Registro de entrada, utilizado para leer una señal de entrada. En algunos dispositivos, este registro se puede utilizar para pin toggling: escribir una lógica a un PINx bit toggles el bit correspondiente en PORTx, independientemente del establecimiento de la DDRx Un poco.

Los ATtiny AVR más nuevos, como ATtiny817 y sus hermanos, tienen sus registros de control de puertos definidos de forma algo diferente. xmegaAVR tiene registros adicionales para configuraciones push/pull, totem-pole 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. Solo se puede acceder a ella de la misma manera que a un dispositivo periférico externo, utilizando registros de puntero especiales e instrucciones de lectura/escritura, lo que hace que el acceso a la EEPROM sea mucho más lento que a otra RAM interna.

Sin embargo, algunos dispositivos de la familia SecureAVR (AT90SC) utilizan una asignación especial de EEPROM a la memoria de datos o 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 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 el contenido necesita ser cambiado.

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 recupera mientras se ejecuta la actual. La mayoría de las instrucciones toman 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 se diseñaron teniendo en cuenta la ejecución eficiente del código C compilado y tienen varios punteros integrados para la tarea.

Conjunto de instrucciones

El conjunto de instrucciones de 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 compite AVR en la actualidad. Sin embargo, no es completamente regular:

  • El puntero registra X, Y y Z tienen capacidades que son diferentes entre sí.
  • Lugares de registro R0 a R15 tienen capacidades de tratamiento más limitadas que los lugares de registro R16 a R31.
  • Los puertos I/O 0 a 31 se pueden abordar poco, a diferencia de los puertos I/O 32 a 63.
  • CLR (aclarar todos los bits a cero) afecta las banderas, mientras que SER (ajustar todos los bits a uno) no, aunque son instrucciones complementarias. (CLR es pseudo-op para EOR R, R; mientras SER es corto para LDI R, $FF. Operaciones Aritméticas como EOR modifican banderas, mientras que movimientos/loads/stores/branches como LDI no lo hacen.)
  • El acceso a los datos solo lectura almacenados en la memoria del programa (flash) requiere instrucciones especiales de LPM; el bus flash está reservado para la memoria de instrucciones.

Además, algunas diferencias específicas del 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; Etcétera.

El conjunto de instrucciones, en su mayoría regular, hace que los compiladores C (e incluso Ada) sean bastante sencillos y eficientes. GCC ha incluido soporte AVR durante bastante tiempo, y ese soporte se usa 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.

Velocidad de MCU

La línea AVR normalmente admite velocidades de reloj de 0 a 20 MHz, y algunos dispositivos alcanzan los 32 MHz. La operación de baja potencia generalmente requiere una velocidad de reloj reducida. Todos los AVR recientes (Tiny, Mega y Xmega, pero no 90S) cuentan con un oscilador en el chip, lo que elimina la necesidad de relojes externos o circuitos resonadores. Algunos AVR también tienen un preescalador de 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 un solo ciclo, el AVR puede lograr hasta 1 MIPS por MHz, es decir, un procesador de 8 MHz puede lograr hasta 8 MIPS. Las cargas y almacenamientos hacia/desde la memoria toman dos ciclos, la bifurcación toma dos ciclos. Ramas en el último "PC de 3 bytes" partes 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 las placas de desarrollo a precios razonables y el 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 los chips de cada familia es bastante buena, aunque las funciones del controlador de E/S pueden variar.

Vea enlaces externos para sitios relacionados con el desarrollo de AVR.

Características

Los AVR ofrecen una amplia gama de funciones:

  • Puertos I/O de uso general bidireccional con resistores configurables y incorporados
  • Múltiples osciladores internos, incluyendo osciladores RC sin partes externas
  • Instrucción interna autoprogramable memoria flash hasta 256 KB (384 KB en XMega)
    • Programable en el sistema utilizando interfaces patentadas de baja tensión serie/paralela o JTAG
    • Sección de código de arranque opcional con bits de bloqueo independientes para protección
  • Soporte on-chip (OCD) a través de JTAG o debugWIRE en la mayoría de dispositivos
    • Las señales JTAG (TMS, TDI, TDO y TCK) se multiplican en GPIOs. Estos pines se pueden configurar para funcionar como JTAG o GPIO dependiendo de la configuración de un bit de fusible, que se puede programar a través de ISP o HVSP. Por defecto, AVRs con JTAG viene con la interfaz JTAG habilitada.
    • debugWIRE utiliza el pin /RESET como un canal de comunicación bidireccional para acceder a los circuitos de depuración en chip. Está presente en dispositivos con recuentos inferiores de pin, ya que solo requiere un pin.
  • Datos internos EEPROM hasta 4 KB
  • SRAM interno hasta 16 KB (32 KB en XMega)
  • Externo 64 KB poco espacio de datos endiano en ciertos modelos, incluyendo el Mega8515 y Mega162.
    • El espacio de datos externo se superpone con el espacio de datos interno, de tal manera que el espacio completo de dirección de 64 KB no aparece en el bus externo y accede a la dirección 010016 accederá a RAM interna, no al autobús externo.
    • En algunos miembros de la serie XMega, se ha mejorado el espacio de datos externo para apoyar tanto al SRAM como al SDRAM. Además, se han ampliado los modos de tratamiento de datos para permitir que se aborde directamente hasta 16 MB de memoria de datos.
  • temporizadores de 8 bits y 16 bits
    • PWM de salida (algunos dispositivos tienen un periférico PWM mejorado que incluye un generador de tiempo muerto)
    • Captura de entrada que registra un sello de tiempo activado por un borde de señal
  • Comparador analógico
  • convertidores A/D de 10 o 12 bits, con multiplex de hasta 16 canales
  • convertidores D/A de 12 bits
  • Una variedad de interfaces serie, incluyendo
    • Interfaz compatible con I2C (TWI)
    • Periféricos seriales sincrónicos/asincrónicos (UART/USART) (utilizados con RS-232, RS-485 y más)
    • Autobús de interfaz periférica en serie (SPI)
    • Interfaz de serie universal (USI): un módulo de comunicación multipropósito que se puede utilizar para implementar un SPI, I2Interfaz C o UART.
  • Detección de Brownout
  • Reloj temporizador (WDT)
  • Múltiples modos de sueño que ahorran energía
  • Modelos de control de iluminación y motor (PWM)
  • Soporte de controlador CAN
  • Soporte para controlador USB
    • Propio controlador de hardware de 12 Mbit/s con AVR integrado.
    • También disponibles de baja velocidad (1,5 Mbit/s) (HID) simulaciones de software de bitbanging
  • Soporte para controladores Ethernet
  • Soporte de controlador LCD
  • Dispositivos de bajo voltaje que operan hasta 1.8 V (a 0,7 V para piezas con subconverter DC-DC incorporado)
  • pico Dispositivos de alimentación
  • Controladores DMA y comunicación periférica "sistema de eventos".
  • Soporte criptográfico rápido para AES y DES

Interfaces de programación

Hay muchos medios para cargar código de programa en un chip AVR. Los métodos para programar chips AVR varían de una familia 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.

ISP

Diagramas de cabecera 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 cambios en la línea Restablecer. 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 usando 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, incluido Atmel AVRISP mkII, Atmel JTAG ICE, programadores más antiguos basados en puerto serie de Atmel y varios programas de terceros y "hágalo usted mismo" programadores

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. 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 de 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 usa el pin Reset para entrada de reloj (PDI_CLK) y un pin de datos dedicado (PDI_DATA) para entrada y salida.

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 el chip de los dispositivos ATtiny y ATmega más nuevos. Atmel-ICE y PICkit 4 son capaces de programar chips UPDI. También es posible usar un Arduino gracias a jtag2updi, o un adaptador USB-UART estándar con el pin TX y RX cortocircuitado por una resistencia de 1 kΩ y la utilidad pymcuprog proporcionada por Microchip.

Serie de alto voltaje

La programación en serie de alto voltaje (HVSP) es principalmente el modo de respaldo en los AVR más pequeños. Un paquete 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 usar en algunos dispositivos donde el pin de reinicio ha sido desactivado por fusibles.

Paralelo de alta tensión

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

Cargador de arranque

La mayoría de los modelos 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. En el reinicio, el cargador de arranque se ejecuta primero y hace una determinación programada por el usuario si se debe volver a programar o saltar a la aplicación principal. El código puede reprogramarse a través de cualquier interfaz disponible, o puede leer un binario encriptado a través de un adaptador Ethernet como PXE. Atmel tiene notas de aplicación y código pertenecientes a muchas interfaces de bus.

ROM

La serie AT90SC de AVR está disponible con una ROM de máscara de fábrica en lugar de flash para la memoria del programa. Debido al gran costo inicial y la cantidad mínima de pedido, una ROM de máscara 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 para la depuración, que en su mayoría implican la depuración en el chip mientras el chip está en el sistema de destino.

DebugWIRE

debugWIRE es la solución de Atmel para brindar capacidades de depuración en el chip a través de un solo pin de microcontrolador. Es particularmente útil para piezas con menor número de pines que no pueden proporcionar los cuatro "repuestos" pines necesarios para JTAG. JTAGICE mkII, mkIII y AVR Dragon son compatibles con debugWIRE. debugWIRE se desarrolló después del lanzamiento original de JTAGICE y ahora los clones lo admiten.

JTAG

La función Grupo de acción de prueba conjunta (JTAG) brinda acceso a la funcionalidad de depuración en el chip mientras el chip se ejecuta en el sistema de destino. JTAG permite acceder a la memoria interna y los registros, establecer puntos de interrupción en el código y ejecutar un solo paso para observar el comportamiento del sistema.

Atmel proporciona una serie de adaptadores JTAG para el AVR:

  1. El Atmel-ICE es el último adaptador. Admite interfaces JTAG, debugWire, aWire, SPI, TPI y PDI.
  2. El JTAGICE 3 es un depurador de rango medio en la familia JTAGICE (JTAGICE mkIII). Admite interfaces JTAG, aWire, SPI y PDI.
  3. El mkII JTAGICE reemplaza al JTAGICE y tiene un precio similar. Las interfaces JTAGICE mkII al PC a través de USB, y soporta tanto JTAG como la nueva interfaz de debugWIRE. Numerosos clones de terceros del dispositivo Atmel JTAGICE mkII comenzaron a enviar después de que Atmel publicara el protocolo de comunicación.
  4. El Dragón AVR es un sustituto de bajo costo (aproximadamente $50) para el mkII JTAGICE para ciertas partes de destino. El Dragón AVR proporciona programación en serie en el sistema, programación en serie de alta tensión y programación paralela, así como emulación JTAG o debugWIRE para piezas con 32 KB de memoria del programa o menos. ATMEL cambió la característica de depuración de AVR Dragon con el último firmware de AVR Studio 4 - AVR Studio 5 y ahora admite dispositivos de más de 32 KB de memoria del programa.
  5. El adaptador JTAGICE interfaces al PC a través de un puerto serie estándar. Aunque el adaptador JTAGICE ha sido declarado "fin de vida" por Atmel, sigue siendo compatible con AVR Studio y otras herramientas.

JTAG también se puede usar para realizar una prueba de escaneo de límites, 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 el aficionado probablemente esté mejor probando con un multímetro u osciloscopio.

Herramientas de desarrollo y kits de evaluación

Junta de Desarrollo de 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:

Juego de iniciación STK600

El kit de inicio STK600 y el sistema de desarrollo es una actualización del STK500. 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 conectores 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 enruta las señales al pin adecuado en la placa del dispositivo. Hay muchas placas de enrutamiento de señal 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 cabezal de 4 pines en el STK600 con la etiqueta 'RS-232 de repuesto' 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 en el conector DB-9.

Juego de inicio STK500

El kit de inicio STK500 y el sistema de desarrollo cuentan con ISP y programación de alto voltaje (HVP) para todos los dispositivos AVR, ya sea directamente o a través de placas de extensión. La placa está equipada con tomas 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:

  • STK501 – Añade soporte para microcontroladores en paquetes TQFP de 64 pines.
  • STK502 – Añade soporte para AVRs LCD en paquetes TQFP de 64 pines.
  • STK503 – Añade soporte para microcontroladores en paquetes TQFP de 100 pines.
  • STK504 – Añade soporte para AVRs LCD en paquetes TQFP de 100 pines.
  • STK505 – Añade soporte para AVRs de 14 y 20 pines.
  • STK520 – Añade soporte para 14 y 20, y microcontroladores de 32 pines de la familia AT90PWM y ATmega.
  • STK524 – Añade soporte para la familia ATmega32M1/C1 32-pin CAN/LIN/Motor Control.
  • STK525 – Añade soporte para los microcontroladores AT90USB en paquetes TQFP de 64 pines.
  • STK526 – Añade soporte para los microcontroladores AT90USB en paquetes TQFP de 32 pines.

Juego de inicio STK200

El kit de inicio y el sistema de desarrollo STK200 tienen un conector DIP que puede albergar un chip AVR en un paquete 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.

Microcontroladores compatibles (según el manual)
Chip Tamaño Flash EEPROM SRAM Frecuencia
[MHz]
Paquete
AT90S1200 1 KB 64 B 0 B 12 PDIP-20
AT90S2313 2 KB 128 B 128 B 10 PDIP-20
AT90S/LS2323 2 KB 128 B 128 B 10 PDIP-8
AT90S/LS2343 2 KB 128 B 128 B 10 PDIP-8
AT90S4414 4 KB 256 B 256 B 8 PDIP-40
AT90S/LS4434 4 KB 256 B 256 B 8 PDIP-40
AT90S8515 8 KB 512 B 512 B 8 PDIP-40
AT90S/LS8535 8 KB 512 B 512 B 8 PDIP-40

Atmel-ICE

Atmel ICE es la herramienta económica compatible actualmente 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 es compatible con las interfaces JTAG, PDI, aWire, debugWIRE, SPI, SWD, TPI y UPDI (Microchip Unified Program and Debug Interface).

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:

  • Dispositivos AVR XMEGA de 8 bits a través de la interfaz PDI de 2 hilos
  • 8-bit megaAVR y pequeños dispositivos AVR a través de SPI para todos con soporte OCD (en-chip depurador)
  • Microcontroladores AVR de 8 bits con soporte TPI
  • 32-bit SAM Microcontroladores basados en Arm Cortex-M a través de SWD

Se admiten rangos de voltaje de operación de 1,62 V a 5,5 V, así como los siguientes rangos de reloj:

  • Admite frecuencias de reloj JTAG & PDI de 32 kHz a 7.5 MHz
  • Admite tarifas de baudio aWire de 7,5 kbit/s a 7 Mbit/s
  • Soporta tasas de baudio depuradoras de 4 kbit/s a 0.5 Mbit/s
  • Soporta frecuencias de reloj SPI de 8 kHz a 5 MHz
  • Soporta frecuencias de reloj SWD de 32 kHz a 2 MHz

El ICE es compatible con el IDE de Microchip Studio, así como con una interfaz de línea de comandos (atprogram).

El Atmel-ICE admite una implementación limitada de la interfaz de puerta de enlace de datos (DGI) cuando 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 una ayuda en la depuración a nivel de la 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 usar cualquiera de los "estándar" Pines ICSP, ya sea el conector de 10 pines o de 6 pines.

El AVRISP mkII se conecta a una PC a través de USB y obtiene energía de USB. Los LED visibles a través de la caja translúcida indican el estado de la potencia objetivo.

Como el AVRISP mkII carece de circuitos integrados de controlador/búfer, 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 obtener una 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 ahora están descontinuados, con las páginas de productos eliminadas del sitio web de Microchip. A partir de julio de 2019, el AVRISP mkII todavía está disponible en varios distribuidores. También hay varios clones de terceros disponibles.

Dragón AVR

Dragón AVR con cable de programación ISP y Socket ZIF azul / verde

El Atmel Dragon es una herramienta económica que se conecta a una PC a través de USB. Dragon puede programar todos los AVR a través de JTAG, HVP, PDI o ICSP. Dragon también permite la depuración de todos los AVR a través de JTAG, PDI o debugWire; Se eliminó una limitación anterior a los dispositivos con 32 KB o menos de memoria de programa en AVR Studio 4.18. 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 ser proporcionado por un producto de terceros llamado "Dragon Rider".

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 referido retroactivamente como JTAGICE mkI) usa 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 la programación ISP (usando adaptadores de 6 o 10 pines). Tanto los enlaces USB como los seriales utilizan una variante del protocolo STK500.

JTAGICE3

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

¡AVR UNO!

¡El AVR UNO! 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 los modos de programación SPI, JTAG, PDI y aWire y la depuración mediante las interfaces debugWIRE, JTAG, PDI y aWire.

Tablero de demostración de mariposas

Atmel ATmega169 en paquete MLF de 64 patas en la parte posterior de un tablero de mariposa AVR Atmel

La muy popular placa de demostración AVR Butterfly es una computadora autónoma alimentada por batería que ejecuta el microcontrolador Atmel AVR ATmega169V. Fue construido para mostrar la familia AVR, especialmente una nueva interfaz LCD incorporada. La placa incluye la pantalla LCD, el joystick, el altavoz, el puerto serie, el reloj en tiempo real (RTC), el chip de memoria flash y los 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. El tablero pequeño tiene un alfiler de camisa en la parte posterior para que pueda usarse como una placa de identificación.

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 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 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 duración de la batería del botón. Un programa de cargador 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 IDE de Atmel.

Llave AT90USB

Esta pequeña pizarra, de aproximadamente la mitad del tamaño de una tarjeta de visita, tiene un precio ligeramente superior al de una mariposa AVR. Incluye un AT90USB1287 compatible con 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.

Solo el puerto JTAG utiliza pinout convencional de 2,54 mm. Todos los demás puertos de E/S de AVR requieren encabezados más compactos de 1,27 mm.

El AVR Dragon puede programar y depurar desde que se eliminó la limitación de 32 KB 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 de Windows o Linux, usando la "Actualización de firmware del dispositivo" protocolos Atmel envía programas de ejemplo patentados (código fuente incluido pero distribución restringida) y una pila de protocolo USB con el dispositivo.

LUFA es una pila de protocolos USB de software gratuito de terceros (licencia MIT) para USBKey y otros AVR USB de 8 bits.

Kit inalámbrico Raven

El kit RAVEN es compatible con 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, más una llave USB inalámbrica; y costando tanto (menos de $US100). 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 a los de Butterfly: altavoz piezoeléctrico, DataFlash (más grande), EEPROM externa, sensores, cristal de 32 kHz para RTC, etc. Estos están destinados 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 destinados a monitorear y controlar los nodos remotos, y dependen 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 usan varias interfaces, incluyendo RS-232, puerto paralelo de PC y USB.

Usos

Atmel AVR ATmega328 28-pin DIP en una tabla Arduino Duemilanove
Atmel AVR ATmega8 28-pin DIP en un tablero de desarrollo personalizado

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 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 Diecimila). El ATmega1280 y el ATmega2560, con más pines y capacidades de 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 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 las que se incluyen: Cubloc, gnusb, BasicX, Oak Micros, ZX Microcontrollers y myAVR. También hay 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 incorporaba un núcleo Atmel AVR y un controlador de movimiento avanzado para usar en una variedad de aplicaciones de movimiento, pero esto se ha interrumpido.

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

  • pAVR, escrito en VHDL, tiene como objetivo crear el procesador AVR de mayor rapidez y máxima funcionalidad, mediante la implementación de técnicas no encontradas en el procesador AVR original como tubería más profunda.
  • avr_core, escrito en VHDL, es un clon destinado a estar lo más cerca posible del ATmega103.
  • Navré, escrito en Verilog, implementa todas las instrucciones Classic Core y está dirigido a alto rendimiento y bajo uso de recursos. No soporta interrupciones.
  • softavrcore, escrito en Verilog, implementa la instrucción AVR configurada a AVR5, admite interrupciones junto con el reconocimiento automático de interrupción opcional, ahorro de energía mediante modo de sueño más algunas interfaces periféricas y aceleradores de hardware (como UART, SPI, unidad de cálculo de redundancia cíclica y temporizadores del sistema). Estos periféricos demuestran cómo se pueden adjuntar y configurar para este núcleo. Dentro del paquete, también está disponible un puerto FreeRTOS completo como ejemplo para la utilización del núcleo + periférico.
  • La conferencia CPU del proyecto opencores escrita en VHDL por el Dr. Jürgen Sauermann explica detalladamente cómo diseñar un sistema completo basado en AVR en un chip (SoC).

Otros proveedores

Además de los chips fabricados por Atmel, hay clones disponibles de LogicGreen Technologies. Estas partes no son clones exactos, tienen algunas características que no se encuentran en los chips, son "clones" y velocidades de reloj máximas más altas, pero usa SWD en lugar de ISP para la programación, por lo que se deben usar diferentes herramientas de programación.

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

Contenido relacionado

Libra (fuerza)

La libra de fuerza o libra-fuerza es una unidad de fuerza utilizada en algunos sistemas de medida, incluidas las unidades de ingeniería inglesas y el sistema...

CMOS

Metal-óxido-semiconductor complementario es un tipo de proceso de fabricación de transistores de efecto de campo de semiconductores de óxido de metal que...

Ancho de banda (procesamiento de señal)

Ancho de banda es la diferencia entre las frecuencias superior e inferior en una banda continua de frecuencias. Por lo general, se mide en hercios y, según...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save