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.

ATmega328p ICSP Board

ATmega328p ICSP Board

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.

ATmega328 ICSP Board

ATmega328 ICSP 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.

Testing the ICSP board

Testing the ICSP board

I decided to add voltage regulation circuitry so that I can use different power sources. The finished ICSP board with case is shown below:

Finished ATmega328 ICSP Board

Finished ATmega328 ICSP Board

Here’s another picture of the ICSP board in action:

Finished ATmega328 ICSP Board

Finished ATmega328 ICSP Board

And of course, you can also use a regular programmer to program chips on this ICSP board as well.

Be Sociable, Share!

9 Comments

  1. alek says:

    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.

  2. Kevin says:

    Can you use this method on a Uno?

  3. Kevin says:

    I meant Uno r3.

  4. Chris says:

    Hi,
    Thanks for your page on making your own Arduino ICSP Programming Board.
    I want to build this with a ZIF socket. I have an Arduino UNO R3 and it has two sets of 6 pins:
    A) The one nearest the Reset button (ICSP for USB Interface) and
    B) The one nearest pin 1 of the ATMega328 chip (ICSP for ATMega328).

    Can I connect a cable from either of these to the 6 pins on your Programming Board? If so which pins go to which?
    If not, can you tell me how to connect my Arduino to the Programming Board to upload scripts?
    The link in your page ‘here’ (for making the cable) no longer links to the original page and what it links to now is not clear and does not match my Arduino.
    Thanks Chris

Leave a Reply