Turning an Arduino of virtually any sort into a simple AVR 6-pin ISP programmer is old hat. But when Atmel came out with a series of really tiny AVR chips, the ATtiny10 and friends with only six pins total, they needed a new programming standard. Enter TPI (tiny programming interface), and exit all of your previously useful DIY AVR programmers.
[Kimio Kosaka] wrote a dual-purpose TPI and ISP firmware for the ATmegaxxUn chips that are used as a USB-serial bridge on the Unos, and constitute the only chip on board a Leonardo or Micro. The catch? You’re going to have to do a little bit of fine-pitch soldering. Specifically, [Kosaka-san] wants you to get access to an otherwise obscured signal by drilling out a via. We’d do it just for that alone.
The rest of the procedure is to flash a DFU USB bootloader into the Arduino, then load up the flash-programmer code. Your former Arduino is now capable of flashing both old-school ISP AVR chips, as well as the tiny little ones that require TPI.
If you’re having deja vu, yes we have covered a DIY TPI programmer before, but it required a bespoke uploader software on your host computer. [Kosaka]’s version appears to the host as an Atmel programmer, and you can use any of the standard tools. And you get to try your hand at some fun fine-pitch solder work. That’s win-win!
Usbasp supports tpi, no hackery required – official firmware version, not the chinese one, just reload the firmware using your second usbasp (so cheap, buy two, or three…).
Self reply to add: there is also a more recent firmware for the USBAsp which includes both the automatic clock speed of the chinese firmware, the ability to manually set the clock speed (like the official (fischl) firmware) and TPI as well.
https://github.com/bperrybap/usbasp/tree/1.06-alpha
Good to know, thanks for the info!
AVRISP mk2 also supports TPI, but I guess that’s not officially available anymore?