Atmel (now Microchip) Manufacturer Skill
MPN Structure
Atmel MPNs follow this general structure:
[FAMILY][SERIES][VARIANT]-[PACKAGE][TEMP]
│ │ │ │ │
│ │ │ │ └── Optional temperature grade
│ │ │ └── Package code (after hyphen)
│ │ └── Feature variant (P=picopower, A=automotive, etc.)
│ └── Series number (flash size, pin count encoded)
└── Product family (ATMEGA, ATTINY, ATSAM, etc.)
Example Decoding
ATMEGA328P-PU
│ │ │ ││
│ │ │ │└── (no temp suffix = commercial)
│ │ │ └── U in PU = standard grade
│ │ └── P = picoPower technology
│ └── 328 = 32KB flash, 8-bit
└── ATMEGA = AVR 8-bit megaAVR family
ATSAM3X8E-AU
│ │ ││ ││
│ │ ││ │└── U = standard grade
│ │ ││ └── A = TQFP package
│ │ │└── E = Ethernet variant
│ │ └── 8 = 512KB flash
│ └── 3X = Cortex-M3 SAM3X series
└── ATSAM = ARM-based SAM family
Package Codes (After Hyphen)
| Code |
Package |
Description |
| PU |
PDIP |
Plastic Dual In-line Package (through-hole) |
| AU |
TQFP |
Thin Quad Flat Pack (surface mount) |
| MU |
QFN/MLF |
Quad Flat No-leads / Micro Lead Frame |
| SU |
SOIC |
Small Outline IC |
| XU |
TSSOP |
Thin Shrink Small Outline Package |
| TU |
QFP |
Quad Flat Pack (larger than TQFP) |
| CU |
WLCSP/UCSP |
Wafer Level / Ultra Chip Scale Package |
| SS |
SSOP |
Shrink Small Outline Package |
Package Code Pattern
[PACKAGE_TYPE][GRADE]
│ │
│ └── U = Standard, C = Commercial, I = Industrial
└── P=PDIP, A=TQFP, M=QFN, S=SOIC, X=TSSOP, T=QFP, C=WLCSP
Product Families
8-bit AVR Microcontrollers
| Family |
Description |
Example |
| ATmega |
Feature-rich 8-bit |
ATMEGA328P, ATMEGA2560 |
| ATtiny |
Small footprint 8-bit |
ATTINY85, ATTINY13A |
| AT90 |
USB/CAN enabled |
AT90USB162, AT90CAN128 |
| ATxmega |
Extended 8/16-bit |
ATXMEGA128A1U |
32-bit ARM Microcontrollers
| Family |
Core |
Example |
| ATSAM3 |
Cortex-M3 |
ATSAM3X8E (Arduino Due) |
| ATSAM4 |
Cortex-M4 |
ATSAM4S16B |
| ATSAMD |
Cortex-M0+ |
ATSAMD21G18A |
| ATSAME |
Cortex-M7 |
ATSAME70Q21 |
Memory Products
| Family |
Type |
Example |
| AT24C |
I2C EEPROM |
AT24C256-PU (256Kbit) |
| AT25 |
SPI EEPROM/Flash |
AT25SF041 (4Mbit Flash) |
| AT45DB |
DataFlash |
AT45DB321E |
Security/Touch Products
| Family |
Type |
Example |
| ATECC |
Crypto Authentication |
ATECC608A |
| ATSHA |
SHA Authentication |
ATSHA204A |
| AT42QT |
QTouch Controller |
AT42QT1010 |
| ATMXT |
maXTouch Controller |
ATMXT336S |
Series Number Encoding
ATmega Series Numbers
The number encodes flash size and sometimes pin count:
| Series |
Flash |
SRAM |
EEPROM |
Notes |
| ATMEGA8 |
8KB |
1KB |
512B |
Original |
| ATMEGA88 |
8KB |
1KB |
512B |
Improved |
| ATMEGA168 |
16KB |
1KB |
512B |
Pin-compatible with 88 |
| ATMEGA328 |
32KB |
2KB |
1KB |
Arduino Uno |
| ATMEGA1284 |
128KB |
16KB |
4KB |
High memory |
| ATMEGA2560 |
256KB |
8KB |
4KB |
Arduino Mega |
ATtiny Series Numbers
| Series |
Flash |
Pins |
Notes |
| ATTINY13 |
1KB |
8 |
Smallest |
| ATTINY25 |
2KB |
8 |
|
| ATTINY45 |
4KB |
8 |
|
| ATTINY85 |
8KB |
8 |
Popular small MCU |
| ATTINY84 |
8KB |
14 |
More I/O |
| ATTINY2313 |
2KB |
20 |
UART included |
Variant Suffixes (Before Hyphen)
| Suffix |
Meaning |
| P |
picoPower - Ultra low power modes |
| A |
Revision A / Automotive grade |
| V |
Low voltage operation (1.8V-5.5V) |
| PA |
picoPower + Automotive |
| PB |
picoPower revision B |
| U |
USB capable |
| L |
Low voltage (1.8V-3.6V only) |
Example Variants
ATMEGA328 → Original
ATMEGA328P → picoPower (lower sleep current)
ATMEGA328PB → picoPower revision B (more features)
ATMEGA328PA → Automotive grade picoPower
Temperature Grades
| Grade |
Range |
Suffix Position |
| Commercial |
0°C to +70°C |
(no suffix) |
| Industrial |
-40°C to +85°C |
Often implicit |
| Automotive |
-40°C to +125°C |
A in variant or separate |
Common Arduino Mappings
| Arduino Board |
MCU |
Full MPN |
| Uno |
ATmega328P |
ATMEGA328P-PU |
| Nano |
ATmega328P |
ATMEGA328P-AU |
| Mega 2560 |
ATmega2560 |
ATMEGA2560-16AU |
| Leonardo |
ATmega32U4 |
ATMEGA32U4-AU |
| Due |
ATSAM3X8E |
ATSAM3X8E-AU |
| Zero |
ATSAMD21G18A |
ATSAMD21G18A-AU |
Handler Implementation Notes
Package Code Extraction
// Atmel package codes are AFTER the hyphen
// ATMEGA328P-PU → package = "PU"
String[] parts = mpn.split("-");
if (parts.length > 1) {
String suffix = parts[parts.length - 1];
return switch (suffix) {
case "PU" -> "PDIP";
case "AU" -> "TQFP";
case "MU" -> "QFN/MLF";
case "SU" -> "SOIC";
case "XU" -> "TSSOP";
case "TU" -> "QFP";
case "CU" -> "WLCSP";
default -> suffix;
};
}
Series Extraction
// Extract family + number, stop at variant letter or hyphen
// ATMEGA328P-PU → series = "ATMEGA328"
// ATTINY85-20PU → series = "ATTINY85"
if (mpn.startsWith("ATMEGA")) {
// Find end of digits after "ATMEGA"
int end = "ATMEGA".length();
while (end < mpn.length() && Character.isDigit(mpn.charAt(end))) {
end++;
}
return mpn.substring(0, end);
}
Pattern Matching
// ATmega: ATMEGA + digits + optional letter variant + optional -package
"^ATMEGA[0-9]+[A-Z]?(?:-[A-Z]{2,4})?$"
// ATtiny: ATTINY + digits + optional variant + optional -package
"^ATTINY[0-9]+[A-Z]?(?:-[A-Z]{2,4})?$"
// SAM: ATSAM + series + variant + -package
"^ATSAM[A-Z0-9]+(?:-[A-Z]{2,4})?$"
Pin Compatibility Groups
28-pin PDIP/TQFP Compatible
- ATMEGA8 / ATMEGA88 / ATMEGA168 / ATMEGA328
- Direct drop-in replacements (different flash sizes)
8-pin DIP/SOIC Compatible
- ATTINY13 / ATTINY25 / ATTINY45 / ATTINY85
- Increasing flash sizes, same pinout
44-pin TQFP Compatible
- ATMEGA16 / ATMEGA32 / ATMEGA644 / ATMEGA1284
Related Files
- Handler:
manufacturers/AtmelHandler.java
- Component types:
MICROCONTROLLER_ATMEL, MCU_ATMEL, MEMORY_ATMEL, TOUCH_ATMEL, CRYPTO_ATMEL
- Package registry:
PackageCodeRegistry.java (Atmel-specific codes: PU, AU, MU, SU, XU, CU)
Learnings & Edge Cases
- Microchip acquisition: Atmel was acquired by Microchip in 2016. New parts may have Microchip branding but same MPN structure
- Speed grades: Some parts have speed suffix before package (e.g., ATMEGA328P-20AU = 20MHz max)
- PU vs AU: Same chip, different package. PU=DIP for prototyping, AU=TQFP for production
- P suffix importance: ATMEGA328 and ATMEGA328P are different! The P version has lower power consumption
- Memory in name: ATmega328 has 32KB flash (32), ATtiny85 has 8KB (8), but encoding isn't always consistent
Handler Cleanup Notes (TODO)
AtmelHandler needs the same cleanup as TIHandler (PR #77):
Test Notes
When creating AtmelHandlerTest:
- Put in
no.cantara.electronic.component.lib.handlers package (NOT manufacturers)
- Use
@BeforeAll with MPNUtils.getManufacturerHandler("ATMEGA328P")
- Test categories: ATmega, ATtiny, AT90, XMEGA, SAM, Memory (AT24C, AT25), Touch (AT42QT), Crypto (ATECC, ATSHA)