The AT Tiny85 is a great, cheap ($1.29 qty 1 at Digikey!) little processor. At 8 pins, little is the operative word. Assuming you don’t need an external crystal (a good assumption for 99% of the hobbyist use cases of this chip), you still get at least 5 I/O pins. That’s 2 for power/ground, 1 for Reset, and the rest for I/O. And if you really don’t need a Reset pin, you can burn the RSTDISBL fuse and get a 6th pin for I/O.
In making a little demo blinkie board for an upcoming Tiny85 class, I need all the I/O I can get, and that means using the Reset pin for I/O. The downside of doing that is that the Reset pin is part of the normal In Circuit Serial Programming interface, so after you burn the fuse, you can’t reprogram it with a normal programmer. That’s a little scary. The $1.29 price tag doesn’t mean a lot when it’s Friday night and you’re down to your last chip!
Atmel has provided a way out, but it requires a special “high voltage” serial programmer. They’re available, but I’m cheap, and for the small number of times I’m likely to need it, I wanted something minimalist (and cheap). I found just the thing on one of Wayne Holder’s Tinkering pages. He even provided a sketch to read the device signature, read the fuses, write the default values, and reread the fuses. It’s Arduino driven, one transistor and some resistors. It does require a 12V supply, but for the rare times I’ll need it I can come up with 12V. (Wayne has a later version which uses a charge pump to derive the 12V supply, adding only a couple of caps, resistors, and diodes and a few more Arduino pins to drive it.)
All resistors are 1K. I used a 2N2222, but about any general purpose NPN transistor should work.
I laid out a little “mini shield” for it. No need for a whole shield when all the pins I need are in the Arduino’s 8-pin header D8..Aref. I don’t even need anything from the other side for +5V, since he just sets a pin HI and uses that. (Nice arrangement, Wayne!) I used SMT resistors, but wanted a socket for the Tiny85. I realized part way through laying it out that the SMT stuff was being laid out on the foil side and the socket on the component side, and tried to make sure I took care of that little twist. But failed.
The device didn’t work at all first try, and troubleshooting soon turned up the layout boo-boo. The fix of putting the socket on the other side of the board is ugly, but it works. And to my pleased surprise, the chip didn’t even get completely fried with power (and 12V!) on the wrong pins until I shut it down to figure out why it didn’t work. It at least worked well enough to report its signature and fuse state after I fixed the programmer. And if I blew some I/O pins or something – oh well. It’s only $1.29 and I have some more. 🙂