Microcontrolador: El microcontrolador puede denominarse como una computadora de un solo chip que incluye varios periféricos como RAM, EEPROM, temporizadores, etc., que son necesarios para realizar alguna tarea predefinida.
Figura 1: Diagrama de bloques que muestra la arquitectura del microcontrolador AVR
¿Significa esto que microcontrolador es otro nombre para computadora…? ¡La respuesta es no!
La computadora, por un lado, está diseñada para realizar todas las tareas de propósito general en una sola máquina, como puede usar una computadora para ejecutar software para realizar cálculos o puede usar una computadora para almacenar algún archivo multimedia o para acceder a Internet a través del navegador, mientras que los microcontroladores están destinados a realizar solo tareas específicas, por ejemplo, apagar automáticamente el aire acondicionado cuando la temperatura ambiente desciende a un cierto límite establecido y encenderlo nuevamente cuando la temperatura sube por encima del límite establecido.
Existen varias familias populares de microcontroladores que se utilizan en diferentes aplicaciones según su capacidad y viabilidad para realizar la tarea deseada, los más comunes son los microcontroladores 8051, AVR y PIC. En este artículo le presentaremos la familia de microcontroladores AVR .
Historia del AVR
AVR fue desarrollado en el año 1996 por Atmel Corporation. La arquitectura AVR fue desarrollada por Alf-Egil Bogen y Vegard Wollan . AVR deriva su nombre de sus desarrolladores y significa A I-Egil Bogen V Egard Wollan R Microcontroller ISC, también conocido como A advanced V virtual R ISC. El AT90S8515 fue el primer microcontrolador basado en Arquitectura AVR , sin embargo, el primer microcontrolador que llegó al mercado comercial fue el AT90S1200 en 1997.
Los microcontroladores AVR están disponibles en tres categorías:
1. TinyAVR : menos memoria, tamaño pequeño, solo apto para aplicaciones más simples
dos. MegaAVR – Son los más populares, con buena cantidad de memoria (hasta 256 KB), mayor número de periféricos integrados y aptos para aplicaciones de moderadas a complejas.
3. XmegaAVR : se utiliza comercialmente para aplicaciones complejas que requieren una gran memoria de programa y alta velocidad.
La siguiente tabla compara la serie de microcontroladores AVR mencionada anteriormente:
Nombre de la serie
|
Patas
|
Memoria flash
|
Característica especial
|
pequeñoAVR
|
6-32
|
0,5-8 KB
|
Pequeño en tamaño
|
MegaAVR
|
28-100
|
4-256KB
|
Periféricos extendidos
|
XmegaAVR
|
44-100
|
16-384KB
|
DMA, sistema de eventos incluido
|
Importancia del AVR
¿Qué tiene de especial el AVR?
Son rápidos: el microcontrolador AVR ejecuta la mayoría de las instrucciones en un único ciclo de ejecución. Los AVR son aproximadamente 4 veces más rápidos que los PIC, consumen menos energía y pueden funcionar en diferentes modos de ahorro de energía. Hagamos una comparación entre las tres familias de microcontroladores más utilizadas.
|
8051
|
FOTOGRAFÍA
|
AVR
|
VELOCIDAD
|
Lento
|
Moderado
|
Rápido
|
MEMORIA
|
Pequeño
|
Grande
|
Grande
|
ARQUITECTURA
|
CISC
|
RISC
|
RISC
|
CAD
|
No presente
|
Incorporado
|
Incorporado
|
Temporizadores
|
Incorporado
|
Incorporado
|
Incorporado
|
canales pwm
|
No presente
|
Incorporado
|
Incorporado
|
AVR es un microcontrolador de 8 bits perteneciente a la familia de computadoras con conjunto de instrucciones reducido ( RISC ). En la arquitectura RISC, el conjunto de instrucciones de la computadora no sólo es menor en número sino también más simple y más rápido en funcionamiento. El otro tipo de categorización es CISC (Computadoras con conjunto de instrucciones complejas). Haga clic para descubrir las diferencias entre RISC y CISC. Exploraremos más sobre esto cuando aprendamos sobre la arquitectura de los microcontroladores AVR en la siguiente sección.
Veamos qué significa todo esto. ¿Qué son 8 bits? Esto significa que el microcontrolador es capaz de transmitir y recibir datos de 8 bits. Los registros de entrada/salida disponibles son de 8 bits. Los controladores de la familia AVR tienen una arquitectura basada en registros, lo que significa que tanto los operandos de una operación se almacenan en un registro como el resultado de la operación también se almacena en un registro. La siguiente figura muestra un ejemplo simple que realiza la operación OR entre dos registros de entrada y almacena el valor en el registro de salida.
Figura 2: Diagrama de bloques que muestra un ejemplo sencillo de cómo realizar la operación OR entre dos registros de entrada y almacenar el valor en el registro de salida
La CPU toma valores de dos registros de entrada INPUT-1 y INPUT-2, realiza la operación lógica y almacena el valor en el registro OUTPUT. Todo esto sucede en 1 ciclo de ejecución.
En nuestro viaje AVR trabajaremos en el microcontrolador Atmega16, que es un IC de 40 pines y pertenece a la categoría megaAVR de la familia AVR. Algunas de las características de Atmega16 son:
· 16 KB de memoria Flash
· 1KB de SRAM
· 512 bytes de EEPROM
· Disponible en DIP de 40 pines
· ADC de 8 canales y 10 bits
· Dos temporizadores/contadores de 8 bits
· Un temporizador/contador de 16 bits
· 4 canales PWM
· Programador de sistemas (ISP)
· Serie USART
· Interfaz SPI
· Comparador digital a analógico.
arquitectura AVR
Los microcontroladores AVR se basan en una arquitectura RISC avanzada y constan de registros de trabajo de uso general de 32 x 8 bits. Dentro de un solo ciclo de reloj, el AVR puede recibir entradas de dos registros de propósito general y colocarlas en la ALU para realizar la operación solicitada y transferir el resultado nuevamente a un registro arbitrario. La ALU puede realizar operaciones aritméticas y lógicas.
sobre las entradas del registro o entre el registro y una constante. También se pueden realizar operaciones de registro único, como obtener un complemento, en la ALU. Podemos ver que el AVR no tiene ningún registro como acumulador como la familia de microcontroladores 8051; Las operaciones se pueden realizar entre cualquiera de los registros y se pueden almacenar en cualquiera de ellos.
El AVR sigue el formato de Arquitectura Harvard, en el que el procesador está equipado con memorias y buses separados para información de Programa y Datos. Aquí, mientras se ejecuta una instrucción, la siguiente instrucción se recupera previamente de la memoria del programa.
Figura 3: Diagrama de bloques de la arquitectura de memoria en el AVR
Dado que AVR puede realizar una ejecución de un solo ciclo, significa que AVR puede ejecutar 1 millón de instrucciones por segundo si la frecuencia del ciclo es de 1 MHz. Cuanto mayor sea la frecuencia de funcionamiento del controlador, mayor será su velocidad de procesamiento. Necesitamos optimizar el consumo de energía con la velocidad de procesamiento y, por lo tanto, seleccionar la frecuencia de funcionamiento en consecuencia.
Hay dos versiones para el microcontrolador Atmega16:
1. Atmega16 : - El rango de frecuencia de funcionamiento es de 0 a 16 MHz.
dos. Atmega16L : - El rango de frecuencia de funcionamiento es de 0 a 8 MHz.
Si utilizamos un cristal de 8 MHz = 8 x 10 6 Hertz = 8 millones de ciclos, entonces el AVR puede ejecutar 8 millones de instrucciones.
Convenio de denominación.!
El NO se refiere a Atmel, el fabricante, Mega significa que el microcontrolador pertenece a la categoría MegaAVR, 16 significa la memoria del controlador, que es de 16 KB.
Figura 4: Convención de nomenclatura del microcontrolador AVR
Diagrama de arquitectura: Atmega16
Los siguientes puntos explican los componentes básicos de la arquitectura Atmega16 :
· Puertos de E/S : Atmega16 tiene cuatro puertos de entrada y salida de 8 bits (PORT, PORTB, PORTC y PORTD).
· Oscilador interno calibrado : El Atmega16 está equipado con un oscilador interno para controlar su reloj. Por defecto, el Atmega16 está configurado para funcionar con un oscilador interno calibrado de 1 MHz. La frecuencia máxima del oscilador interno es de 8 Mhz. Alternativamente, el ATmega16 puede funcionar utilizando un oscilador de cristal externo con una frecuencia máxima de 16MHz. En este caso es necesario modificar los bits de los fusibles. (Los Fuse Bits se explicarán en un tutorial aparte).
· Figura 5: Diagrama de bloques que explica la arquitectura AVR
Interfaz ADC : Atmega16 está equipado con un ADC ( convertidor analógico a digital ) de 8 canales con resolución de 10 bits. El ADC lee la entrada analógica, por ejemplo la entrada de un sensor, y la convierte en información digital comprensible para el microcontrolador.
· Temporizadores/Contadores : Atmega16 consta de dos temporizadores/contadores de 8 bits y uno de 16 bits. Los temporizadores son útiles para generar acciones de precisión, por ejemplo, creando retrasos entre dos operaciones.
· Temporizador de vigilancia : El temporizador de vigilancia está presente con un oscilador interno. El temporizador Watchdog monitorea y reinicia continuamente el controlador si el código se atasca en cualquier acción de ejecución durante más de un intervalo de tiempo establecido.
· Interrupciones : El Atmega16 consta de 21 fuentes de interrupción, de las cuales cuatro son externas. El resto son interrupciones internas que admiten periféricos como USART, ADC, temporizadores, etc.
· USART : El receptor y transmisor de interfaz universal síncrono y asíncrono está disponible para interactuar con un dispositivo externo capaz de comunicación en serie (transmisión de datos bit a bit).
·
Arquitectura continua
Registros de propósito general : El Atmega16 está equipado con 32 registros de propósito general que están acoplados directamente a la Unidad Lógica Aritmética (ALU) de la CPU.
· Memoria : Atmega16 consta de tres secciones de memoria diferentes:
1. Flash EEPROM : La EEPROM flash o memoria flash simple se utiliza para almacenar el programa volcado o escrito por el usuario en el microcontrolador. Se puede borrar fácilmente eléctricamente como una sola unidad. La memoria flash no es volátil, lo que significa que retiene el programa incluso si se corta la energía. Atmega16 está disponible con 16 KB de EEPROM Flash programable por el sistema.
dos. EEPROM direccionable por bytes : también es una memoria no volátil que se utiliza para almacenar datos como valores de ciertas variables. Atmega16 tiene 512 bytes de EEPROM, esta memoria puede ser útil para almacenar el código de bloqueo si estamos diseñando una aplicación como una cerradura electrónica.
3. SRAM : Memoria estática de acceso aleatorio, esta es la memoria volátil del microcontrolador, es decir, los datos se pierden tan pronto como se apaga la alimentación. Atmega16 está equipado con 1 KB de SRAM interna. Una pequeña porción de SRAM está reservada para registros de propósito general utilizados por la CPU y otra porción para los subsistemas periféricos del microcontrolador.
· ISP : La familia de controladores AVR tiene un sistema de Memoria Flash programable que se puede programar sin quitar el IC del circuito, el ISP le permite reprogramar el controlador mientras está en el circuito de aplicación.
· IPS : interfaz periférica serie . El puerto SPI se utiliza para la comunicación serie entre dos dispositivos en una fuente de reloj común. La velocidad de transmisión de datos de SPI es mayor que la de USART.
· TWI : La interfaz de dos cables (TWI) se puede utilizar para configurar una red de dispositivos, muchos dispositivos se pueden conectar a través de la interfaz TWI formando una red, los dispositivos pueden transmitir y recibir simultáneamente y tener su propia dirección única.
· DAC : Atmega16 también está equipado con un convertidor digital a analógico (DAC) que puede usarse para la acción inversa realizada por el ADC. DAC se puede utilizar cuando es necesario convertir una señal digital en una señal analógica.
Familia MegaAVR
Varios microcontroladores de la serie MegaAVR:
ATmega8 y Atmega32 son otros miembros de los controladores de la serie MegaAVR. Son bastante similares al ATmega16 en arquitectura. Los controladores MegaAVR de versión de bajo consumo también están disponibles en los mercados. La siguiente tabla muestra la comparativa entre los diferentes miembros de la familia MegaAVR:
Nombre de la pieza
|
ROM
|
GOLPEAR
|
EEPROM
|
pines I/0
|
Cronógrafo
|
Interrupciones
|
Operación de voltaje
|
Frecuencia de operación
|
embalaje
|
ATmega8
|
8 KB
|
1 KB
|
512B
|
23
|
3
|
19
|
4,5-5,5 V
|
0-16MHz
|
28
|
ATmega8L
|
8 KB
|
1 KB
|
512B
|
23
|
3
|
19
|
2,7-5,5 V
|
0-8MHz
|
28
|
ATmega16
|
16 KB
|
1 KB
|
512B
|
32
|
3
|
21
|
4,5-5,5 V
|
0-16MHz
|
40
|
ATmega16L
|
16 KB
|
1 KB
|
512B
|
32
|
3
|
21
|
2,7-5,5 V
|
0-8MHz
|
40
|
ATmega32
|
32 KB
|
2 KB
|
1 KB
|
32
|
3
|
21
|
4,5-5,5 V
|
0-16MHz
|
40
|
ATmega32L
|
32 KB
|
2 KB
|
1 KB
|
32
|
3
|
21
|
2,7-5,5 V
|
0-8MHz
|
40
|