Vagrearg Logo  
Atmel Pack
Atmel device visualizer and fuse calculator
Looking for an up-to-date fuse-calculator for the Atmel(*) AVR chips has been something of a long search. There are several online versions, but they have not been updated to the new chips (like the ATmega328PB).

When you have got an itch, you simply scratch it... Don't you?

Well, I did, and it resulted in an analysis of the Atmel Pack format, which can be freely downloaded under an Apache 2.0 license. The AtPacks contain a master XML file with device lists and links to each device's XML file, which in turn describes the entire chip. The format is not that hard to understand and can be easily mangled into something useful. Then, some crude jQuery hacking and many hours later... you know how that works.

The initial goal was to extract the fuse-bits and make something like other online fuse-calculators. That said, it turns out that there is a lot more useful information in those XML files. Why not hack a bit more and show that useful stuff? The files describe both AVR 8-bit, UC3 32-bit and SAM 32-bit devices. While not all information is available for any chip or family, it is a whole lot of info you can get out of it. That is simply so nice.

No more suspense. Code is at GitHub and there is an online version.

  • Selectable AtPack from a set you define
  • You can easily add additional packs (see README)
  • Runs client-side and can be run entirely local on a PC
  • Device selector
  • Fuse calculator
  • Lockbit calculator
  • Links to documentation; datasheet and vendor's product page
  • Device variants (package, temperature range, voltage range)
  • Programmer interface
  • Signatures (device ID signature and JTAG ID)
  • Memory layout
  • Modules in device (f.x. timers, adc, usart, etc)
  • Drawings of packages with pin-assignments
Basically, a lot of the stuff in the files is accessible. There is a lot more for more hacks (like register descriptions), but that is for another time. Alternatively, you send me a pull-request with added features :-)

The code has been tested on the following packs:
  • Atmel ATmega Series Device Support (1.2.209)
  • Atmel ATtiny Series Device Support (1.3.172)
  • Atmel XMEGAA Series Device Support (1.1.68)
  • Atmel XMEGAB Series Device Support (1.1.55)
  • Atmel XMEGAC Series Device Support (1.1.50)
  • Atmel XMEGAD Series Device Support (1.1.63)
  • Atmel XMEGAE Series Device Support (1.2.51)
  • Atmel ATautomotive Series Device Support (1.2.118)
  • Atmel SAM3A Series Device Support (1.0.50)
  • Atmel SAME51 Series Device Support (1.0.65)
  • Atmel UC3A Series Device Support (1.0.53)
Other packs should work fine, albeit a quirk here and there might be there. If so, you can either ignore it, fix it and send a pull-request, or report a bug. It is all up to you how you'd like to handle it.

(*) Yes, I know, Atmel is now part of Microchip.

Posted: 2018-04-06
Updated: 2018-04-06

Overengineering @ request