ATMEGA328P AT 3.3V AND 5V
10 JUNE 2025
Quick reference for wiring ATmega328P ICs at 5V and 3.3V. 5V uses 16MHz
crystal, 3.3V uses 8MHz.
Pinout
Breadboard
5V-16MHz
Standard setup. How Arduino Uno boards are wired.
Connections: Pin 1 → 5V via 10kΩ resistor. Pins 9/10 → 16MHz crystal via 22pF
capacitors to ground. Pins 7/20/21 → 5V supply. Pins 8/22 → ground. Add 0.1μF
decoupling caps between pins 7/20/21 and ground.
Sample Makefile: Makefile
3.3V-8MHz
Electrical connections identical to 5V circuit. Replace 5V with 3.3V supply,
16MHz crystal with 8MHz.
Problem: ATmega328P ships configured for 5V. Must modify fuses (BOD level,
etc.) and replace bootloader. Standard Arduino bootloader expects 16MHz—needs
8MHz version.
Solution: Use Arduino Uno as ISP. Upload ‘ArduinoISP’ sketch from Arduino IDE.
Connect SPI pins (ATmega328P ↔ Uno), Uno’s SS pin → ATmega328P RESET pin. Power
ATmega328P from Uno’s 5V pin during programming.
Arduino IDE: Select ‘ATmega328P (3.3V, 8MHz)’ processor, ‘Arduino as ISP’
programmer. Burn bootloader via tools menu.
Sample Makefile (8MHz): Makefile.3v3
Remarks
Don’t connect AREF (pin 21) to Vcc if using ADC with internal 1.1V
or AVcc reference. See datasheet section 23.5.2.
Quick reference for wiring ATmega328P ICs at 5V and 3.3V. 5V uses 16MHz crystal, 3.3V uses 8MHz.
Pinout |
Breadboard |
5V-16MHz
Standard setup. How Arduino Uno boards are wired.
Connections: Pin 1 → 5V via 10kΩ resistor. Pins 9/10 → 16MHz crystal via 22pF capacitors to ground. Pins 7/20/21 → 5V supply. Pins 8/22 → ground. Add 0.1μF decoupling caps between pins 7/20/21 and ground.
Sample Makefile: Makefile
3.3V-8MHz
Electrical connections identical to 5V circuit. Replace 5V with 3.3V supply, 16MHz crystal with 8MHz.
Problem: ATmega328P ships configured for 5V. Must modify fuses (BOD level, etc.) and replace bootloader. Standard Arduino bootloader expects 16MHz—needs 8MHz version.
Solution: Use Arduino Uno as ISP. Upload ‘ArduinoISP’ sketch from Arduino IDE. Connect SPI pins (ATmega328P ↔ Uno), Uno’s SS pin → ATmega328P RESET pin. Power ATmega328P from Uno’s 5V pin during programming.
Arduino IDE: Select ‘ATmega328P (3.3V, 8MHz)’ processor, ‘Arduino as ISP’ programmer. Burn bootloader via tools menu.
Sample Makefile (8MHz): Makefile.3v3
Remarks
Don’t connect AREF (pin 21) to Vcc if using ADC with internal 1.1V or AVcc reference. See datasheet section 23.5.2.