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.
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 // http://www.engbedded.com/cgi-bin/fc.cgi //
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.