Arduino Nano Every Pinout: ATmega4809, GPIO, ADC, PWM and UPDI

Arduino Nano Every pinout guide for the ATmega4809: D0-D13, A0-A7, 5 V GPIO, ADC, PWM, SPI, I2C, UART, interrupts, timers, UPDI programming and key differences from the classic Nano.

The Arduino Nano Every keeps the familiar 45 × 18 mm Nano form factor but replaces the classic ATmega328P with the much newer ATmega4809.

At first glance it looks almost identical to the classic Nano. The physical header layout is intentionally compatible, but the internal architecture is significantly different.

The Nano Every gives you:

  • 48 kB Flash instead of 32 kB;
  • 6 kB SRAM instead of 2 kB;
  • 256 bytes EEPROM;
  • a newer megaAVR 0-series peripheral architecture;
  • more flexible interrupts;
  • an event system;
  • modern TCA/TCB timers;
  • single-wire UPDI programming/debugging;
  • a separate SAMD11 USB bridge.

It remains a 5 V Nano, which makes it useful for many legacy sensors and accessories, but software written for direct ATmega328P register access is not automatically portable.

This guide maps the Nano Every pins, explains GPIO, ADC, PWM, SPI, I²C, UART and interrupts, and shows how the SAMD11 bridge uses UPDI to program the ATmega4809.

Arduino Nano Every Specifications

Feature Arduino Nano Every
Main MCU ATmega4809
Architecture 8-bit megaAVR 0-series
MCU maximum frequency Up to 20 MHz
Current official Arduino core setting 16 MHz
Operating voltage 5 V
Flash 48 kB
SRAM 6 kB
EEPROM 256 bytes
Standard digital header pins D0-D13
Analog pins A0-A7
Externally usable digital-capable positions in Arduino core 22: D0-D13 + A0-A7
ADC 10 bit
Official PWM pins D3, D5, D6, D9, D10
Hardware SPI Yes
Hardware I²C/TWI Yes
UART on Nano header D0 RX, D1 TX
Interrupts All digital pins supported by Arduino attachInterrupt()
Programming/debug interface UPDI
USB bridge ATSAMD11D14A
USB connector Micro-USB
VIN 7-21 V

20 MHz MCU, but Current Arduino Core Runs at 16 MHz

This is a useful Nano Every detail because Arduino’s hardware page describes the ATmega4809 as a 20 MHz processor.

The chip itself is capable of running at up to 20 MHz.

However, Arduino’s current official ArduinoCore-megaavr board definition still configures Nano Every with:

and the clock fuse configuration is also set for the 16 MHz oscillator mode.

So for normal Arduino sketches using the official board package, treat the Nano Every as a 16 MHz board unless you deliberately change the low-level clock configuration.

Do not simply change timing assumptions to 20 MHz without also ensuring the clock fuse, core timing and serial baud calculations all match.

Complete Nano Every Pin Mapping

Arduino pin ATmega4809 port pin Main functions
D0 PC5 Digital I/O, UART RX, interrupt
D1 PC4 Digital I/O, UART TX, interrupt
D2 PA0 Digital I/O, interrupt
D3 PF5 Digital I/O, PWM, interrupt
D4 PC6 Digital I/O, interrupt
D5 PB2 Digital I/O, PWM, interrupt
D6 PF4 Digital I/O, PWM, interrupt
D7 PA1 Digital I/O, interrupt
D8 PE3 Digital I/O, SPI SS alias in current core, interrupt
D9 PB0 Digital I/O, PWM, interrupt
D10 PB1 Digital I/O, PWM, interrupt
D11 PE0 Digital I/O, SPI COPI/MOSI, interrupt
D12 PE1 Digital I/O, SPI CIPO/MISO, interrupt
D13 PE2 Digital I/O, SPI SCK, built-in LED, interrupt
A0 / D14 PD3 ADC input, digital I/O, interrupt
A1 / D15 PD2 ADC input, digital I/O, interrupt
A2 / D16 PD1 ADC input, digital I/O, interrupt
A3 / D17 PD0 ADC input, digital I/O, interrupt
A4 / D18 PF2 plus board I²C routing ADC input, digital I/O, SDA, interrupt
A5 / D19 PF3 plus board I²C routing ADC input, digital I/O, SCL, interrupt
A6 / D20 PD4 ADC input, digital I/O, interrupt
A7 / D21 PD5 ADC input, digital I/O, interrupt

Physical Header Layout

The Nano Every deliberately follows the same physical Nano pin order:

This makes many mechanical Nano accessories compatible, but electrical and peripheral compatibility still needs to be checked.

Same Physical Pinout Does Not Mean Same Peripheral Mapping

This is one of the most important Nano Every lessons.

The classic Nano and Nano Every look pin-compatible, but some functions changed.

For example:

Feature Classic Nano Nano Every
PWM pins D3, D5, D6, D9, D10, D11 D3, D5, D6, D9, D10
A6/A7 digital use No, analog-only Yes, digital-capable
Dedicated attachInterrupt pins D2, D3 All digital pins
Programming Classic AVR bootloader/ISP architecture UPDI through SAMD11 bridge
USB bridge FT232RL on official classic Nano ATSAMD11D14A

For the older board’s complete mapping, see our classic Arduino Nano pinout guide.

Digital GPIO

The standard digital header still provides:

and the Arduino core also lets A0-A7 operate as digital pins.

Examples:

This second example is important because it would not work the same way on the classic ATmega328P Nano, where A6 and A7 are analog-only.

A6 and A7 Are Real GPIO on Nano Every

On Nano Every:

They connect to normal ATmega4809 GPIO pins:

So they can be used with:

as well as analogRead().

GPIO Voltage

Nano Every is a 5 V board.

This is useful when migrating projects based on:

  • classic Nano modules;
  • 5 V sensors;
  • relay boards;
  • older LCD modules;
  • 5 V logic devices.

Do not assume other modern Nano-family boards are also 5 V. Nano ESP32, Nano 33 IoT, Nano 33 BLE and several others use 3.3 V logic.

GPIO Current

Arduino’s current Nano Every pinout notes:

Also respect port-group current limits.

As usual, the 40 mA figure is an absolute maximum rating, not a normal design target.

For reliable design, stay comfortably below the maximum and use drivers for power loads.

PWM Pins

The official Arduino core currently marks these pins as supported for PWM:

That is only five standard PWM pins.

This is different from the classic Nano, where D11 is also an official PWM pin.

D11 Is Not an Official PWM Pin on Nano Every

This is a common migration surprise.

On classic Nano:

On Nano Every’s current Arduino core:

If an old project depends on:

do not assume it will behave identically after moving to Nano Every.

PWM Timer Mapping

The current Nano Every board variant maps PWM through the ATmega4809’s newer timers:

Pin Arduino core timer mapping
D3 TCB1
D5 TCA0
D6 TCB0
D9 TCA0
D10 TCA0

The ATmega4809’s timer architecture is very different from the ATmega328P’s Timer0/Timer1/Timer2 layout.

TCA and TCB Timers

The ATmega4809 includes:

  • one 16-bit Timer/Counter Type A: TCA;
  • four 16-bit Timer/Counter Type B units: TCB0-TCB3;
  • a separate real-time counter;
  • an event system that can route peripheral events without CPU intervention.

This provides more internal flexibility than the classic ATmega328P, but it also means old code that directly accesses registers such as:

does not transfer directly.

Do Not Assume AVR Register Compatibility

The Nano Every is still an AVR board, but it is not an ATmega328P with more memory.

Register names, peripheral blocks and port structures changed substantially.

Code such as:

or:

must be reviewed or rewritten.

Normal Arduino APIs such as:

are much more portable.

ATmega328P Register Emulation Mode

The Arduino megaAVR board package includes an optional:

mode for Nano Every.

This can help some older code compile, but it is not magic hardware compatibility.

Use it as a migration aid, not as proof that every low-level 328P library will behave identically.

ADC Inputs

The Nano Every physically exposes eight analog inputs:

The ATmega4809 itself contains a 16-channel ADC, but only a subset of those channels is exposed through the normal Nano headers.

ADC Resolution

The ATmega4809 ADC is 10 bit.

So:

normally returns:

With a nominal 5 V reference, the ideal quantisation step is:

As always, that is resolution rather than guaranteed absolute accuracy.

ADC Channel Mapping

The current Arduino variant maps the analog pins to ATmega4809 ADC channels as follows:

Arduino pin ADC channel
A0 AIN3
A1 AIN2
A2 AIN1
A3 AIN0
A4 AIN12
A5 AIN13
A6 AIN4
A7 AIN5

The channel order is therefore not simply A0 = ADC0, A1 = ADC1 and so on.

Normal analogRead(Ax) code hides this mapping from you.

AREF

The AREF pin remains available in the Nano physical format.

Use Arduino’s reference-selection API rather than directly manipulating the ADC reference unless you have a specific low-level requirement.

As always, never apply an external reference outside the permitted electrical range.

No True DAC

Nano Every does not include a true voltage DAC.

analogWrite() generates PWM on supported PWM pins.

If you need a real analog voltage output, use:

  • an external I²C/SPI DAC;
  • PWM plus a low-pass filter;
  • a board with an integrated DAC.

UART: D0 and D1

The hardware serial pins remain physically familiar:

Use them through:

for the external hardware UART.

Serial vs Serial1 Is Important on Nano Every

The board has a separate SAMD11 USB bridge.

So:

is the USB-bridge virtual serial connection used by Serial Monitor.

While:

is the ATmega4809 UART exposed on D0/D1.

This is more flexible than boards where the same physical UART is directly shared with the USB serial converter.

USB Bridge Architecture

The Nano Every uses a small ATSAMD11D14A as its USB interface processor.

The architecture is:

The ATmega4809 itself does not provide native USB.

SAMD11 Logic Voltage Warning

Arduino’s datasheet notes that the SAMD11 operates at 3.3 V and is connected to the 5 V ATmega4809 through level shifting.

If you access SAMD11 test/debug signals directly, do not assume they are 5 V tolerant.

This only matters for advanced board-level work; the normal Nano headers remain a 5 V environment.

SPI Pins

The visible hardware SPI pins are:

The Arduino core’s current SS alias is:

This is another subtle difference from the classic Nano convention where D10 is normally treated as the hardware SS pin.

Basic SPI Example

For most SPI peripherals, chip select can be any convenient GPIO chosen by your application, so you do not have to use the core’s SS alias.

D13 Is Still the Built-In LED

D13 remains:

and is also:

So the onboard LED can flicker during SPI traffic.

I²C Pins

From the user’s perspective, the physical I²C pins remain:

Use:

The Nano Every board internally uses the ATmega4809’s flexible peripheral routing so the standard Nano header remains compatible with the expected A4/A5 I²C positions.

A4 and A5 Are Also ADC/GPIO

Like many Arduino boards, these pins are multifunction:

Do not expect them to act as independent analog channels while actively being used by the I²C bus.

Interrupts: Every Digital Pin Is Usable

This is a major improvement over the classic Nano.

Arduino’s current attachInterrupt() reference lists:

So you are not limited to D2 and D3.

Interrupt Example on D8

This would not be a normal attachInterrupt() pin on the classic ATmega328P Nano.

Interrupts on A0-A7

Because A0-A7 are digital-capable pins in the Nano Every Arduino variant, they can also participate in digital interrupt use where appropriate.

For example:

Keep ISRs Short

The normal interrupt rules still apply.

Inside an interrupt service routine:

  • set flags;
  • increment counters;
  • capture state;
  • return quickly.

Avoid:

  • delay();
  • blocking I²C transactions;
  • long Serial output;
  • complex processing.

Event System

The ATmega4809 includes an internal Event System.

This allows selected peripherals to trigger other peripherals without waiting for CPU software to react.

Conceptually:

or:

This is a major architectural improvement over the ATmega328P for advanced low-latency designs.

UPDI: Unified Program and Debug Interface

The ATmega4809 does not use the old-style six-pin AVR ISP arrangement as its primary programming/debug mechanism.

Instead it uses UPDI:

UPDI is a single-wire interface used for:

  • Flash programming;
  • EEPROM access;
  • fuse configuration;
  • device identification;
  • debug access with suitable tools.

How Nano Every Uses UPDI

The onboard SAMD11 bridge handles USB communication with the computer and programs the ATmega4809 through UPDI.

The normal upload path is:

This is why the official megaAVR board configuration uses a UPDI-based upload protocol rather than the classic Nano bootloader workflow.

Do You Need an External UPDI Programmer?

No, not for normal Arduino development.

The onboard SAMD11 already performs the programming function.

An external UPDI programmer becomes useful only when:

  • doing low-level development;
  • recovering damaged board firmware;
  • working with a bare ATmega4809;
  • debugging custom hardware;
  • programming outside the normal Arduino upload path.

UPDI Is Not on the Standard Nano Header

The standard 30-pin Nano headers do not include a labelled UPDI pin.

Arduino’s board design includes production/test access on the underside of the board for advanced work.

For normal sketches you should not need to access those pads.

SAMD11 Can Be Reprogrammed Too

The SAMD11 contains its own firmware implementing:

  • USB serial bridging;
  • ATmega4809 programming through UPDI.

Arduino’s datasheet notes that the SAMD11 firmware can itself be reprogrammed for specialised USB behaviour.

This is an advanced feature and can break the normal upload/serial workflow if done incorrectly.

Why Nano Every Has No Native USB on the Main MCU

The ATmega4809 is not a native USB microcontroller.

So applications running on the ATmega4809 cannot simply transform the main processor into a USB keyboard or USB MIDI device in the same direct way as:

The SAMD11 can theoretically implement other USB classes, but that involves reprogramming the bridge processor rather than normal Nano Every sketch development.

Memory Improvement over Classic Nano

Memory Classic Nano Nano Every
Flash 32 kB 48 kB
SRAM 2 kB 6 kB
EEPROM 1 kB 256 bytes

The biggest practical improvement is SRAM.

Six kilobytes is still small by modern ESP32 standards, but it gives three times the workspace of the classic Nano.

Why EEPROM Is Smaller

The ATmega4809 includes 256 bytes of dedicated EEPROM rather than the classic Nano’s 1 kB.

If an old project stores large lookup tables or configuration blocks in EEPROM, check usage before migrating.

For ordinary calibration values and settings, 256 bytes may still be sufficient.

More USART Hardware than the Header Exposes

The ATmega4809 itself contains four USART peripherals.

Not all of them are exposed as ordinary user serial ports on the Nano header because some resources are used internally by the board design and USB bridge.

For normal Arduino code:

is the most useful distinction.

Power Pins

The board exposes:

  • VIN;
  • 5V;
  • 3V3;
  • GND;
  • AREF;
  • RESET.

VIN

Arduino’s current pinout specifies:

for VIN input.

The board uses an onboard regulator to generate its logic supply.

As always, high VIN combined with significant load current increases regulator dissipation.

5 V Logic Rail

The board operates at 5 V and therefore remains much friendlier to classic Nano hardware than many newer 3.3 V Nano-family boards.

That is a major reason the Nano Every remains useful as a migration target.

3.3 V Pin

The board also exposes a 3.3 V supply pin for low-current peripherals.

Do not assume that using the 3.3 V supply changes the ATmega4809 GPIO logic level; the main MCU I/O still operates in the board’s 5 V environment.

RESET

The Nano Every keeps two RESET positions in the traditional Nano header layout.

Pulling RESET low resets the ATmega4809 application processor.

Compatibility with Classic Nano Shields and Carriers

Mechanically, compatibility is very good because the header footprint is intentionally preserved.

Electrical compatibility is also helped by the 5 V operating voltage.

But always check:

  • PWM pin assumptions;
  • direct AVR register code;
  • timer dependencies;
  • A6/A7 behaviour;
  • SPI SS assumptions;
  • EEPROM size;
  • library architecture support.

Classic Nano Libraries: What Usually Works?

Libraries that mainly use standard Arduino APIs are the best candidates:

Libraries are more likely to fail if they:

  • access ATmega328P registers directly;
  • use AVR assembly written for the 328P peripheral layout;
  • assume D11 is always PWM;
  • assume Timer0/1/2 register names;
  • assume only D2/D3 support interrupts.

Why the Nano Every Can Be Easier for Encoders

All digital pins supporting attachInterrupt() is useful for:

  • rotary encoders;
  • multiple frequency inputs;
  • button matrices with interrupt wake-up;
  • pulse counters;
  • multi-channel sensor inputs.

You are no longer forced to reserve only D2 and D3 for every timing-sensitive input.

Why It Can Be Better for Compact 5 V Control Projects

Nano Every combines:

  • small Nano size;
  • 5 V GPIO;
  • three times classic Nano SRAM;
  • all-pin interrupt support;
  • newer timers;
  • same familiar physical header arrangement.

That makes it useful for compact robotics, control panels and legacy 5 V systems that do not need Wi-Fi or Bluetooth.

Quick Pin Reference

Best Practices

  1. Use the normal Arduino API when porting classic Nano code.
  2. Do not assume ATmega328P register names exist on the ATmega4809.
  3. Remember D11 is not an official PWM pin on Nano Every.
  4. Remember A6/A7 are digital-capable on Nano Every.
  5. Use Serial1 for the external D0/D1 UART.
  6. Use Serial for the USB virtual serial connection.
  7. Exploit all-pin interrupt support where it simplifies the design.
  8. Do not modify the SAMD11 bridge firmware unless you understand how to recover it.
  9. Do not assume Arduino’s 20 MHz product wording means the current official core is running the MCU at 20 MHz; it is presently configured for 16 MHz.
  10. Check EEPROM requirements when migrating larger classic Nano projects.

Final Thoughts

The Arduino Nano Every is not merely a classic Nano with a slightly larger AVR.

The ATmega4809 introduces a newer megaAVR architecture with more memory, modern timers, an event system, flexible interrupts and UPDI programming while keeping the familiar 5 V Nano footprint.

The main pinout points to remember are:

The two migration traps most likely to surprise classic Nano users are:

  • D11 loses the standard PWM role;
  • A6 and A7 gain normal digital GPIO capability.

The other major change is below the software API: the old ATmega328P timer and port-register model is gone. If your project is built around direct register manipulation, treat Nano Every as a new microcontroller platform.

If the project uses portable Arduino APIs, however, Nano Every provides a straightforward way to keep the compact 5 V Nano form factor while gaining significantly more RAM, more Flash and much more flexible interrupt hardware.

Share your love