After a recent post on how to repair an ATmega with a faulty (or even missing) bootloader and helping someone out with it, it occurred to me that this mechanism will work for any Arduino – not just JeeNodes.
Any 3.3V or 5V Arduino’ish system which lets you upload the isp_repair.pde sketch can be used to program any board with an ISP connector on it. The code is for ATmega328’s, because that’s all I use around here these days.
The trick is to hook up a few power and I/O lines in a specific way:
I’m using an Arduino Pro as example, but that’s just one of many you could use. Now connect these six wires:
- ISP pin 1 = BLUE = Digital pin 4
- ISP pin 2 = RED = VCC (+5V)
- ISP pin 3 = GREEN = Analog pin 0
- ISP pin 4 = PURPLE = Analog pin 3
- ISP pin 5 = ORANGE = Digital pin 7
- ISP pin 6 = BLACK = GND
Note: if your working board operates at 3.3V, then you should connect the RED wire to +3.3V, not +5V (that way signal levels and power supply will match). Also: the target board should not be connected to anything, since it will be powered through the ISP connector.
The only thing left to do is to upload the isp_repair.pde sketch to your working board, and open up a console window. You should see something like this:
That’s it – disconnect all the wires. The ATmega on the target board now has a boot loader and the standard pin 13 blink sketch. Ready again to accept whatever sketch you upload to it!