Acerca del microcontrolador ATMEGA328P
El ATmega328P es un microcontrolador CMOS de 8 bits y bajo consumo basado en la arquitectura RISC mejorada AVR. El chip ha sido desarrollado por Atmel Corporation (Microchip Technology). Tiene una velocidad de reloj de 20 MHz, 32 KB de memoria flash, un temporizador de 16 bits y 23 líneas de E/S programables. Se utiliza habitualmente en placas Arduino y otros proyectos basados en microcontroladores.
Características del ATMEGA328P
- Microcontrolador AVR de 8 bits de alto rendimiento y bajo consumo;
- Arquitectura RISC avanzada;
- Segmento de memoria no volátil de alta resistencia;
- Reinicio al encender y detección programable de caídas de tensión;
- Oscilador calibrado internamente;
- Fuentes de interrupción externas e internas;
- Seis modos de suspensión: inactivo, reducción de ruido ADC, ahorro de energía, apagado, espera y espera prolongada.
Parámetros ATMEGA328P
- Capacidad de memoria flash: 32 KB
- SRAM: 2 KB
- Capacidad de memoria EEPROM: 1 KB
- Frecuencia de reloj: 20 MHz
- Tipo de interfaz: I2C, SPI, USART
- Tensión de alimentación mínima: 1,8 V; máxima: 5,5 V
- Tensión de alimentación Dispositivos de montaje superficial: Montaje superficial
- Tipo de paquete: PDIP/TQFP
- Número de pines: 28-PDIP, 32-TQFP
- Rango de temperatura de funcionamiento: -40 °C a +85 °C
- Líneas de entrada/salida: 23
- Número de entradas ADC: 8
- Temporizador/contador de 8 bits: 2
- Temporizador/contador de 16 bits: 1
- PWM: 6 canales
- Método de programación: ISP, IAP, H/PV
- Método de simulación: debugWIRE
Pinout ATMEGA328P
El chip ATMEGA328P tiene 28 pines de entrada/salida de propósito general (GPIO), cada uno de los cuales se puede configurar como entrada o salida digital.

Paquete ATMEGA328P
El ATmega328P está disponible en varias opciones de encapsulado, como PDIP (encapsulado plástico dual en línea), TQFP (encapsulado cuadrado plano delgado) y QFN (cuadrado plano sin plomo). En el contexto del microcontrolador ATmega328P, la «P» se refiere al tipo de encapsulado del chip. Por lo tanto, aquí la «P» indica específicamente el encapsulado PDIP.

Diagrama de bloques ATMEGA328P

¿Cómo grabar el gestor de arranque Arduino en ATMEGA328P?
Las placas de desarrollo Arduino compradas en línea han sido programadas con BootLoader, por lo que puede utilizar directamente el IDE de Arduino para cargar programas.
Sin embargo, no hay BootLoader en un nuevo microcontrolador ATMEGA328P, por lo que no se puede utilizar el IDE de Arduino para cargar el programa directamente, y el programa solo se puede programar a través de ICSP.
Necesitamos programar el BootLoader para el MCU nosotros mismos con el fin de utilizar el IDE de Arduino para el desarrollo.
Materiales necesarios
- ATmega328P;
- Oscilador de cristal de 16 MHz;
- Condensador de 22 pf*2;
- Resistencia de 10 K;
- Una placa de desarrollo Arduino (Uno o Nano).

Proceso
- Cargue el programa ArduinoISP en el Arduino Uno;
- Conecta el ATmega328P al Arduino Uno;
- Grabar BootLoader en ATmega328P;
- Prueba el programa LED Blinking en el ATmega328P.
Paso 1: Cargue el programa ArduinoISP en el Arduino Uno.
Conecta la placa de desarrollo Arduino Uno al ordenador. Busca y haz clic en «Archivo > Ejemplos > ArduinoISP» en el software Arduino.

En el código ArduinoISP, se puede ver que los pines MOSI, MISO y SCK están definidos como 11, 12 y 13 respectivamente, lo que coincide con los pines de la placa de desarrollo Arduino Uno.

A continuación, la configuración en Herramientas del IDE es la siguiente:
- Placa: «Arduino Uno»
- Puerto: «COM(Arduino Uno)»
- Programador: «Arduino como ISP»

Haga clic en el icono de carga y, tras unos instantes, el programa ArduinoISP se cargará en su placa de desarrollo Arduino Uno.

Paso 2: Cableado del ATmega328P al Arduino Uno
Según la definición de los pines ISP en el código ArduinoISP anterior, el método de cableado y el diagrama entre Arduino y ATmega328P son los siguientes:
| Arduino | ATmega328P |
|---|---|
| 10 | PIN1(RESET) |
| 11 | PIN17(MOSI) |
| 12 | PIN18(MISO) |
| 13 | PIN19(SCK) |
| GND | GND |
| VCC | VCC |

Paso 3: Grabar BootLoader en ATmega328P
Después de terminar el cableado entre Arduino Uno y ATmega328P, debemos conectar Arduino Uno al ordenador. A continuación, haga clic en «Herramientas > Grabar gestor de arranque» para grabar el gestor de arranque en ATmega328P.

Paso 4: Prueba el programa de parpadeo del LED en el ATmega328P.
Conecta el polo positivo del LED al PIN2 del ATmega328P y el polo negativo a D. El PIN2 del ATmega328P representa PD0, por lo que es «0» en el código.
const int LED_PIN = 2; // Define the LED pin
void setup() {
pinMode(0, OUTPUT); // Set the LED pin as output
}
void loop() {
digitalWrite(0, HIGH); // Turn on the LED
delay(1000); // Wait for one second
digitalWrite(0, LOW); // Turn off the LED
delay(1000); // Wait for one second
}

Como se puede ver en la imagen GIF anterior, el programa de parpadeo del LED funciona con normalidad.




