Rescue AVR with HV rescue arduino shield

Saturday, 11 October 2014 Posted in Blog

After locking myself "out" of the atmega328p by writing the wrong fuses thru SPI programming, i decided to give a try on the Arduino-based AVR High Voltage Programmer, it was a good bet in the end.

I decided it was a very cheap and quick solution since i had all the material at hand.
I am making this specifically for the atmega328p, so in order to work i will have to change the arduino sketch a little.
So i just follow the schematic from MightyOhm, but for clarity reasons i just added the GND pin to 12V power supply on the schematic.

The transistor Q1 is suposed to be 2N3903, because i didn't have it or anything similar, i just used BC546, and it is working great.

I got my engraver and a double sided copper proto-board.

I also decided to use SMD resistors, since they save space and i still have a lot of them hanging around.

Now i just need to change the fuses configuration in the arduino sketch, like this :

// Desired fuse configuration
#define  HFUSE  0xD9   // Default for ATmega328, for others see   // ELECTROPEPPER CHANGED THIS LINES
#define  LFUSE  0x62   // //

You can get the sketch to reset the fuses on the atmega328p HERE.

There is the possibility to change the sketch for other AVR if the pinout is similar to start with, then it needs to be the same family, you just need to change those two lines like i did above, you will need to know what are the fuses values for your AVR for that, consult Engbedded Atmel AVR® Fuse Calculator.
Since we now have our sketch, upload it to the arduino, then insert the shield.
Connect 12V from a bench power supply or any other source, wait for the LED to turn ON then insert atmega328p and press the button, wait again for the LED to turn ON.

It now looks like this.