Arquitectura de los microcontroladores AVR

Introducción

Aprender a programar microcontroladores significa aprender a usar todos sus recursos para luego aplicarlos en el diseño deseado. Es un proceso continuo, sistemático y que demanda algo de paciencia.

En esta clase empezaremos por conocer el hardware interno de los AVR enfocándonos en los ATmega de las series 8yy y 4yy, que son en la actualidad los mejores microcontroladores de 8 bits de Atmel disponibles en encapsulados DIP de 28 y 40 pines respectivamente. Entre los miembros de estas familias están el ATmega48yy, ATmega88yy, ATmega168yy, ATmega328yy, ATmega164yy, ATmega324yy, ATmega644yy y ATmega1284yy. Las letras yy pueden ser P, V, PA.

Existe mucha compatibilidad entre los microcontroladores de Atmel, por lo que la teoría expuesta es aplicable en gran parte a otras series de AVR como los ATtiny, los ATmega con USB o incluso a los AVR antiguos como los clásicos ATmega8535, ATmega8515, ATmega16, ATmega32, etc. A decir verdad, los AVR que estudiaremos son como las versiones mejoradas de los "clásicos" ATmega citados anteriormente.

En esta clase nos familiarizaremos con la nomenclatura de los AVR, aprenderemos a reconocer sus capacidades de memoria FLASH y RAM a partir de sus nombres, y echaremos un vistazo a sus principales recursos hardware. Así que si no sabías con cuál microcontrolador AVR empezar a trabajar, éste es un buen punto de partida.

 

Características Comunes de los ATmega

Citaremos las características más notables de los ATmegaNN8YY y ATmegaNN4YY. Quizá muchas de ellas no las comprendas de plano. Puedes tomar eso como referencia para medir tu avance en el dominio del AVR.

  • Tienen un repertorio de 131 instrucciones. Están optimizadas para generar un mejor código con los compiladores de alto nivel, en especial el C.
  • Poseen 32 Registros de Trabajo de 8 bits cada uno. Se denominan desde R0 a R31. Esto en realidad es aplicable a todas las familias de los AVR de bits, incluyendo los ATxmega.
  • Tienen una velocidad de ejecución de hasta 20 MIPS (20 Millones de Instrucciones Por Segundo), que se alcanzará cuando el reloj del sistema (XTAL) sea de 20 MHz. Aunque como en cualquier otro microcontrolador, en la práctica no será una velocidad sostenida, porque en el programa habrá instrucciones que se demoran 2 ó más ciclos de instrucción. Sin embargo, siguen siendo bastante rápidos si los comparamos por ejemplo con sus contrapartes de Microchip, los PIC18, los cuales tienen un límite de 10 o 12 MIPS.
  • Tienen un Timer0 de 8 bits que puede trabajar como Contador o Temporizador o Generador de ondas PWM de 8 bits de resolución.
  • Tienen un Timer1 de 16 bits que opera en modo Contador, Temporizador o como Generador de ondas PWM con resolución configurable de hasta 16 bits.
  • Los ATmega1284yy tienen adicionalmente un Timer3 idéntico al Timer1.
  • Tienen un Timer2 de 8 bits, parecido al Timer0 pero con soporte para operar asíncronamente con un XTAL externo.
  • Tienen un Comparador Analógico.
  • Tienen un módulo TWI (Two Wire Interface) para comunicaciones con el protocolo I2C en modos Maestro y Esclavo.
  • Tienen un módulo SPI programable. Soporta los modos Maestro y Esclavo.
  • Tienen un Conversor ADC de 10 bits, con hasta 8 canales de entrada.
  • Tienen un USART0: Puerto serie Transmisor Receptor Síncrono Asíncrono Universal.
  • Los ATmegaNN4YY tienen adicionalmente un USART1, con características idénticas a las del USART0.
  • Operan con voltajes de alimentación entre 1.8V y 5.5V. Mienrtras más alta sea la frecuencia de operación del AVR más alto será el nivel de alimentación requerido, por ejemplo, para trabajar a la máxima frecuencia de 20 MHz, Vcc debe tener un valor muy estable entre 4.5V y 5V.
  • Tienen un Oscilador RC interno configurable como oscilador principal del sistema.
  • Tienen 6 modos Sleep, para una mejor administración del consumo de la energía.
  • Tienen un circuito BOD o detector de bajo voltaje de alimentación.
  • Tienen un temporizador Watchdog, para vigilar que el programa no quede colgado.
  • Los ATmegaNN8YY tienen 3 puertos de E/S (con 23 pines en total) y los ATmegaNN4YY tienen 4 puertos de E/S (con 32 pines en total).
  • Oscilador del sistema seleccionable, desde el Oscilador RC interno hasta cristales de cuarzo.
  • Tienen un modo de programación paralela de alto voltaje (14V) y un modo de programación serial en bajo voltaje (5V).