Saturday, March 27, 2010

Arduino Components: The ICSP 6-pin header

The ICSP pin header is the six pins that are showed in this photo;

It is even clarified by written those pins are for ICSP, but what does ICSP mean and what are its benefits. First ICSP (In-Circuit Serial Programming) is a way that allows us to program the chips when they are in circuits, in Arduino it helps in programming Arduino chip (AtMega328P) directly with AVR instructions without the need to Arduino IDE, in this case we can program AtMega328P as the factory programmed Arduino with bootloader. The bootloader helps Arduino device to understand sketches (Arduino applications), and to run them once they are installed in Arduino.

ICSP will help us upgrade our Arduinos in case there are any updates from Arduino team. Arduino team make ICSP like that to allow them make any update in the last minute before sending the device to the customer, in other words they manufacture Arduino without programming it with bootloader, they continue updating the bootloader from time to time, and before sending Arduino to a customer they install the last version of the bootloader.

Other good thing about Arduino ICSP is that it can turn an Arduino to an IPS programmer to program, a general ISP (In-System Programming) programmer if we see this project by Massimo Banzi (co founder of Arduino), he just changed the Arduino crystal and some modifications in Arduino program and turn it to programmer.

Conclusion, ICSP is a way to program Arduino, or an advantage to use Arduino as an ISP programmer.