Sunday, December 6, 2015
Piggy-prog release version
Over the past few months I've been making progress with piggy-prog and picoWiring. Since the beta version of piggy-prog, I've made a couple changes. The first is a 8Mhz clock on PD6 (Arduino pin 6) using PWM. That pin connects to physical pin 2 of the AVR 8-pin AVR underneath, which is the clock in (CLKI) pin on the ATtinyx5 and ATtiny13. This allows programming AVRs that (sometimes accidentally) have the fuse settings for external clock.
The second change I've made is to reduce the SPI SCK timing to 128kHz to allow for programming AVRs with the CKDIV8 fuse set (factory default). According to the datasheet specifications a 250kHz clock should work, but a few ATtiny13s I tested required a 128kHz clock to work when the CKDIV8 fuse was set.
To build piggy-prog you can download piggy-prog.ino and upload it to a Pro Mini using the Arduino or Wiring IDE. If you have avr-gcc and avrdude installed, you can download the release, and run "make avrdude" to compile and flash the code to the Pro Mini. Plug the Pro Mini into a breadboard so pins 9 and 10 are 1 row below pins 4 and 5 of the ATtiny, and pins 5 and A0 are in the same row as pins 1 (RST) and 8 (VCC) of the ATtiny. Power will be supplied by the Pro Mini, so no jumper wires are needed.
In addition to working with the ATtinyx5 and ATtiny13 MCUs, it should also work with the ATtiny2313. Even though pin 4 is not GND on the tiny2313, the input clamping diodes will make the ground connection. The diode voltage drop of about 0.7V will mean the power to the tiny2313 will be about 4.3V, but that is still well within the operating range of the chip.
For the next version of piggy-prog, I plan to add detection of the position of the attiny, so that if it is one row up or down on the breadboard, piggy-prog will indicate that the chip needs to be moved. This detection will be done by putting a weak pull-up voltage on one of the pins and then detecting if the other pins go high. Since the RST pin does not have a VCC clamping diode, it will also be possible to safely detect if the chip is in backwards (where VCC and GND are swapped). For version 1, pay attention to the position of pin 1 (with a round dot close to it), as it is possible (in theory) to damage both the Pro Mini and the target MCU if you put the ATtiny in backwards. I have accidentally reversed VCC and GND on AVRs without any apparent damage, but YMMV.