AVR32EB14/AVR16EB14
April 14, 2026 ยท View on GitHub
Pin Mapping / Pinout

Image not available - absent help we do not foresee being able to provide any sort of pinout diagram for this or future parts
Features and Peripherals
| Feature | AVR16EB14 | AVR32EB14 |
|---|---|---|
| Flash Memory | 16384 | 32768 |
| Flash Memory (with Optiboot*) | 15872 | 32256 |
| SRAM | 2048 | 4096 |
| EEPROM | 512 | 512 |
| User Row | 64 | 64 |
| Boot Row (w/e that is) | 64 | 64 |
| Max. Frequency (rated, MHz) | 20 | 20 |
| Clock Sources | INT, EXT | INT, EXT |
| Packages Available | SOIC, TSSOP | SOIC, TSSOP |
| Total pins on package | 14 | 14 |
| I/O Pins (not reset/UPDI) | 10 | 10 |
| Fully async pins | 12 | 12 |
| UPDI as I/O Pin | Yes | Yes |
| PWM capable I/O pins | 6 | 6 |
| Max simultaneous PWM outputs | 4 | 4 |
| 16-bit Type A Timers - pins ea | None | None |
| 16-bit Type B Timers, (pins) | 2: 0 | 2: 0 |
| 12-bit Type D pins | None | None |
| 16-bit Type E pins w/WEX | 1: 1/1/2/0/3 | 1: 1/1/2/0/3 |
| 8-bit PWM via 24bit TCF | 1: 2/2 | 1: 2/2 |
| USART (pin mappings) | 1: 3/1 | 1: 3/1 |
| SPI (pin mappings) | 1: 4 | 1: 4 |
| TWI/I2C (pin mappings) | 1: 2 | 1: 2 |
| 12-bit ADC input pins | 8 | 8 |
| Of those, neg. diff. inputs | all | all |
| 10-bit DAC | None | None |
| Analog Comparator (AC) | 2 | 2 |
| Zero-Cross Detectors (ZCD) | 0 | 0 |
| Custom Logic Blocks (LUTs) | 4 | 4 |
| Event System channels (out pins) | 6: 3 | 6: 3 |
| On-chip opamps (OPAMP) | - | - |
| MVIO, pins | No | No |
| Flash Endurance | 1,000 cycle | 1,000 cycle |
| LED_BUILTIN (and optiboot led) | PIN_PD6 | PIN_PD6 |
* Optiboot not yet available for the EB-series
AVR EB14 - A new generation of... timers
The EB-series is looking like a proofing ground for a pair of new timers and the crazy clock controller they bring along, plus, finally, a migration path for users of the venerable ATtiny861 for BLDC motor control applications. These new timers have some really impressive features - though sadly most get buried by the arduino API. Some of the features may get a stock wrapper library. The 14-pin parts are cramped for pins pretty badly (but that's okay, because the series ranges up to 32 pins), even having gotten their PC0 back.
The CLKCTRL has a very fancy PLL by AVR standards.
Fully async pins
All pins on the EBs are "fully async" and can respond to events shorter than 1 clock cycle, and can wake the chip on RISING or FALLING edges, not just LOW_LEVEL and CHANGE, whether or not the I/O clock is running. There are good and bad sides to this. The good are obvious, the bad is reduced noise rejection: Triggering from signals less than 1 clock long also means triggering from noise less than 1 clock long.
USART mux options
There is ONLY ONE USART on these damned things!
| USART0: | swap | TX | RX | XDIR | XCK |
|---|---|---|---|---|---|
| DEFAULT | 0 | PA0 | PA1 | - | - |
| ALT3 | 3 | PD4 | PD5 | PD6 | PD7 |
| ALT4 | 4 | PC1 | PC2 | PC3 | - |
| ALT6 | 6 | PF7 | PF6 | - | - |
Yes, that's the UPDI pin as RX.
SPI0 mux options
SPI0 has FOUR mux options at just 14 pins.
| SPI0 | swap | MOSI | MISO | SCK | SS |
|---|---|---|---|---|---|
| ALT3 | 3 | PA0 | PA1 | PC0 | PC1 |
| ALT4 | 4 | PD4 | PD5 | PD6 | PD7 |
| ALT5 | 5 | PC0 | PC1 | PC2 | PC3 |
| ALT6 | 6 | PC1 | PC2 | PC3 | PF7 |
TWI0 mux options
Note that this means that you want Wire.swap(2, or 3, but not 0 or 1).
| Mapping | swap | Master or Slave | Dual Mode Slave |
|---|---|---|---|
| ALT2 | 2 | SDA/PC2 SCL/PC3 | Not avail. |
| ALT3 | 3 | SDA/PA0 SCL/PA1 | SDA/PC2 SCL/PC3 |
PWM Pins
The AVR EB-series parts have 6 hardware PWM pins exposed on the 14-pin parts (2xTCF, 4xTCE). The TCBs do not have any available PWM pins on 14-pin parts.
See the TCE/TCF/WEX reference for more information about PWM on the EB-series.
TCB PWM pins
No TCB output on pins is available here. None of the output pins exist, though they can be used through the CCL, either PD6 and PD7 or PC2 and PC3
TCE+WEX
The TCE has 4 channels, and works much like TCA does on other parts, though it has some features that may be exposed by a future library.
The high half of the pins are not currently supported but will be soon.
| Mux option | WO0 | WO1 | WO2 | WO3 | WO4 | WO5 | WO6 | WO7 | Constant (recommended) | Numeric value |
|---|---|---|---|---|---|---|---|---|---|---|
| TCE0_PORTA | PA0 | PA1 | - | - | - | - | - | - | PORTMUX_TCE0_PORTA_gc | 0x00 |
| TCE0_PORTC | PC0 | PC1 | PC2 | PC3 | - | - | - | - | PORTMUX_TCE0_PORTC_gc | 0x02 |
| TCE0_PORTD | - | - | - | - | PORTMUX_TCE0_PORTD_gc | 0x04 | ||||
| TCE0_PORTC2 | PA0 | PA1 | PC0 | PC1 | - | - | PORTMUX_TCE0_PORTC2_gc | 0x08 |
You could get 4 PWM pins from TCE on PC0-3, PA0/1 and PC0/1, or PD4-7. DxCore sets all EB-series parts to use the PORTC mux option at startup. Changing it to whichever set of pins you want is trivial! The pins are always there, and are less thick with other functions than either PORTD or PORTA.
This analogWrite() on TCE pins is aware of PORTMUX, and so all that is needed to change the mapping is to write your preferred value to PORTMUX.TCE0ROUTEA; On the EBs there is nothing else in that register, so you can just use a plain write to set it.
analogWrite(PIN_PC1,128); //PWM seen, assuming default wasn't changed.
delay(2000);
digitalWrite(PIN_PC1,LOW); // Turn it off
delay(2000);
PORTMUX.TCEROUTEA = PORTMUX_TCE0_PORTA_gc
analogWrite(PIN_PC1,128); // No PWM, pin is treated as if you called it on a normal digital pin.
TCF
TCF is a 24-bit asynchronous timer (can be clocked from the PLL, and the clock system we get is as baller as you can hope for with 16/20 fuse-selected base oscillator and no external crystal), running at up to 80 MHz. HOWEVER it's full glory is only applicable to pulses-at-a-frequency, frequency generation, and fixed duty cycle output. For proper PWM, it has to pull the same trick that TCB does, and it's 24-bit CMP register turns into a period register and two compare registers. But, you do get two PWM channels and an independent prescaler, at least.
| Mux option | WO0 | WO1 |
|---|---|---|
| Default | PA0 | PA1 |
| - | - | |
| - | - |
TCF is PORTMUX aware, however with only one option on the 14-pin parts, that doesn't matter.
LED_BUILTIN
It is not possible to match other parts; PIN_PA7 does not exist here. However unlike the quandry we found ourselves in on the DD, there is an obviously correct choice: PIN_PD6
Official Documentation
When all else fails, read the real documentation. They keep moving the .pdf files around, so now I just link to the prduct page, from whence the datasheet, errata, and "technical briefs".
At a minimum, everyone using a modern AVR should plan on having a PDF viewer open with the datasheet, and a text editor with a good search function and the ioavr______.h file open so that when you're trying to use a constant, but the compiler says it isn't declared/defined, you can search the io header for a key phrase in the constant and figure out how it was spelled/formatted or copy/paste it to your sketch. (see the IO headers for more information and links to them. You'll want to be familiar with the most recent copy of the errata for the parts, also from the product page. Be sure to get the latest version of both documents: "Datasheet Clarifications" are removed from the errata + clarification document once the datasheet has been updated. Thus, if you're using an old version of the datasheet and a new version of the errata, you could be missing datasheet clarifications that have now been clarified in the datasheet proper.
Particularly on the latest parts - like this one - it may suffice to review the chart in sheets linked from the Errata guide. It certainly would be enough to give tou an idea that you need to look at the errata.
The "Technical Briefs" are somewhat inconsistent in their value, but some are quite good.