Close

Patching AVRdude

A project log for USBTinyISP to TPI adapter

Use your USBTinyISP/USBmicroISP to program ATTiny4/5/9/10s

nick-sayerNick Sayer 06/23/2020 at 04:490 Comments

The patch for avrdude to add TPI support to the USBTiny was posted to the AVRdude mailing list a few years ago here. That patch is what's in the files section here. It doesn't apply cleanly to avrdude 6.3, but the one .rej file is pretty easy to just do by hand (it's inserting an include for tpi.h into usbtiny.c).

It turns out that's not the only issue.

A chip erase won't reset the fuses in the config section. To do that, you must perform a SECTION_ERASE operation on the config block before performing a write. There's code in avr.c to do this in the function avr_write_byte_default(), but it turns out that that function isn't called when you try to write the fuses on the tiny9. Instead, the method called is avr_write(). So that little block of code that checks whether you're writing the "fuse" memory section or not needs to be copied (and adapted slightly) into that other function.

I'll go fetch a clean source tree of 6.3 and make a new patch that incorporates both of these changes. With that done, you should be able to freely clear and set the RSTDSBL fuse and use the HV jumper position when it's cleared to engage TPI.

Discussions