Microcontrolador ATmega328P: Guia definitivo

Sobre o microcontrolador ATMEGA328P

O ATmega328P é um microcontrolador CMOS de 8 bits e baixo consumo de energia baseado na arquitetura RISC aprimorada AVR. O chip foi desenvolvido pela Atmel Corporation (Microchip Technology). Tem uma velocidade de clock de 20 MHz, 32 KB de memória flash, temporizador de 16 bits e 23 linhas de E/S programáveis. É comumente usado em placas Arduino e outros projetos baseados em microcontroladores.

Características do ATMEGA328P

  • Microcontrolador AVR de 8 bits de alto desempenho e baixo consumo de energia;
  • Arquitetura RISC avançada;
  • Segmento de memória não volátil de alta resistência;
  • Reinicialização ao ligar e detecção programável de queda de energia;
  • Oscilador calibrado internamente;
  • Fontes de interrupção externas e internas;
  • Seis modos de suspensão: Inativo, Redução de ruído ADC, Conservação de energia, Desligamento, Standby e Standby estendido.

Parâmetros ATMEGA328P

  • Capacidade da memória flash: 32 KB
  • SRAM: 2 KB
  • Capacidade da memória EEPROM: 1 KB
  • Frequência do clock: 20 MHz
  • Tipo de interface: I2C, SPI, USART
  • Tensão de alimentação mínima: 1,8 V máxima: 5,5 V
  • Tensão de alimentação Dispositivos de montagem em superfície: Montagem em superfície
  • Tipo de pacote: PDIP/TQFP
  • Número de pinos: 28-PDIP, 32-TQFP
  • Faixa de temperatura de operação: -40 °C a +85 °C
  • Linhas de entrada/saída: 23
  • Número de entradas ADC: 8
  • Temporizador/contador de 8 bits: 2
  • Temporizador/contador de 16 bits: 1
  • PWM: 6 canais
  • Método de programação: ISP, IAP, H/PV
  • Método de simulação: debugWIRE

Pinagem do ATMEGA328P

O chip ATMEGA328P possui 28 pinos de entrada/saída de uso geral (GPIO), cada um dos quais pode ser configurado como entrada ou saída digital.

ATMEGA328P Pinout (28-pin PDIP)
ATMEGA328P Pinout (28-pin PDIP)

Pacote ATMEGA328P

O ATmega328P está disponível em várias opções de pacotes, como PDIP (Plastic Dual Inline Package), TQFP (Thin Quad Flat Package) e QFN (Quad Flat No-Lead). No contexto do microcontrolador ATmega328P, o "P" refere-se ao tipo de pacote do chip. Portanto, aqui o "P" indica especificamente o pacote PDIP.

ATmega328P 28-lead Plastic Dual Inline Package (PDIP)
ATmega328P 28-lead Plastic Dual Inline Package (PDIP)

Diagrama de blocos do ATMEGA328P

ATMEGA328P Block Diagram
ATMEGA328P Block Diagram

Como gravar o bootloader do Arduino no ATMEGA328P?

As placas de desenvolvimento Arduino compradas online foram programadas com BootLoader, pelo que pode utilizar diretamente o Arduino IDE para carregar programas.

No entanto, não há BootLoader em um novo microcontrolador ATMEGA328P, portanto, o IDE do Arduino não pode ser usado para carregar o programa diretamente, e o programa só pode ser programado através do ICSP.

Precisamos programar o BootLoader para o MCU por conta própria para poder usar o IDE do Arduino para desenvolvimento.

Materiais necessários

  • ATmega328P;
  • Oscilador de cristal de 16 MHz;
  • Capacitor de 22 pf*2;
  • Resistor de 10 K;
  • Uma placa de desenvolvimento Arduino (Uno ou Nano).
Materials for Burning Bootloader to ATmega328P
Materials for Burning Bootloader to ATmega328P

Processo

  1. Carregue o programa ArduinoISP no Arduino Uno;
  2. Conecte o ATmega328P ao Arduino Uno;
  3. Gravar o BootLoader no ATmega328P;
  4. Teste o programa LED Blinking no ATmega328P.

Passo 1: Carregue o programa ArduinoISP para o Arduino Uno

Conecte a placa de desenvolvimento Arduino Uno ao computador. Localize e clique em "Arquivo>Exemplos>ArduinoISP" no software Arduino.

Choose the ArduinoISP Program for Arduino Uno
Choose the ArduinoISP Program for Arduino Uno

No código ArduinoISP, você pode ver que os pinos MOSI, MISO e SCK são definidos como 11, 12 e 13, respectivamente, que correspondem aos pinos na placa de desenvolvimento Arduino Uno.

Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code
Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code

Então, as configurações em Ferramentas no IDE são as seguintes:

  • Placa: "Arduino Uno"
  • Porta: "COM(Arduino Uno)"
  • Programador: "Arduino como ISP"
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE

Clique no ícone de upload e, após alguns instantes, o programa ArduinoISP será carregado na sua placa de desenvolvimento Arduino Uno.

Upload the ArduinoISP program to Arduino Uno
Upload the ArduinoISP program to Arduino Uno

Passo 2: Conectando o ATmega328P ao Arduino Uno

De acordo com a definição dos pinos ISP no código ArduinoISP acima, o método de ligação e o diagrama entre o Arduino e o ATmega328P são os seguintes:

ArduinoATmega328P
10PIN1(RESET)
11PIN17(MOSI)
12PIN18(MISO)
13PIN19(SCK)
GNDGND
VCCVCC
Wiring Diagram the ATmega328P to Arduino Uno
Wiring Diagram the ATmega328P to Arduino Uno

Passo 3: Gravar o BootLoader no ATmega328P

Depois de terminar a ligação entre o Arduino Uno e o ATmega328P, precisamos de ligar o Arduino Uno ao computador. Em seguida, clique em "Ferramentas>Gravar Bootloader" para gravar o Bootloader no ATmega328P.

Start to Burn BootLoader on ATmega328P
Start to Burn BootLoader on ATmega328P

Passo 4: Teste o programa LED Blinking no ATmega328P

Conecte o polo positivo do LED ao PIN2 do ATmega328P e o polo negativo ao D. O PIN2 do ATmega328P representa o PD0, portanto, é "0" no 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
}

				
			
LED Blinking Test on ATmega328P
LED Blinking Test on ATmega328P

Como você pode ver na imagem gif acima, o programa de piscar LED está funcionando normalmente.

Compartilhar em:

Rolar para cima

Instant Quote