Super simple 328P (UNO) programmer shield with rescue function

I have to program Atmega 328P controllers for use in other projects on a fairly regular basis. Depending on where I get them, the 328P controllers with or without fuse settings and boot loader.

therefore the steps that I do are:

  • Read the current fuse values
  • Set fuse values to what I need
  • Burn the Arduino bootloader
  • Load my own sketch onto the controller

Every now and again the programming of one of these steps goes wrong and I was left with a 328P with fuse settings in the wrong state, basically useless, because the fuse settings ended up neither reading the internal oscillator nor using the crystal.

I created this shield to make my programming quicker, safer and easier. In the case that you get a 328P stuck in the wrong state, you can inject a clock signal into the 328P by pressing down the "EXT_CLK" button, which allows you to get the fuses back into a state you want.

I call this a "rescue function", because it allows you to recover from the most common causes of having a "bricked" 328P. It does not have High Voltage programming capability.

I'm not claiming that this is particularly novel or innovative, just that it is a nice and cheap solution for loading a sketch onto a bare 328P and getting it running.

You need to have an Arduino UNO or Leonardo to mount the shield on, and a Atmega 328P to program.

Board:

Board mounted on the Arduino:

Board mounted on the Arduino:

The programmer is basically that shown in https://www.arduino.cc/en/Tutorial/ArduinoISP

The source code and board designs are open, and can be found here:

For people who don't want to go to the trouble of making their own PCBs, a bare PCB and kit is available. See the README file on the GitHub site for more information.

If you are going to program a lot of '328s then a ZIF socket might be preferable?

Yes, indeed, you are right. It comes with a ZIF, and it's just that this is a picture of the prototype, which had a plain old DIP socket. You'll notice the space around the chip which is exactly for the reason that ZIFs are a bit "fat".