Tag Archives: ATtiny10

You may need a magnifying glass for this mini ATtiny10 breakout board

“I lost one in the carpet and I’m hoping to find it before the vacuum does.”

The super small ATtiny10 is a high-performance, low-power 8-bit MCU that combines 1KB of Flash memory, 32B SRAM, four general purpose I/O lines, 16 general purpose working registers, a 16-bit timer/counter with two PWM channels, internal and external interrupts, a programmable watchdog timer with internal oscillator, an internal calibrated oscillator, a four-channel A/D converter, and four software selectable power saving modes. The device operates between 1.8-5.5V.


But what really makes this chip stand out is its minuscule size. Because of this, the ATtiny10 doesn’t use the normal in-system programming port like its much larger siblings. Instead, this particular AVR employs a Tiny Programming Interface (TPI), which only requires power, ground, data, clock and a reset pin. Connecting these pins to the proper programming header is fairly straightforward, and with the right layout, you can cram everything into a breakout board that’s tinier than a typical 8-pin DIP.

Well, this is exactly what Dan Watson has done. The Maker has created a mini breakout board for the ATtiny10 that’s so small, you’ll lose it. “Literally,” he adds, “I lost one in the carpet and I’m hoping to find it before the vacuum does.”


The PCB itself is 0.25” x 0.325″ and uses 0.050″ header pins. The breakout could actually be made smaller, but turns out, Watson ran into the minimum PCB size limit on OSHPark. Despite its form factor, he was able to include a 100nF bypass capacitor, a power LED and a user LED on pin PB1 — that pin is also the clock pin for the programming interface, so it flashes when the board is being programmed.

Admittedly the board was a bit difficult to use and program, and is “certainly not breadboard compatible due to the small pitch headers.” To overcome this issue, Watson built a small landing pad for it, which adapts the 0.050″ headers to 0.1” headers. The landing pad has a 6-pin TPI programming connector, which enables the ATtiny10 to be configured using the Atmel-ICE development tool.


In any case, Watson is now the proud owner of a shrunken-down board that can fit pretty much anywhere. And since you can do plenty of things with 1KB, it’ll be interesting to see what the Maker comes up with. Some possible ideas include designing a pint-sized drone, building a swarm of cybernetic bats, showing off your fine soldering skills to friends, making digital fireflies, or simply incorporating it into a project’s PCB by adding 0.050” male headers to the board. Intrigued? Head over to the project’s page here.

How far can you take the ATtiny10?

Atmel’s stalwart tinyAVR lineup has been a Maker favorite for years, with the microcontrollers powering a wide-range of devices and platforms.


Recently, a Maker by the name of Tim (aka cpldcpu) decided to find out just how far he could take the versatile ATtiny10 with his µ-Wire project.

“I previously used the ATtiny10 in the TinyTouchbutton, a touchbutton controlled light with WS2812 LEDs. This time I aimed higher: Is it possible to turn the ATtiny10 into a USB compatible device?” Tim wrote in a recent blog post.

“My goal was to implement a subset of the little-wire functionality to control a WS2812 LED by USB. This takes 3 I/O lines, which is exactly the number of free pins on the ATtiny10.”

As Tim notes, little-wire supports a number of functions to control WS2812 LEDs on arbitrary I/O ports. However, he simplified this approach by only supporting a single LED on a specific pin, while still retaining protocol compatibility. Meaning, all the little-wire host programs were still functional, with the finished device fully capable of being used as an RGB indicator LED similar to the Blink1.

“The V-USB USB interface requires more than 1.5kb of flash in its smallest implementation and uses more than 50 bytes of RAM, including stack usage,” he explained. 

”Additional code is required to implement the little-wire interface and to write to the WS2812. The ATtiny10 has 1kb of flash, 32 bytes of SRAM and 16 instead of 32 registers. So this ended up as a nice exercise in cutting down V-USB to its bare essentials – and further.”

One critical step towards reducing the memory footprint, Tim admits, was adopting an interrupt-free implementation of V-USB, as developed for micronucleus. This allowed him to lower the SRAM footprint by omitting register saving on the stack and avoiding double buffering — all while facilitating the reduction of program size.

Further measures to reduce code size include clocking the controller at 12 MHz (using the internal RC oscillator), manually remapping numerous registers in V-USB to avoid collisions with the GCC, removing all handling of the reset signal on the USB-Bus and altering the code to support replies from the SRAM.

Final stats?


Flash: 988 of 1024 bytes used (96.4%)
  • SRAM: 28 (variables)+2 (stack) of 32 bytes used (93.8%)

“This is most likely the most complex firmware ever loaded into an ATtiny10,” Tim added. “[Plus], it also works with the new 8mm WS2812 LEDs.”

Interested in learning more? You can check out the relevant files on Github, as well as read Tim’s detailed blog post here.