Fork me on GitHub

Project Notes

#099 ATmegaISPShield

A DIY ATmega programming shield using an Arduino as the ISP

The Build

Notes

The LEAP#068 ATmegaViaArduinoISP project tested programming an ATmega chip on a breadboard using an Arduino as the in-system programmer.

It’s a very convenient way to program an ATmega chip, but it is a bit of a chore to setup the circuit each time it is required.

This project puts a 28-pin DIP socket on a protoboard that can plug into an Arduino as a custom daughter-board/shield. The board also includes:

  • 16MHz crystal
  • reset pull-up resistor
  • LEDs with resistors on MOSI, MISO, and SCK pins
  • breakout sockets for all pins on the ATmega chip

The LEDs on the shield will indicated activity during programming. They can also be used for test sketches (the LEDs correspond to digital pins 11, 12 and 13). The ATmegaISPShield.ino sketch included here is a simple variant of the Blink sketch that flashes all the LEDs, and can be used for testing the programmer.

How to Use the Shield

The procedure for programming a 28-pin ATmega chip like the ATMEGA328P-PU on the board is:

  • insert an ATmega chip into the 28-pin DIP socket
  • plug the board onto an Arduino Uno (or Mega)
  • program (upload) the Arduino host with the ArduinoISP sketch
  • select Arduino as ISP under Tools > Programmer
  • burn the bootloader - this is optional if the chip already has the bootloader, but if unsure it is a good idea to burn again. This will ensure fuses are set correctly so the chip runs as expected.
  • send the desired sketch to the ATmega chip using the “Upload using Programmer” option

Program the host with the ArduinoISP sketch:

howto_arduinoisp

Set the programmer:

howto_set_programmer

Burn the bootloader:

howto_burn_bootloader

Upload using programmer:

howto_upload_using_programmer

Construction

Breadboard

The Schematic

The Build

The Build

Credits and References

About LEAP#99 ArduinoATmelICSP
Project Source on GitHub Return to the LEAP Catalog

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

LEAP is my personal collection of electronics projects, usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting (IMHO!).

The projects are usually inspired by things found wild on the net, or ideas from the sources such as:

Feel free to borrow liberally, and if you spot any issues do let me know. See the individual projects for credits where due. There are even now a few projects contributed by others - send your own over in a pull request if you would also like to add to this collection.