Real history: About a month ago I bought some ATmega328Ps from Arduino’s store, so if I brick (or blow) the board’s chip, I can replace it. However, I discovered a way to use the ATmega328P on a breadboard without the crystal oscillator and the ceramic capacitors, components that I don’t own (for now), running at 8MHz with its internal oscillator. So I decided to give it a try. The problem was that the ISP programmer didn’t work, since the MCU was configured to use the external 16MHz oscillator, instead of the integrated one. So I needed to change the fuses using an alternative method, and I found this way that I’m explaning below and perfectly worked! So I hope that this method also works for you.
Probably many middle/advanced AVR users have once set an incorrect fuse in an AVR-based board, like the Arduino UNO. However, if your MCU is removable (ATmega328P-PU), then you can easily recover it.
- Another Arduino-based board (UNO, Leonardo, Mega 2560, etc.)
- 12V battery (be aware that some batteries may not work. Energizer ones worked fine for me)
- A bunch of wires
- A paper clip
- A transistor (2N3904 or similar)
- A 390Ω resistor or similar
- Two 1KΩ resistors or similar
- (Optional) A LED
I HIGHLY recommend that you print the schematic of the circuit to avoid errors. Also (if you have it) use a multimeter to check that the 12V battery is correctly inserted in the circuit.
If it doesn’t work, check it again, and again. The most common error is that the 12V battery isn’t inserted correctly.
I hope that you enjoyed this tutorial and thanks for visiting my website!