In-system programming (ISP), also called In-Circuit Serial Programming (ICSP), enables us makers to program microcontrollers MCUs such as the Atmel chips in almost all Arduino designs through a set of special pin connections on a PCB.
Most Arduino and Arduino compatible boards will have a 2×3 pin ICSP header on them such as the 6 pin connector on the NODii 2.
Some may even have more than one of these connections depending on the number of MCUs that need to be programmed. The signals running through these pins are super important if you need to reflash your bootloader on your board. However for most makers programming their Arduino through a simple USB cable is usually all that is needed.
But for anyone else that needs to work with the low-level bootloader you need to purchase an AVR Programmer. These programmers come with a cable that connects directly to the ICSP pins on your Arduino board so the exact pin assignments is not so important, but if you cannot use the ICSP pin header for programming or your version of the board does not have these PINs – this table will come in very handle.
|ICSP||ATMega32u4 (SPI)||ATMega328 (SPI)|
|Pin 1 / MISO||D14||D12|
|Pin 2 / VCC||VCC||VCC|
|Pin 3 / SCK||D15||D13|
|Pin 4 / MOSI||D16||D11|
|Pin 5 / RESET||RESET||RESET|
|Pin 6 / GND||GND||GND|
Now go make something.