AVR es una familia de microcontroladores desarrollados desde 1996 por Atmel , adquiridos por Microchip Technology en 2016. Se trata de microcontroladores de un solo chip RISC de 8 bits de arquitectura Harvard modificados . AVR fue una de las primeras familias de microcontroladores en usar memoria flash en chip para el almacenamiento de programas, a diferencia de la ROM , EPROM o EEPROM programables de 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 para 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), [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 lo que significa el término "AVR". [3] Sin embargo, se acepta comúnmente que AVR son las siglas de A lf y el procesador R ISC de 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 AVR MCU original se desarrolló en una casa local de ASIC en Trondheim, Noruega , llamada Nordic VLSI en ese momento, ahora Nordic Semiconductor , donde Bogen y Wollan trabajaban como estudiantes. [ cita requerida ] Se 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 por Bogen y Wollan en Atmel Norway, una subsidiaria de Atmel. Los diseñadores trabajaron en estrecha colaboración con los redactores 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 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 activo-bajo ), 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. [8] 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 se clasifican generalmente en lo siguiente:
- tinyAVR - la serie ATtiny
- Memoria de programa de 0,5 a 32 KB
- Paquete de 6 a 32 pines
- Conjunto periférico limitado
- piezas de la serie tinyAVR 0/1/2, desde 2016
- Periféricos iguales o superiores a megaAVR serie 0
- Sistema de eventos
- Conjunto de instrucciones AVRxt mejorado, multiplicación por hardware
- megaAVR - la serie ATmega
- Memoria de programa de 4 a 256 KB
- Paquete de 28 a 100 pines
- Conjunto de instrucciones extendido (multiplica las instrucciones y las instrucciones para manejar memorias de programas más grandes)
- Amplio conjunto de periféricos '
- Piezas de megaAVR serie 0 desde 2016
- Nuevos periféricos con funcionalidad mejorada
- Sistema de eventos
- Conjunto de instrucciones AVRxt mejorado
- AVR Dx : enfocado en HCI y acondicionamiento de señales analógicas
- Memoria de programa de 16-128 K
- 24 MHz a 1.8-5.5v
- 14-64 pines
- 4-16 K SRAM, 512b EEPROM
- Números de pieza de la forma AVRffDxpp donde ff es el tamaño del flash, x es la familia, pp es el número de pines
- Ejemplo: AVR128DA64: serie DA de 64 pines con flash de 128k
- El temporizador asíncrono de tipo D puede funcionar más rápido que la CPU
- ADC de 12 bits, DAC de 10 bits
- Serie DA (principios de 2020)
- sensores integrados para medición táctil capacitativa ( HCI )
- 28-64 pines
- sin cristal externo de alta frecuencia
- Serie DB, muy similar a DA (mediados-finales de 2020)
- Agrega 2 o 3 amplificadores operacionales en chip
- E / S de voltaje múltiple (MVIO) en PORTC
- Soporta cristal HF externo
- Serie DD (aún no lanzada en noviembre de 2020)
- Flash de 16-64k
- Paquete de 14-32 pines
- Soporte MVIO en 3 o 4 pines
- XMEGA - la serie ATxmega
- Memoria de programa de 16 a 384 KB
- Paquete de 44–64–100 patillas (A4, A3, A1)
- Paquete de 32 pines: XMEGA-E (XMEGA8E5)
- Funciones de rendimiento extendidas, como DMA, "Sistema de eventos" y compatibilidad con criptografía
- Amplio conjunto de periféricos con ADC
- AVR específico de la aplicación
- megaAVR con características especiales que no se encuentran en los otros miembros de la familia AVR, como controlador LCD, controlador USB , PWM avanzado, CAN, etc.
- FPSLIC (AVR con FPGA)
- Puertas FPGA de 5k a 40k
- SRAM para el código del programa AVR, a diferencia de todos los demás AVR
- El núcleo AVR puede funcionar a hasta 50 MHz [9]
- AVR de 32 bits
- En 2006, Atmel lanzó microcontroladores basados en la arquitectura AVR32 de 32 bits . Esta era una arquitectura completamente diferente no relacionada con el AVR de 8 bits, destinada a competir con los procesadores basados en ARM . Tenía una ruta de datos de 32 bits, instrucciones SIMD y DSP , junto con otras funciones de procesamiento de audio y video. El conjunto de instrucciones era similar a otros núcleos RISC, pero no era compatible con el AVR original (ni con ninguno de los diversos núcleos ARM). Desde entonces, el soporte para AVR32 se ha eliminado de Linux a partir del kernel 4.12; El soporte del compilador para la arquitectura en GCC nunca se incorporó al repositorio central de código fuente del compilador y estuvo disponible principalmente en una bifurcación respaldada por el proveedor. En el momento en que se introdujo AVR32, Atmel ya era un licenciatario de la arquitectura ARM , y los microcontroladores ARM7 y ARM9 se lanzaron antes y simultáneamente con el 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 todos integrados en un solo chip, eliminando 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 más grandes o chips flash.
Programa de memoria
Las instrucciones del programa se almacenan en una memoria flash no volátil . Aunque las MCU son de 8 bits, cada instrucción toma una o dos palabras de 16 bits.
El tamaño de la memoria del programa generalmente se indica en el nombre del dispositivo en sí (por ejemplo, la línea ATmega64x tiene 64 KB de memoria flash, mientras que la línea ATmega32x tiene 32 KB).
No se prevén memorias de programas 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 AT94 FPSLIC AVR / FPGA.
Memoria de datos interna
El espacio de direcciones de datos consta del archivo de registro, registros de E / S y 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
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 (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”, solo accesibles como E / S mapeadas 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 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 tinyAVR usa 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 almacenamiento / carga directa (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. A la inversa, 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 Load Program Memory (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 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 de manipulación de E / S rápidas solo pueden llegar a las primeras 64 ubicaciones de registro 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 puede usarse opcionalmente para mapear la EEPROM interna al espacio de direcciones de datos (1000 16 –1FFF 16 ). La SRAM real se ubica después de estos rangos, comenzando en 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.
- DDR x : Registro de dirección de datos, configura los pines como entradas o salidas.
- PORT x : Registro del puerto de salida. Establece el valor de salida en los pines configurados como salidas. Habilita o deshabilita la resistencia pull-up en los pines configurados como entradas.
- PIN x : Registro de entrada, utilizado para leer una señal de entrada. En algunos dispositivos, este registro se puede usar para alternar pines: escribir un uno lógico en un bit PIN x alterna el bit correspondiente en PORT x , independientemente de la configuración del bit DDR x . [10]
Los AVR más nuevos de ATtiny, 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, totem-pole y pullup.
EEPROM
Casi todos los microcontroladores AVR tienen EEPROM interna para el almacenamiento de datos semipermanente. Al igual que la memoria flash, 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 se asigna al espacio de memoria direccionable de la MCU. Solo se puede acceder de la misma manera que un dispositivo periférico externo, utilizando registros de puntero especiales e instrucciones de lectura / escritura, lo que hace que el acceso a EEPROM sea mucho más lento que otras RAM internas.
Sin embargo, algunos dispositivos de la familia SecureAVR (AT90SC) [11] utilizan un mapeo EEPROM especial para los datos o la memoria del 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 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.
Tenga en cuenta que el borrado y la escritura se pueden realizar por separado en muchos casos, byte a byte, lo que también puede ayudar a prolongar la vida cuando los bits solo deben establecerse en 1 (borrar) o borrarse selectivamente en 0 (escribir).
Ejecución del programa
Los AVR de Atmel tienen un diseño de tubería de dos etapas y un solo nivel . Esto significa que la siguiente instrucción de la máquina se obtiene 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 del 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 actualmente compite AVR. Sin embargo, no es completamente regular:
- Los registros de puntero X, Y y Z tienen capacidades de direccionamiento que son diferentes entre sí.
- Las ubicaciones de registro R0 a R15 tienen capacidades de direccionamiento más limitadas que las ubicaciones de registro R16 a R31.
- Los puertos de E / S 0 a 31 se pueden direccionar por bits, a diferencia de los puertos de E / S 32 a 63.
- CLR (borrar todos los bits a cero) afecta a las banderas, mientras que SER (poner todos los bits a uno) no lo hace, aunque son instrucciones complementarias. (CLR es pseudo-op para EOR R, R; mientras que SER es la abreviatura de LDI R, $ FF. Las operaciones aritméticas como EOR modifican las banderas, mientras que los movimientos / cargas / tiendas / ramas como LDI no lo hacen).
- El acceso a los datos de solo lectura almacenados en la memoria del programa (flash) requiere instrucciones especiales de LPM; de lo contrario, el bus flash está reservado para la memoria de instrucciones.
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 dos bytes de longitud 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 flash tienen instrucciones de derivación y llamada con rangos más largos; Etcétera.
El conjunto de instrucciones en su mayoría regular hace que programarlo usando compiladores C (o incluso Ada) sea bastante sencillo. 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 a los principales desarrolladores de compiladores para pequeños microcontroladores, para determinar las características del conjunto de instrucciones que eran más útiles en un compilador para lenguajes de alto nivel. [7]
Velocidad MCU
La línea AVR normalmente puede admitir velocidades de reloj de 0 a 20 MHz, y algunos dispositivos alcanzan los 32 MHz. El funcionamiento con menor potencia suele requerir una velocidad de reloj reducida. Todos los AVR recientes (Tiny, Mega y Xmega, pero no 90S) cuentan con un oscilador en el chip, eliminando la necesidad de relojes externos o circuitos de resonancia. Algunos AVR también tienen un preescalador de reloj del sistema que puede dividir el reloj del sistema hasta en 1024. Este preescalador puede ser reconfigurado por 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 alcanzar hasta 1 MIPS por MHz, es decir, un procesador de 8 MHz puede alcanzar hasta 8 MIPS. Las cargas y las tiendas hacia / desde la memoria toman dos ciclos, la ramificación toma dos ciclos. Las ramas en las últimas partes de "PC de 3 bytes", como 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, que incluyen 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 sitios relacionados con el desarrollo de AVR.
Características
Los AVR ofrecen una amplia gama de funciones:
- Puertos de E / S multifunción, bidireccionales de uso general con resistencias pull-up integradas y configurables
- Múltiples osciladores internos, incluido el oscilador RC sin partes externas
- Memoria flash de instrucciones autoprogramable interna de hasta 256 KB (384 KB en XMega)
- Programable en el sistema mediante interfaces patentadas de bajo voltaje en serie / paralelo o JTAG
- Sección de código de arranque opcional con bits de bloqueo independientes para protección
- Soporte de depuración en chip (OCD) a través de JTAG o debugWIRE en la mayoría de los dispositivos
- Las señales JTAG (TMS, TDI, TDO y TCK) se multiplexan en GPIO . 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. De forma predeterminada, los AVR con JTAG vienen con la interfaz JTAG habilitada.
- debugWIRE usa el pin / RESET como un canal de comunicación bidireccional para acceder a los circuitos de depuración en el chip. Está presente en dispositivos con menor cantidad de pines, ya que solo requiere un pin.
- EEPROM de datos internos hasta 4 KB
- SRAM interna hasta 16 KB (32 KB en XMega)
- Espacio de datos little endian externo de 64 KB en ciertos modelos, incluidos Mega8515 y Mega162.
- El espacio de datos externo se superpone con el espacio de datos interno, de modo que el espacio de direcciones de 64 KB completo no aparece en el bus externo y los accesos a, por ejemplo, la dirección 0100 16 accederán a la RAM interna, no al bus externo.
- En ciertos miembros de la serie XMega, el espacio de datos externos se ha mejorado para admitir SRAM y SDRAM. Además, los modos de direccionamiento de datos se han ampliado para permitir direccionar directamente hasta 16 MB de memoria de datos.
- Temporizadores de 8 y 16 bits
- Salida PWM (algunos dispositivos tienen un periférico PWM mejorado que incluye un generador de tiempo muerto)
- Captura de entrada que registra una marca de tiempo activada 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 seriales, que incluyen
- Interfaz de dos cables (TWI) compatible con I²C
- Periféricos seriales síncronos / asíncronos ( UART / USART) (usados con RS-232 , RS-485 y más)
- Bus de interfaz de periféricos en serie (SPI)
- Interfaz serie universal (USI): módulo de comunicación de hardware multipropósito que se puede utilizar para implementar una interfaz SPI, [12] I 2 C [13] [14] o UART [15] .
- Detección de apagones
- Temporizador de vigilancia (WDT)
- Múltiples modos de suspensión para ahorrar energía
- Modelos de controlador de control de iluminación y motor ( específicos de PWM )
- Soporte de controlador CAN
- Soporte de controlador USB
- Controlador de concentrador y hardware de velocidad completa (12 Mbit / s) adecuado con AVR integrado.
- También emulaciones de software de bitbanging de baja velocidad (1,5 Mbit / s) ( HID ) disponibles gratuitamente
- Soporte de controlador Ethernet
- Soporte de controlador LCD
- Dispositivos de bajo voltaje que funcionan hasta 1,8 V (hasta 0,7 V para piezas con convertidor ascendente CC-CC incorporado)
- dispositivos picoPower
- Controladores DMA y comunicación periférica "sistema de eventos".
- Soporte rápido de criptografía 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 de AVR a otra. La mayoría de los métodos que se describen 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
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 de reinicio. Siempre que las clavijas SPI del AVR no estén conectadas a nada disruptivo, el chip AVR puede permanecer soldado en una PCB durante la reprogramación. 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 es compatible con una variedad de hardware de programación en el sistema, incluido Atmel AVRISP mkII, Atmel JTAG ICE, programadores antiguos basados en puerto serie de 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 de usuario. Esto se hace accediendo al controlador XMEGA NVM a través de la interfaz PDI y ejecutando los comandos del controlador NVM. La PDI es una interfaz de 2 pines que utiliza el pin de reinicio para la entrada del reloj (PDI_CLK) y un pin de datos dedicado (PDI_DATA) para la entrada y salida. [18]
UPDI
La interfaz de depuración y programa unificada (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 pickit 4 son capaces de programar chips updi. También es posible utilizar un arduino gracias a jtag2updi [19]
Serie de alto voltaje
La programación en serie de alto voltaje (HVSP) [20] es principalmente el modo de respaldo en los AVR más pequeños. Un paquete de 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 alto voltaje
La programación en paralelo de alto voltaje (HVPP) se considera el "recurso final" y puede ser la única forma de corregir la configuración de fusibles defectuosos en un chip AVR.
Cargador de arranque
La mayoría de los modelos de 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. En el reinicio, el gestor de arranque se ejecuta primero y determina de forma programada por el usuario si es necesario volver a programar o saltar a la aplicación principal. El código puede reprogramarse a través de cualquier interfaz disponible, o podría leer un binario cifrado a través de un adaptador Ethernet como PXE . Atmel tiene notas de aplicación y código perteneciente a muchas interfaces de bus. [21] [22] [23] [24]
ROM
La serie AT90SC de AVR está disponible con una máscara-ROM de fábrica en lugar de flash para la memoria del programa. [25] 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 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 para la depuración, la mayoría de las cuales implica la depuración en el chip mientras el chip está en el sistema de destino.
debugWIRE
debugWIRE es la solución de Atmel para proporcionar capacidades de depuración en chip a través de un solo pin de microcontrolador. Es particularmente útil para piezas de menor cantidad 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 está ejecutando en el sistema de destino. [26] 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:
- El Atmel-ICE [27] es el último adaptador. Admite interfaces JTAG, debugWire, aWire, SPI, TPI y PDI.
- El JTAGICE 3 [28] es un depurador de rango medio de la familia JTAGICE (JTAGICE mkIII). Admite interfaces JTAG, aWire, SPI y PDI.
- El JTAGICE mkII [29] reemplaza al JTAGICE y tiene un precio similar. El JTAGICE mkII se conecta a la PC a través de USB y es compatible con JTAG y con la nueva interfaz debugWIRE. Numerosos clones de terceros del dispositivo Atmel JTAGICE mkII comenzaron a enviarse después de que Atmel lanzó el protocolo de comunicación. [30]
- El AVR Dragon [31] 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 de más de 32 KB de memoria de programa.
- El adaptador JTAGICE se conecta a la PC a través de un puerto serie estándar. [32] Aunque el adaptador JTAGICE ha sido declarado " final de vida " por Atmel, 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 , [33] 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 u osciloscopio.
Herramientas de desarrollo y kits de evaluación
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 el sistema de desarrollo STK600 es una actualización del STK500. [34] 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, dependiendo del dispositivo que esté 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 encabezado de 4 pines en el STK600 etiquetado como '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 del conector DB-9.
Kit de inicio STK500
El kit de inicio y el sistema de desarrollo STK500 presenta ISP y programación de alto voltaje (HVP) para todos los dispositivos AVR, ya sea directamente o mediante tarjetas de extensión. La placa está equipada con conectores 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: agrega soporte para microcontroladores en paquetes TQFP de 64 pines.
- STK502: agrega soporte para LCD AVR en paquetes TQFP de 64 pines.
- STK503: agrega soporte para microcontroladores en paquetes TQFP de 100 pines.
- STK504: agrega soporte para LCD AVR en paquetes TQFP de 100 pines.
- STK505: agrega soporte para AVR de 14 y 20 pines.
- STK520: agrega soporte para microcontroladores de 14, 20 y 32 pines de la familia AT90PWM y ATmega.
- STK524: agrega soporte para la familia ATmega32M1 / C1 de 32 pines CAN / LIN / Motor Control.
- STK525: agrega soporte para los microcontroladores AT90USB en paquetes TQFP de 64 pines.
- STK526: agrega soporte para los microcontroladores AT90USB en paquetes TQFP de 32 pines.
Kit de inicio STK200
El kit de inicio y el sistema de desarrollo STK200 tiene un conector DIP que puede alojar 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 , una toma para una SRAM de 32k y numerosas E / S generales. El chip se puede programar con un dongle conectado al puerto paralelo.
Chip | Tamaño del flash | EEPROM | SRAM | Frecuencia [MHz] | Paquete |
---|---|---|---|---|---|
AT90S1200 | 1k | 64 | 0 | 12 | PDIP-20 |
AT90S2313 | 2k | 128 | 128 | 10 | PDIP-20 |
AT90S / LS2323 | 2k | 128 | 128 | 10 | PDIP-8 |
AT90S / LS2343 | 2k | 128 | 128 | 10 | PDIP-8 |
AT90S4414 | 4k | 256 | 256 | 8 | PDIP-40 |
AT90S / LS4434 | 4k | 256 | 256 | 8 | PDIP-40 |
AT90S8515 | 8k | 512 | 512 | 8 | PDIP-40 |
AT90S / LS8535 | 8k | 512 | 512 | 8 | PDIP-40 |
AVRISP y AVRISP mkII
AVRISP y AVRISP mkII son herramientas económicas que permiten programar todos los AVR mediante 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 pines ICSP "estándar", ya sea el conector de 10 o 6 pines.
El AVRISP mkII se conecta a una PC a través de USB y se alimenta de USB. Los LED visibles a través de la carcasa translúcida indican el estado de la potencia objetivo.
Como el AVRISP mkII carece de circuitos integrados de controlador / búfer, [35] 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 valor bajo (~ 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. En julio de 2019, el AVRISP mkII todavía está en stock en varios distribuidores. También hay varios clones de terceros disponibles.
AVR Dragón
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, [36] 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 previa para dispositivos con 32 KB o menos de memoria de programa. [37] El Dragon tiene una pequeña área de prototipo 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". [38]
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 de forma retroactiva JTAGICE mkI) utiliza una interfaz RS-232 a 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 Reset), lo que permite la depuración de aplicaciones que se ejecutan en microcontroladores de bajo número 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 de ISP (utilizando adaptadores de 6 o 10 pines). Tanto los enlaces USB como en serie utilizan una variante del protocolo STK500.
JTAGICE3
El JTAGICE3 actualiza el mkII con capacidades de depuración más avanzadas y una programación más rápida. Se conecta a través de USB y es compatible con las interfaces JTAG, aWire, SPI y PDI. [39] El kit incluye varios adaptadores para usar con la mayoría de los pines de interfaz.
AVR ONE!
¡El 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. Es compatible con los modos de programación SPI, JTAG, PDI y aWire y la depuración mediante interfaces debugWIRE, JTAG, PDI y aWire. [40]
Tablero de demostración de mariposas
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 la pantalla LCD, joystick, altavoz, puerto serie, reloj en tiempo real (RTC), chip de memoria flash y sensores de temperatura y voltaje. Las versiones anteriores del AVR Butterfly también contenían un fotorresistor CdS ; no está presente en los tableros Butterfly producidos después de junio de 2006 para permitir el cumplimiento de RoHS . [41] El tablero pequeño tiene un alfiler de camisa en la parte posterior para que se pueda usar como una insignia con el 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 con 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 8 MHz, pero el software la configura de fábrica en 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 Atmel IDE.
AT90USBKey
Esta pequeña placa, aproximadamente la mitad del tamaño de una tarjeta de visita, tiene un precio ligeramente superior al de una AVR Butterfly. Incluye un 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 por USB.
Solo el puerto JTAG utiliza un pinout convencional de 2,54 mm. Todos los demás puertos de E / S del AVR requieren cabezales de 1,27 mm más compactos.
El AVR Dragon puede programar y depurar desde que se eliminó la limitación de 32 KB en AVR Studio 4.18, y 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, utilizando los protocolos de "Actualización de firmware del dispositivo" USB. Atmel incluye programas de ejemplo patentados (código fuente incluido pero distribución restringida) y una pila de protocolos USB con el dispositivo.
LUFA [42] 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 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 eso (menos de $ 100). Todas estas placas son compatibles con 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 Raven se parecen al Butterfly: altavoz piezoeléctrico, DataFlash (más grande), EEPROM externo, sensores, cristal de 32 kHz para RTC , etc. Estos están diseñados 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 diseñados para 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 depuración y programación de terceros para el AVR. Estos dispositivos utilizan varias interfaces, incluido RS-232, puerto paralelo de PC y USB. [43]
Usos
Los AVR se han utilizado en diversas aplicaciones automotrices, como seguridad, sistemas de 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 la Diecimila). El ATmega1280 y ATmega2560, con más capacidades de memoria y pinout, también se han empleado para desarrollar la plataforma Arduino Mega . Las placas Arduino se pueden usar 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 de mano 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 pequeños sistemas, entre las que se incluyen: Cubloc, [44] gnusb, [45] BasicX , [46] Oak Micros, [47] ZX Microcontrollers, [48 ] y myAVR. [49] También hay una gran comunidad de placas compatibles con Arduino que admiten usuarios similares.
Schneider Electric solía producir el motor M3000 y el chip de control de movimiento, que incorporaba un núcleo AVR de Atmel y un controlador de movimiento avanzado para su uso en una variedad de aplicaciones de movimiento, pero se ha descontinuado. [50]
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, [51] escrito en VHDL , tiene como objetivo crear el procesador AVR más rápido y con todas las funciones, mediante la implementación de técnicas que no se encuentran en el procesador AVR original, como una canalización más profunda.
- avr_core, [52] escrito en VHDL , es un clon destinado a ser lo más parecido posible al ATmega103.
- Navré, [53] escrito en Verilog , implementa todas las instrucciones de Classic Core y está dirigido a un alto rendimiento y bajo uso de recursos. No admite interrupciones.
- softavrcore, [54] escrito en Verilog , implementa la instrucción AVR configurada para AVR5, admite interrupciones y algunas interfaces (como UART , SPI y temporizadores) que demuestran cómo se conectan y configuran los periféricos externos para este núcleo.
- La conferencia sobre CPU del proyecto opencores [55] escrita en VHDL por el Dr. Jürgen Sauermann explica en detalle cómo diseñar un sistema completo basado en AVR en un chip (SoC).
Otros proveedores
Además de los chips fabricados por Atmel, los clones están disponibles en LogicGreen Technologies. [56] Estas partes 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 en lugar de ISP para programar, por lo que se deben usar diferentes herramientas de programación.
NIIET en Voronezh , Rusia, está fabricando microcontroladores que utilizan la arquitectura ATmega como parte de la serie 1887 de circuitos integrados. Esto incluye un ATmega128 con la designación 1887VE7T (en ruso : 1887ВЕ7Т ). [57]
Referencias
- ^ Desde 1996, NTH se ha convertido en parte de la Universidad Noruega de Ciencia y Tecnología (NTNU)
- ^ blog alfbogen.com
- ^ a b "La historia de AVR" . youtube.com.
- ^ "Escuela de Ingeniería y Ciencias de la Computación de la UNSW - Información general de AVR" . Cse.unsw.edu.au. Archivado desde el original el 23 de junio de 2012 . Consultado el 19 de septiembre de 2012 .
- ^ Una introducción a Atmel y el microcontrolador AVR
- ^ "Sistemas empotrados y microcontroladores" (PDF) . Archivado desde el original (PDF) el 24 de diciembre de 2004 . Consultado el 1 de octubre de 2018 .
- ^ a b Myklebust, Gaute. "El codiseño del microcontrolador AVR y del compilador C" (PDF) . Atmel Noruega. CiteSeerX 10.1.1.63.1447 . Consultado el 19 de septiembre de 2012 .
- ^ Comunicado de prensa de Atmel. "El microcontrolador AVR de Atmel envía 500 millones de unidades" .
- ^ Circuito integrado de nivel de sistema programable en campo Archivado el 27 de noviembre de 2012 en la Wayback Machine.
- ^ atmel.com
- ^ Circuitos integrados de tarjeta inteligente Atmel
- ^ "AVR319: Uso del módulo USI para comunicación SPI" (PDF) . Atmel . 2004 . Consultado el 10 de junio de 2014 .
- ^ "Atmel AVR310: Uso del módulo USI como maestro I 2 C" (PDF) . Atmel . 2013 . Consultado el 10 de junio de 2014 .
- ^ "AVR312: Uso del módulo USI como esclavo I 2 C" (PDF) . Atmel . 2005 . Consultado el 10 de junio de 2014 .
- ^ "AVR307: UART semidúplex con el módulo USI" (PDF) . Atmel . 2003 . Consultado el 10 de junio de 2014 .
- ^ "Consideraciones de diseño de hardware AVR" (PDF) (nota de aplicación). Atmel Corporation. Junio de 2015. p. 5 . 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.
- ^ "Programador AVRDUDE" . Savannah.nongnu.org . Consultado el 19 de septiembre de 2012 .
- ^ "Controlador de programación PDI" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ https://github.com/ElTangas/jtag2updi
- ^ "HVSP_Description" . Soporte.atmel.no. Archivado desde el original el 12 de octubre de 2009 . Consultado el 19 de septiembre de 2012 .
- ^ "Cargador de arranque AVR cifrado con DES" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ "Cargador de arranque AVR cifrado con AES" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ "XMEGA Bootloader" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ "AVR USB Bootloader" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ "Microcontroladores Flash de autoprogramación de Atmel" (PDF) . Consultado el 12 de marzo de 2020 .
- ^ "Guía para comprender JTAG y fusibles de seguridad en el AVR" . Consultado el 19 de septiembre de 2012 .
- ^ "Atmel-ICE - Corporación Atmel" . Atmel.com . Consultado el 11 de septiembre de 2015 .
- ^ "JTAGICE 3- Atmel Corporation" . Atmel.com . Consultado el 19 de septiembre de 2012 .
- ^ "AVR JTAGICE mkII" . Atmel . Archivado desde el original el 15 de febrero de 2013 . Consultado el 13 de enero de 2013 .
- ^ "Protocolo de comunicación JTAGICE mkII" (PDF) . Consultado el 19 de septiembre de 2012 .
- ^ "AVR Dragón" . Atmel . Consultado el 13 de enero de 2013 .
- ^ "Guía del usuario de AVR JTAGICE mkII" (PDF) . microchip.com . Consultado el 25 de marzo de 2020 .
- ^ Comunicado de prensa de JTAGICE, 2004. Archivado el 7 de julio de 2011 en la Wayback Machine.
- ^ "STK600" . Atmel . Archivado desde el original el 15 de febrero de 2013 . Consultado el 13 de enero de 2013 .
- ^ "AVRISP mkII desmontado" . Archivado desde el original el 8 de noviembre de 2014 . Consultado el 8 de noviembre de 2014 .
- ^ "AVR1005: Introducción a XMEGA, página 7" (PDF) . Atmel . Consultado el 7 de noviembre de 2011 .
- ^ "Notas de la versión de AVR Studio v4.18" . Consultado el 19 de septiembre de 2012 .
- ^ "Tecnología ECROS - Dragon Rider" . Ecrostech.com. 2008-03-02 . Consultado el 19 de septiembre de 2012 .
- ^ Página de producto de JTAGICE3
- ^ AVR ONE! Página del producto
- ^ Mariposa AVR
- ^ "LUFA (anteriormente MyUSB)" . Cubículo de cuatro paredes . Consultado el 19 de septiembre de 2012 .
- ^ Consulte avrffreaks.net para obtener una lista completa.
- ^ "Tecnología Comfile" . Comfile Technology, Inc . Consultado el 13 de enero de 2013 .
- ^ "gnusb: caja de sensor USB de código abierto" . Consultado el 13 de enero de 2013 .
- ^ "BasicX" . NetMedia, Inc. Archivado desde el original el 23 de mayo de 2013 . Consultado el 13 de enero de 2013 .
- ^ "Bienvenidos a Oak Micros" . Oak Micros . Oak Micros. Archivado desde el original el 25 de octubre de 2012 . Consultado el 13 de enero de 2013 .
- ^ "ZBasic" . Consultado el 13 de enero de 2013 .
- ^ "myAVR" . Laser & Co. Solutions GmbH . Consultado el 13 de enero de 2013 .
- ^ "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 .
- ^ "pAVR :: Resumen" . OpenCores . Consultado el 19 de septiembre de 2012 .
- ^ "AVR Core :: Descripción general" . OpenCores . Consultado el 19 de septiembre de 2012 .
- ^ "Descripción general del clon Navré AVR (RISC de 8 bits)" . OpenCores . Consultado el 19 de septiembre de 2012 .
- ^ "Descripción general de las interfaces Soft AVR Core +" . OpenCores . Consultado el 16 de junio de 2020 .
- ^ "Conferencia de CPU" . OpenCores . Consultado el 16 de febrero de 2015 .
- ^ "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.
- ^ "Микроконтроллеры" [Microcontroladores] (en ruso). Voronezh: OAO "NIIET". Archivado desde el original el 22 de agosto de 2017 . Consultado el 22 de agosto de 2017 .
Otras lecturas
- Programación AVR: aprender a escribir software para hardware ; Elliot Williams; Maker Media; 474 páginas; 2014; ISBN 978-1449355784
- Arduino: una guía de inicio rápido ; Maik Schmidt; Estantería pragmática; 276 páginas; 2011; ISBN 978-1-934356-66-1 .
- Requiere ensamblaje: programación en lenguaje ensamblador con el microcontrolador AVR ; Timothy S Margush; Prensa CRC; 643 páginas; 2011; ISBN 978-1439820643
- Microcontrolador AVR y sistemas integrados: uso de Assembly y C ; Muhammad Ali Mazidi, Sarmad Naimi, Sepehr Naimi; Pearson; 792 páginas; 2010; ISBN 978-0138003319 .
enlaces externos
- Página web oficial
- Atmel AVR
- Comunidad oficial
- Comunidad de AVR Freaks
- Foro de microchip
- Diagramas de pines
- Paquetes AVR DIP: ATtiny44 / 45/84/85 , ATmega328P , ATmega644P , ATmega1284P
- Paquetes AVR SMD: ATmega328 , ATmega2560 , ATmega32U4