Claude-skill-registry atmel

Atmel/Microchip AVR MPN encoding patterns, suffix decoding, and handler guidance. Use when working with ATmega, ATtiny, SAM, or other Atmel components.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/atmel" ~/.claude/skills/majiayu000-claude-skill-registry-atmel && rm -rf "$T"
manifest: skills/data/atmel/SKILL.md
source content

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)

CodePackageDescription
PUPDIPPlastic Dual In-line Package (through-hole)
AUTQFPThin Quad Flat Pack (surface mount)
MUQFN/MLFQuad Flat No-leads / Micro Lead Frame
SUSOICSmall Outline IC
XUTSSOPThin Shrink Small Outline Package
TUQFPQuad Flat Pack (larger than TQFP)
CUWLCSP/UCSPWafer Level / Ultra Chip Scale Package
SSSSOPShrink 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

FamilyDescriptionExample
ATmegaFeature-rich 8-bitATMEGA328P, ATMEGA2560
ATtinySmall footprint 8-bitATTINY85, ATTINY13A
AT90USB/CAN enabledAT90USB162, AT90CAN128
ATxmegaExtended 8/16-bitATXMEGA128A1U

32-bit ARM Microcontrollers

FamilyCoreExample
ATSAM3Cortex-M3ATSAM3X8E (Arduino Due)
ATSAM4Cortex-M4ATSAM4S16B
ATSAMDCortex-M0+ATSAMD21G18A
ATSAMECortex-M7ATSAME70Q21

Memory Products

FamilyTypeExample
AT24CI2C EEPROMAT24C256-PU (256Kbit)
AT25SPI EEPROM/FlashAT25SF041 (4Mbit Flash)
AT45DBDataFlashAT45DB321E

Security/Touch Products

FamilyTypeExample
ATECCCrypto AuthenticationATECC608A
ATSHASHA AuthenticationATSHA204A
AT42QTQTouch ControllerAT42QT1010
ATMXTmaXTouch ControllerATMXT336S

Series Number Encoding

ATmega Series Numbers

The number encodes flash size and sometimes pin count:

SeriesFlashSRAMEEPROMNotes
ATMEGA88KB1KB512BOriginal
ATMEGA888KB1KB512BImproved
ATMEGA16816KB1KB512BPin-compatible with 88
ATMEGA32832KB2KB1KBArduino Uno
ATMEGA1284128KB16KB4KBHigh memory
ATMEGA2560256KB8KB4KBArduino Mega

ATtiny Series Numbers

SeriesFlashPinsNotes
ATTINY131KB8Smallest
ATTINY252KB8
ATTINY454KB8
ATTINY858KB8Popular small MCU
ATTINY848KB14More I/O
ATTINY23132KB20UART included

Variant Suffixes (Before Hyphen)

SuffixMeaning
PpicoPower - Ultra low power modes
ARevision A / Automotive grade
VLow voltage operation (1.8V-5.5V)
PApicoPower + Automotive
PBpicoPower revision B
UUSB capable
LLow 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

GradeRangeSuffix Position
Commercial0°C to +70°C(no suffix)
Industrial-40°C to +85°COften implicit
Automotive-40°C to +125°CA in variant or separate

Common Arduino Mappings

Arduino BoardMCUFull MPN
UnoATmega328PATMEGA328P-PU
NanoATmega328PATMEGA328P-AU
Mega 2560ATmega2560ATMEGA2560-16AU
LeonardoATmega32U4ATMEGA32U4-AU
DueATSAM3X8EATSAM3X8E-AU
ZeroATSAMD21G18AATSAMD21G18A-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):

  • Replace
    HashSet
    with
    Set.of()
    in
    getSupportedTypes()
  • Handler doesn't use
    PackageCodeRegistry
    - has local switch statement
  • Pattern may not handle speed grades like
    -20AU
    (20MHz before package)
  • Case sensitivity - some methods use
    mpn.startsWith()
    without
    toUpperCase()

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)
<!-- Add new learnings above this line -->