An Arduino ICSP Board
I have been using the bit-banging method to boot-load ATmega328p with Arduino bootloader for a while, and Kimo’s method worked quite well for me. If you need to flash a lot of chips however, you might not want to swap out the chip on your Arduino board every single time you need to flash another chip as you do not want to accidentally damage the socket (or the board) in the process. After all, the DIP socket is not designed for this kind of repetitive use.
So, I decided to make a separate ICSP board just for programming ATmega328p. The concept is quite simple, as you can see in the schematics below it basically is a bare bone ATmega328 board with a reset button and ICSP headers. I added an LED to pin 19 (Arduino pin 13) so that if the boot loader is flashed successfully, the LED will blink just as would on an Arduino board. The LED will also serve as an indicator during flashing.
The following is the board with the ICSP header based on the schematics shown above. This board is not just limited to burning Arduino boot loader or other Arduino programs though, it can serve as a standard template for any ATmega328 based system you build. Ideally, you probably want to replace the standard DIP socket with a ZIF socket so that it is more suitable to be used as a programmer board.
Here is a picture taken while I was testing flashing boot loader with the bit-banging method. Since I kept the ICSP header pin layout the same as on the Arduino board, I can use the same cable as I used before. You can find more details on how to make the cable and here.
I decided to add voltage regulation circuitry so that I can use different power sources. The finished ICSP board with case is shown below:
Here’s another picture of the ICSP board in action:
And of course, you can also use a regular programmer to program chips on this ICSP board as well.






Hi, I’m trying to program an ATmega8515 with my arduino. Do you know if this method would work? I have an Uno R2 and a Diecimila. thanks.
It should (I haven’t tried it though) as we are using the FT232′s built-in bit-banging capability here so as long as the target chip (in your case ATmega8515) supports ICSP it should work. Why not give it a try and let me know how it goes?
hi, thanks for the reply. I got it to work using kimo’s method, which is a huge relief ’cause none of the official Arduino tutorials were successful.
Great! I have been using his method for quite sometime now and I really like it as well. What can I say, it works!
Can you use this method on a Uno?
I meant Uno r3.
The short answer is yes. All this is doing is to use the ICSP headers to program the ATMega328p. So you can use it to program pretty much any Arduino chips (not just limited to ATMega328p).