Chibi Circuitz

Arduino as ICSP programming shield.

This is a DIY project where you can buy the parts and solder up an ICSP programming adapter for use with your Arduino. ICSP (in-circuit serial programming) or ISP (In-system programming) is used on many micro controllers including most Arduino boards so this adapter should provide you with lots of options as you design your circuits.

Perspective view image of ICSP v2.4 Pinout of ICSP six pin connector

Background

When researching how to program an external device via ICSP there were quite a few designs floating around to utilize Arduino as an ICSP or ISP programmer. Since none of the ones I found really felt right to me at the time, I started designing a version for my needs.

There was a really cool asymmetrical design that caught my eye while searching for examples and it became the primary inspiration for this project. The MEGA-ISP Shield by Yaroslav Osadchyy, uses Pin Through Hole (PTH) components and gave me several design elements to improve on. The first was to make the board outline symmetrical so it both; looks good and feels right when plugging it in to Arduino. Next, since I was transitioning from PTH devices to Surface Mount Devices (SMD) at the time and I wanted to minimize PCB vias; all of the transitions from the top layer to the bottom layer are done at the PTH headers.

After hearing about issues with ICSP programmers due to the variety of Arduino and compatible boards out there and the differences in how boards automatically reset, the two jumpers; J1, and J2, were added to provide two different options to help resolve any auto reset issues that you may come accross. I have not yet needed to use these, but those options are there just in case.

I have been using various iterations of this ICSP programmer for a while now and this is the most recent version of my ICSP shield for Arduino.

Image of ICSP v2.4

ICSP Shield V2.4 Features:

  • Uses ArduinoISP sketch provided with Arduino.
  • Power target device from Arduino (5v or 3v3 lines) or external power connection with jumper to select.
  • 6 pin standard ICSP header footprint provided to interface with most products supporting ICSP.
  • Jumper select for reset hold or override so you can customize to your Arduino environment.
  • Partial shield format with pinout to match original Arduino Duemilanove (Uno or other compatible Arduino) shield layout.
Image of ICSP over Arduino

Arduino pins and use

Digital IO Description
7 Programming in process - LED
8 Error with programming - LED
9 Heartbeat/Hello - LED
10 Target Reset
11 MOSI
12 MISO
13 SCK

*Gnd is common between Arduino host and slave device.
*External power, Arduino 3v3 or Arduino 5V are selectable by jumper to power Slave device.

Pin assignments are already done in the ArduinoISP sketch.

Parts list for assembly

Part Value Package
C1 10uF 1206
D1 Green 0805
D2 Red 0805
D3 Green 0805
R1 330 Ohm 0805
R2 330 Ohm 0805
R3 330 Ohm 0805
R4 120 Ohm 0805

Construction notes

When inserting the boxed 6 pin header, note that pin one (1) has an octagonal pad while pin six (6) is square in order to denote the location of the ground pin; follow the silk screen orientation when placing the polarizing notch of the boxed header if that connector is chosen.

The optional external power input was designed for a two pin JST type header. The right angle JST headers that I had in stock are oriented with the wire connection going across the board when mounted on the top of the board or going off the side when mounted below the board.  This may vary with the connectors you source.  The external power can also be accomplished by using a two pin screw terminal block or two more generic snapable header pins.

OSH manufactures the PCB to order so there is about two weeks lead time on these. Also note that you need to order in multiples of three and remember to set up your account before ordering in order to save time.

BOM for ordering

Qty Value Description of part Typical part number
1 1x .1 in pins 1 pin Generic snapable header Generic snapable header
with .1 in spacing
available from most
suppliers
3 2x .1 in pins 2 pin Generic snapable header
1 3x .1 in pins 3 pin Generic snapable header
2 6x .1 in pins 6 pin Generic snapable header
1 2×3 boxed 6 pin boxed .1 in rectangular connector 3M 30306-6002H
1 10uF 1206 SMT package 10uF Capacitor Yageo CC1206KKX5R7BB106
2 Green LED 0805 SMT package LED Dialight 598-8170-107F
1 Red LED 0805 SMT package LED Dialight 598-8110-107F
3 330 Ohm 0805 SMT package Resistor Xicon 260-330-RC
1 120 Ohm 0805 SMT Package Resistor Xicon 260-120-RC
1 - 3 .1 in jumper Jumper(s) for Power and Reset
option selections
Generic, available from
most suppliers
Power options
1 2x .1 in pins Right angle JST connector PRT-09749 at SparkFun
1 2x .1 in pins 2 pin Generic snapable header Generic snapable header
PCB
1 ICSP2.4 ICSP programming shield PCB Order from OSH Park
Other circuits.

D 9 X four way splitter