ATtiny Flasher

by Sonocotta

Open-hardware flashing tool for the Atmel ATtiny

View all updates Jul 06, 2021

Progress on firmware and a new high voltage implementation

by Andriy

Firmware Development

I’ve finally finished work on updating the firmware. The main goal of this update was to add high voltage programming support, but I took a bit more time to prepare the codebase for future updates.

As I’ve shared before, I initially took the ArduinoISP code and made a few adjustments here and there according to my taste (I’m an IT pro in my other life). With each subsequent revision, I had to add more and more changes to support the onboard OLED screen, buffer IC, serial bridge code, and so on.

When the idea of adding a high voltage programmer came I had to completely redesign the RESET schematics, since I had to accommodate a 12 V state, in addition the to 0 V, 5 V, and Z states.

At this stage, things were getting complex enough that I begin having trouble understanding my own code base. I had to modularize it at least.


When you upload your code using Arduino IDE, Platformio, or the basic console, you’d typically use the avrdude tool, as it supports most of the Microchip MCUs and most of the known protocols. In the case of ATtiny Flasher, the STK500 protocol is used.

In fact, the protocol only defines communication contracts between a host PC (avrdude sofware wise) and a programming tool (Flasher in this case). It doesn’t really matter which way Flasher will upload code to MCU, that depends on both the MCU and Flasher capabilities.

Naturally, I’ve extracted the stk500 communication layer into separate class. Its sole responsibility is to handle communication with avrdude.

The next thing was to separate out the ISP communication layer that talks to the MCU using a standard, low-voltage SPI protocol.

With this behind me, it wasn’t much trouble to implement a high-voltage communication equivalent. Now, depending on the state of onboard switch, the STK500 layer will communicate with either the LV or HV implementation over the same interface.


Perhaps more importantly, this design makes it relatively easy to add more supported protocols. I’m planning to add TPI and UPDI support. TPI will add support for smaller Tinys (ATtiny4, ATtiny5, ATtiny9, ATtiny10, ATtiny20), while UPDI will complete the list with support for the latest generation of ATtinys (ATtinyX04, ATtinyX14, ATtinyX24, and many more). Then it will truly be a one tool to flash them all jig.


About the Author


anabolyc  ·   Poland

$4,555 raised

of $3,000 goal

151% Funded! Order Below

Product Choices


ATtiny Flasher

ATtiny Flasher with OLED screen.


Educational Project Kit 1: Traffic Light

ATtiny85-driven "traffic light"


Educational Project Kit 2: Rubber Ducky

ATtiny85-driven "USB rubber ducky" tool capable of emulating keyboard & mouse devices


Educational Project Kit 3: IR Messenger

ATtiny85-driven IR remote transmitter & receiver


Educational Project Kit 4: Rainbow LEDs

ATtiny85-driven circle of addressable LEDs


Educational Project Kit 5: Digital Clock

ATtiny85-driven digital clock


Half-size Breadboard

From the Crowd Supply Basics project.

A half-size (3.25 x 2.125 in ~ 8.3 x 5.4 cm) breadboard with a self-adhesive backing



From the Crowd Supply Basics project.

A 20 MHz, 8-bit, 8-pin DIP AVR MCU with 6 I/O, 1 KiB flash, 64 B SRAM, 64 B EEPROM, a SPI interface, and an input voltage range of 1.8 - 5.5 V.



From the Crowd Supply Basics project.

A 20 MHz, 8-bit, 8-pin DIP AVR MCU with 6 I/O, 8 KiB flash, 512 B SRAM, 512 B EEPROM, a USI interface, and an input voltage range of 2.7 - 5.5 V.



Electronic components and kits

Andriy Malyshenko

See Also

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects: