En el mundo de los microcontroladores y la electrónica, hay muchos tipos diferentes. Uno de los tipos de microcontroladores más populares es la familia AVR. Estos microcontroladores se pueden utilizar en una gran variedad de proyectos o productos, ya que tienen muchos usos y funciones.
Si quieres empezar con un proyecto Arduino pero no estás seguro de cómo programar el microcontrolador AVR con Arduino, ¡no te preocupes! En esta entrada del blog, cubriremos todas tus opciones.
¿Qué es un microcontrolador AVR?
Un microcontrolador AVR es un microcontrolador que utiliza el conjunto de instrucciones AVR. AVR es un microcontrolador de chip único RISC de 8 bits con arquitectura Harvard modificada, desarrollado por Atmel en 1996. Los microcontroladores AVR se utilizan a menudo en placas Arduino y, al programar para placas Arduino, se utiliza el microcontrolador AVR.

Forma completa del microcontrolador AVR
La forma completa del microcontrolador AVR es Atmel AVR. Es un tipo de microcontrolador que fue diseñado originalmente para dispositivos integrados, como automóviles, teléfonos móviles, electrodomésticos, sistemas de vigilancia doméstica y mucho más. Los microcontroladores AVR se utilizan a menudo en placas Arduino y, al programar para placas Arduino, se utiliza el microcontrolador AVR.
Características del microcontrolador AVR
– Bajo consumo: una de las mejores características de los microcontroladores AVR es su bajo consumo energético. Dependiendo del uso que se le dé al dispositivo, el consumo puede variar desde niveles insignificantes hasta un par de vatios.
– Amplio rango de temperaturas: aunque la temperatura puede afectar a la velocidad del dispositivo, los microcontroladores AVR pueden soportar temperaturas que oscilan entre los -40 °C y los 85 °C.
– Arquitectura de 8 bits: otra característica de los microcontroladores AVR es su arquitectura de 8 bits. Esto permite que su dispositivo tenga más memoria y más potencia de procesamiento.
– Fáciles de programar: por último, pero no por ello menos importante, los microcontroladores AVR son fáciles de programar. Esto los convierte en una excelente opción para principiantes y aficionados que desean crear sus propios proyectos.
Arquitectura del microcontrolador AVR
La arquitectura AVR se basa en una arquitectura de ordenador con conjunto de instrucciones reducido (RISC). Las arquitecturas RISC simplifican y hacen mucho más eficiente el proceso de programación, lo que es una de las razones por las que AVR se ha hecho tan popular.
– Conjunto de instrucciones: el conjunto de instrucciones de la arquitectura también se ha reducido. Aunque esto pueda parecer que dificulta la programación, en realidad la facilita, ya que un menor número de instrucciones implica instrucciones menos complejas.
– Ruta de datos de 8 bits: la arquitectura de 8 bits también significa que tiene una ruta de datos de 8 bits, lo que significa que puede procesar más datos a la vez.
– Memoria de programa: la memoria de programa es donde se almacenan todos los programas. Es como un disco duro para el dispositivo.
– Memoria de datos: la memoria de datos es donde se almacenan los datos. Por ejemplo, si quieres almacenar un número en el dispositivo, se almacena en la memoria de datos.
Diagrama de pines del microcontrolador AVR
Existen diferentes tipos de microcontroladores AVR y el diagrama de pines variará según el tipo. Sin embargo, hay algunos diagramas de pines que son comunes en muchos tipos de microcontroladores AVR, como el ATmega328P.
Configuración de pines del ATmega328P
– RESET: RESET es una línea que se activa cuando se reinicia el dispositivo. Esto puede interferir con el programa si ambos están conectados.
– GND: GND significa «tierra». Es la conexión que utilizará el dispositivo para completar el circuito.
– VCC: VCC es el voltaje utilizado para alimentar el dispositivo.
– RX: RX es un pin de entrada que recibe datos de otro dispositivo.
– TX: TX es un pin de salida que envía datos a otro dispositivo.
Diagrama de bloques del microcontrolador AVR
El diagrama de bloques del microcontrolador AVR es el diagrama que muestra todas las partes internas del microcontrolador. Los diferentes modelos tendrán diferentes partes, pero cada modelo es generalmente igual en términos de funcionalidad.
– Memoria de programa: la memoria de programa es donde se almacena el programa. Es como un disco duro para el dispositivo.
– Memoria de datos: la memoria de datos es donde se almacenan los datos.
– Contador de programa: el contador de programa realiza un seguimiento de la posición en la que se encuentra el programa.
– Registro de instrucciones: el registro de instrucciones contiene la siguiente instrucción que se ejecutará.
– ALU: ALU son las siglas de «unidad aritmética lógica». Realiza todas las operaciones matemáticas del programa.
– Archivo de registros: el archivo de registros es una colección de los registros de la ALU. – Temporizador/contador: el temporizador/contador se utiliza para medir el tiempo o contar varios eventos.
¿Qué es Arduino?
Arduino es una plataforma de código abierto que facilita a las personas con poca o ninguna experiencia en programación el diseño y la creación de proyectos electrónicos. Las placas Arduino son capaces de controlar una gran variedad de luces, sensores y otros dispositivos. Las placas Arduino utilizan un software específico para programarlas. Si desea programar el microcontrolador AVR con Arduino, debe utilizar una placa diseñada específicamente para ello.
Programación de microcontroladores AVR con Arduino
Si desea programar el microcontrolador AVR con Arduino, necesitará utilizar una placa Arduino diseñada para microcontroladores AVR. Estas placas están diseñadas específicamente para gestionar la programación del microcontrolador AVR. Programar el microcontrolador AVR con Arduino es tan fácil como cargar un programa en la placa. Una vez que haya cargado el programa, deberá reiniciar la placa Arduino y luego desconectar la fuente de alimentación. Cuando vuelva a conectar la fuente de alimentación, el microcontrolador AVR con Arduino estará programado.
1. Configurar el programador Arduino.
En primer lugar, debe configurar «programador-Arduino» (el Arduino que ha configurado como programador) como ISP. De forma predeterminada, los bocetos (código) están disponibles en Código de ejemplo en el menú Archivo del IDE de Arduino. El boceto ISP de Arduino pasa las instrucciones necesarias al programador-Arduino para configurarlo en modo de programación.

2. LED conectado a Arduino
Como segundo paso, se puede supervisar el estado del Programador-Arduino utilizando los LED conectados, tal y como se muestra. El código ISP de Arduino está preprogramado para esta funcionalidad.

Notas sobre los LED:
Pin 7 = programación (se ilumina durante la programación)
Pin 8 = Error (se ilumina cuando hay un error de programación)
Pin 9 = Normal (permanece encendido una vez que se enciende el programador)
Una vez configurado el Programador-Arduino, se establece la conexión entre el Programador-Arduino y el objetivo Arduino. La configuración de los pines debe realizarse exactamente como se describe en el código ISP de Arduino.
3. Configurar la comunicación SPI
El ISP de Arduino se comunica mediante el protocolo de interfaz periférica serie (SPI) para programar el microcontrolador AVR. La comunicación SPI utiliza 4 señales lógicas: MOSI, MISO, SCLK y SS. Aparte de I2C, SPI es uno de los modos de comunicación más utilizados para los MCU. SPI sigue una arquitectura maestro-esclavo, lo que significa que un dispositivo maestro puede comunicarse con varios dispositivos esclavos utilizando los mismos pines de datos, y el dispositivo esclavo de destino se selecciona mediante la línea de selección de esclavos.
Si hay una tarjeta de memoria, select se utiliza para seleccionar un chip específico entre varios chips. Sin embargo, cuando se utiliza Arduino como herramienta de programación, la señal de selección de esclavo solo se utiliza para restablecer el microcontrolador. Restablezca el microcontrolador en un estado en el que acepte comandos del Arduino del programador.
En Programador-Arduino, los pines 10, 11, 12 y 13 se utilizan como pines de datos. La configuración es la siguiente:
pin 10 = reinicio
Pin 11 = MOSI
Pin 12 = MISO
Pin 13 = SCK
4. Configurar los pines del conector ICSP.
La programación en serie en circuito (ICSP) es la capacidad de programar un microcontrolador sin interrumpir el circuito. El conector ICSP está disponible como 6 pines en la placa Arduino. Conecte los pines 11, 12 y 13 del Arduino de destino a los pines 11, 12 y 13 del Arduino programador. Tenga en cuenta que el pin 10 del Arduino programador debe conectarse al pin de reinicio del Arduino de destino. Alternativamente, los pines del conector ICSP pueden utilizarse para la comunicación SPI.

5. Configurar Arduino como ISP
Después de conectar todo lo anterior, debes definir que estás utilizando el modo Programador en el PC host. Ve a Herramientas en el menú y selecciona «Arduino como ISP» en la opción «Programador».

6. Graba el gestor de arranque en el Arduino.
A continuación, cargue el gestor de arranque en la memoria del Arduino de destino y defina el «fusible». En el mundo Arduino, un fusible es un conjunto de instrucciones que se utilizan para definir múltiples funciones en un microcontrolador. Por ejemplo, la frecuencia del chip y la fuente del reloj se definen en los fusibles. Los microcontroladores son sensibles a los voltajes de funcionamiento y pueden funcionar mal si los niveles de voltaje son inferiores a los especificados. El voltaje mínimo de funcionamiento también se define dentro del fusible.

Precauciones
#1. Si el microcontrolador o la placa Arduino pueden comunicarse con el programa Arduino IDE, existen varias ventajas, como la posibilidad de utilizar el monitor serie del Arduino IDE para comprobar los resultados en tiempo de ejecución. (El monitor serie se abre en una ventana independiente y actúa como un terminal independiente para recibir y enviar datos serie).
#2. Si el gestor de arranque no está cargado en el microcontrolador, no podrá utilizar las funciones de Arduino y no podrá comunicarse con el IDE de Arduino. El gestor de arranque ocupa parte de la memoria. En algunos casos, no es necesario utilizar el IDE de Arduino, por lo que no es necesario programar el gestor de arranque. Si no se programa el gestor de arranque, se puede liberar más memoria para el boceto del programa principal. Por ejemplo, en Arduino UNO, el tamaño total de la memoria es de 32 KB, y se asignan 0,5 KB de memoria para el gestor de arranque. Si no se instala el gestor de arranque, la memoria total disponible para el boceto del programa principal es mayor.
Resumen
El microcontrolador AVR es un chip potente y fácil de usar que se puede programar para una amplia gama de aplicaciones. Es un chip ideal para principiantes que desean iniciarse en el mundo de los microcontroladores y la electrónica. La plataforma Arduino es una forma estupenda de iniciarse en el mundo de los microcontroladores y está diseñada específicamente para principiantes.




