

The Arduino Uno (Rev3) is a microcontroller board developed by Arduino, based on the ATmega328P microcontroller. It is a versatile and widely used platform for prototyping and developing interactive electronic projects. One of its key features is the In-Circuit Serial Programming (ICSP) header, which allows users to program the microcontroller directly using an external programmer. This feature is particularly useful for advanced users who need to reprogram the bootloader or perform low-level programming tasks.








The ICSP header on the Arduino Uno (Rev3) consists of 6 pins arranged in a 2x3 configuration. Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | MISO | Master In Slave Out - Data received by the microcontroller |
| 2 | VCC | Power supply for the programmer (5V) |
| 3 | SCK | Serial Clock - Synchronizes data transmission |
| 4 | MOSI | Master Out Slave In - Data sent to the microcontroller |
| 5 | RESET | Resets the microcontroller during programming |
| 6 | GND | Ground connection |
Connect an External Programmer:
Programming the Microcontroller:
Power the Board:
If the Arduino Uno (Rev3) becomes unresponsive, you can restore the bootloader using the ICSP header. Below is an example of how to do this using another Arduino as an ISP programmer:
Upload the ArduinoISP Sketch:
File > Examples > 11.ArduinoISP > ArduinoISP).Connect the Programmer to the Target Arduino:
| Programmer Arduino Pin | Target Arduino ICSP Pin |
|---|---|
| 10 (RESET) | RESET |
| 11 (MOSI) | MOSI |
| 12 (MISO) | MISO |
| 13 (SCK) | SCK |
| GND | GND |
| 5V | VCC |
Burn the Bootloader:
Arduino Uno) and the correct port.After programming the microcontroller via ICSP, you can upload a simple sketch to verify the board's functionality:
// Blink LED on pin 13 to test ICSP programming
void setup() {
pinMode(13, OUTPUT); // Set pin 13 as an output
}
void loop() {
digitalWrite(13, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(13, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
Programmer Not Recognized:
Failed to Burn Bootloader:
Microcontroller Not Responding:
By following this documentation, users can effectively utilize the ICSP header on the Arduino Uno (Rev3) for advanced programming tasks and troubleshooting.