component
ATmega328P
Public Unreviewedby adom
Microchip 8-bit AVR MCU, 28-pin DIP. 32 KB flash, 2 KB SRAM, 20 MHz, the Arduino Uno chip. Datasheet-verified.
master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
{
"schema_version": 1,
"type": "component",
"slug": "atmega328p",
"title": "ATmega328P",
"brief": "Microchip 8-bit AVR MCU, 28-pin DIP. 32 KB flash, 2 KB SRAM, 20 MHz, the Arduino Uno chip. Datasheet-verified.",
"version": "0.1.0",
"license": "CC-BY-SA-4.0",
"tags": [
"component",
"microcontroller",
"mcu",
"avr",
"atmega",
"arduino",
"pdip-28",
"microchip"
],
"component": {
"mpn": "ATmega328P",
"manufacturer": "Microchip Technology",
"package": "PDIP-28",
"pin_count": 28,
"category": "Microcontroller",
"subcategory": "8-bit AVR MCU",
"datasheet": "https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf",
"parts": {
"symbol": "atmega328p.kicad_sym",
"footprint": "atmega328p.kicad_mod",
"model_3d": "atmega328p-etched.glb",
"model_3d_plain": "atmega328p.glb",
"lbr": "atmega328p.lbr",
"model_3d_step": "atmega328p-etched.step",
"model_3d_step_plain": "atmega328p.step"
},
"distributor_links": {},
"pins": [
{
"number": "1",
"name": "PC6/RESET/PCINT14",
"type": "bidirectional",
"description": "Active-low reset input (when RSTDISBL fuse is unprogrammed); a low pulse longer than the minimum length generates a reset even without clock. If RSTDISBL is programmed, functions as PC6 GPIO (different electrical characteristics than other PC pins). Also PCINT14 pin-change interrupt source."
},
{
"number": "2",
"name": "PD0/RXD/PCINT16",
"type": "bidirectional",
"description": "Port D bit 0. Alternate functions: RXD (USART receive input), PCINT16 pin-change interrupt."
},
{
"number": "3",
"name": "PD1/TXD/PCINT17",
"type": "bidirectional",
"description": "Port D bit 1. Alternate functions: TXD (USART transmit output), PCINT17 pin-change interrupt."
},
{
"number": "4",
"name": "PD2/INT0/PCINT18",
"type": "bidirectional",
"description": "Port D bit 2. Alternate functions: INT0 external interrupt, PCINT18 pin-change interrupt."
},
{
"number": "5",
"name": "PD3/INT1/OC2B/PCINT19",
"type": "bidirectional",
"description": "Port D bit 3. Alternate functions: INT1 external interrupt, OC2B (Timer/Counter2 compare output B / PWM), PCINT19 pin-change interrupt."
},
{
"number": "6",
"name": "PD4/T0/XCK/PCINT20",
"type": "bidirectional",
"description": "Port D bit 4. Alternate functions: T0 (Timer/Counter0 external counter input), XCK (USART external clock), PCINT20 pin-change interrupt."
},
{
"number": "7",
"name": "VCC",
"type": "power_in",
"description": "Digital supply voltage. Operating range 1.8V-5.5V (speed-grade dependent: 20MHz requires 4.5-5.5V, 10MHz at 2.7V, 4MHz at 1.8V)."
},
{
"number": "8",
"name": "GND",
"type": "power_in",
"description": "Ground reference. Tie together with pin 22 GND and the AVCC ground return."
},
{
"number": "9",
"name": "PB6/XTAL1/TOSC1/PCINT6",
"type": "bidirectional",
"description": "Port B bit 6. Alternate functions: XTAL1 (input to inverting oscillator amplifier for external crystal/resonator), TOSC1 (Timer/Counter2 asynchronous oscillator input when AS2 in ASSR is set and internal RC oscillator selected), PCINT6 pin-change interrupt."
},
{
"number": "10",
"name": "PB7/XTAL2/TOSC2/PCINT7",
"type": "bidirectional",
"description": "Port B bit 7. Alternate functions: XTAL2 (output from inverting oscillator amplifier), TOSC2 (Timer/Counter2 asynchronous oscillator output), PCINT7 pin-change interrupt."
},
{
"number": "11",
"name": "PD5/T1/OC0B/PCINT21",
"type": "bidirectional",
"description": "Port D bit 5. Alternate functions: T1 (Timer/Counter1 external counter input), OC0B (Timer/Counter0 compare output B / PWM), PCINT21 pin-change interrupt."
},
{
"number": "12",
"name": "PD6/AIN0/OC0A/PCINT22",
"type": "bidirectional",
"description": "Port D bit 6. Alternate functions: AIN0 (analog comparator positive input), OC0A (Timer/Counter0 compare output A / PWM), PCINT22 pin-change interrupt."
},
{
"number": "13",
"name": "PD7/AIN1/PCINT23",
"type": "bidirectional",
"description": "Port D bit 7. Alternate functions: AIN1 (analog comparator negative input), PCINT23 pin-change interrupt."
},
{
"number": "14",
"name": "PB0/ICP1/CLKO/PCINT0",
"type": "bidirectional",
"description": "Port B bit 0. Alternate functions: ICP1 (Timer/Counter1 input capture), CLKO (divided system clock output when CKOUT fuse is programmed), PCINT0 pin-change interrupt."
},
{
"number": "15",
"name": "PB1/OC1A/PCINT1",
"type": "bidirectional",
"description": "Port B bit 1. Alternate functions: OC1A (Timer/Counter1 compare output A / PWM), PCINT1 pin-change interrupt."
},
{
"number": "16",
"name": "PB2/SS/OC1B/PCINT2",
"type": "bidirectional",
"description": "Port B bit 2. Alternate functions: SS (SPI slave-select input; also controls SPI master/slave mode via DDRB), OC1B (Timer/Counter1 compare output B / PWM), PCINT2 pin-change interrupt."
},
{
"number": "17",
"name": "PB3/MOSI/OC2A/PCINT3",
"type": "bidirectional",
"description": "Port B bit 3. Alternate functions: MOSI (SPI master-out/slave-in data), OC2A (Timer/Counter2 compare output A / PWM), PCINT3 pin-change interrupt. Also used for ISP programming (data in)."
},
{
"number": "18",
"name": "PB4/MISO/PCINT4",
"type": "bidirectional",
"description": "Port B bit 4. Alternate functions: MISO (SPI master-in/slave-out data), PCINT4 pin-change interrupt. Also used for ISP programming (data out)."
},
{
"number": "19",
"name": "PB5/SCK/PCINT5",
"type": "bidirectional",
"description": "Port B bit 5. Alternate functions: SCK (SPI bus clock), PCINT5 pin-change interrupt. Also used for ISP programming (clock)."
},
{
"number": "20",
"name": "AVCC",
"type": "power_in",
"description": "Analog supply voltage for the A/D converter, Port C (PC3:0) and (in TQFP/VQFN) ADC7:6. Must be externally connected to VCC even if the ADC is unused; if the ADC is used, connect through an LC low-pass filter for noise isolation."
},
{
"number": "21",
"name": "AREF",
"type": "passive",
"description": "Analog reference input for the A/D converter. Bypass with a decoupling capacitor to GND; may be driven externally or internally selected via ADMUX (AVCC or 1.1V internal bandgap)."
},
{
"number": "22",
"name": "GND",
"type": "power_in",
"description": "Analog ground return (shared with digital GND). Tie to pin 8 GND."
},
{
"number": "23",
"name": "PC0/ADC0/PCINT8",
"type": "bidirectional",
"description": "Port C bit 0. Alternate functions: ADC0 (analog input channel 0, 10-bit), PCINT8 pin-change interrupt."
},
{
"number": "24",
"name": "PC1/ADC1/PCINT9",
"type": "bidirectional",
"description": "Port C bit 1. Alternate functions: ADC1 (analog input channel 1, 10-bit), PCINT9 pin-change interrupt."
},
{
"number": "25",
"name": "PC2/ADC2/PCINT10",
"type": "bidirectional",
"description": "Port C bit 2. Alternate functions: ADC2 (analog input channel 2, 10-bit), PCINT10 pin-change interrupt."
},
{
"number": "26",
"name": "PC3/ADC3/PCINT11",
"type": "bidirectional",
"description": "Port C bit 3. Alternate functions: ADC3 (analog input channel 3, 10-bit), PCINT11 pin-change interrupt."
},
{
"number": "27",
"name": "PC4/ADC4/SDA/PCINT12",
"type": "bidirectional",
"description": "Port C bit 4. Alternate functions: ADC4 (analog input channel 4, 10-bit), SDA (TWI/I2C data line), PCINT12 pin-change interrupt."
},
{
"number": "28",
"name": "PC5/ADC5/SCL/PCINT13",
"type": "bidirectional",
"description": "Port C bit 5. Alternate functions: ADC5 (analog input channel 5, 10-bit), SCL (TWI/I2C clock line), PCINT13 pin-change interrupt."
}
],
"provenance": {
"extractor": "ds2sf",
"datasheet": {
"url": "https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf",
"pages": 653,
"sha256": "b9b9d83cda56a95d",
"source_tier": "mfr"
},
"cad": "KiCad official (CC-BY-SA 4.0)",
"pins": {
"total": 28,
"described": 28,
"cites_pages": true,
"refuses_to_fabricate": true
}
},
"viewers": {
"symbol": "viewers/symbol.html",
"footprint": "viewers/footprint.html"
}
},
"metadata": {
"specs": {
"Core": "8-bit AVR RISC",
"Flash": "32 KB (self-programming)",
"SRAM": "2 KB",
"EEPROM": "1 KB",
"Max clock": "20 MHz",
"GPIO": "23 (ports B/C/D)",
"ADC": "6-channel 10-bit (DIP)",
"Serial": "USART + SPI + I2C (TWI)",
"Timers": "3 (2x 8-bit, 1x 16-bit) with PWM",
"Supply voltage": "1.8-5.5 V",
"Package": "PDIP-28 (SPDIP)"
}
},
"sections": [
"hero",
"viewers",
"readme",
"breadcrumbs",
"info"
],
"discovery_triggers": [
"atmega328p",
"atmega328",
"arduino uno chip",
"8-bit avr",
"avr microcontroller"
],
"discovery_pitch": "ATmega328P 8-bit AVR microcontroller (28-pin DIP, the Arduino Uno chip) with datasheet-verified pinout, KiCad symbol/footprint/3D, and full provenance.",
"author": {
"name": "Ray",
"email": "[email protected]"
},
"dependencies": {},
"hero": {
"type": "image",
"path": "docs/hero.png"
},
"files": [
"page.json",
"README.md",
"atmega328p.kicad_sym",
"atmega328p.kicad_mod",
"atmega328p.glb",
"atmega328p.lbr",
"docs/hero.png",
"docs/atmega328p-datasheet.pdf",
"viewers/symbol.html",
"viewers/footprint.html",
"atmega328p-etched.step"
]
}