ICSPPins to Program AVR and Arduino Microcontrollers
ICSPPins for Communication Between Two or More Arduino Boards
In this tutorial, we will discuss the use of
ICSP pins present in Arduino.
ICSP stands for
in-circuit serial programmer, also known as
ICSP Pins to Program AVR and Arduino Microcontrollers
Arduino is a board that has a microcontroller, a programmer, and some safety components. There is a
bootloader in every Arduino provided by the Arduino team itself, which communicates with the PC and gives instructions to the microcontroller to perform some task like BIOS present in a motherboard. The
bootloader is preprogrammed and is inside the microcontroller’s flash memory. When you connect the Arduino with your PC, the
bootloader waits for a sketch to be uploaded to the microcontroller, and if no sketch is provided, the
bootloader will run the already present sketch inside the microcontroller flash memory. Sometimes this
bootloader gets crashed, and the Arduino cannot communicate with the PC. If this is the case, or you want to program the
bootloader or program another microcontroller, you can use another Arduino board to do this. First, you need to check where the
ICSP pins are on your Arduino board. You can check the pin configuration of your Arduino board for that. For example, if you want to program the
bootloader of an Arduino UNO with another Arduino UNO. Connect the two Arduino UNOs as shown in the figure.
The first step is to set the programmer Arduino as
ISP. To do this, go to the tools tab in Arduino IDE and set the programmer as Arduino as
ISP. The next step to use an example code present in the Arduino examples section as
ArduinoISP. In this example code, you can see many comments which will guide you through setting out different parameters. This code also supports three LEDs which are used to check the operation of the process. For example, the middle LED indicated if there is an error in programming. The next step is to burn the
bootloader. To do this, you can go to the
Tools tab and select burn
bootloader. You can set different parameters of
bootloader like how much memory is reserved for the
bootloader and disabling reset. So make sure to read the documentation of your Arduino board before doing this. You can also use this method to program other AVR microcontrollers because, in some projects, you don’t need a board; instead, you only need a microcontroller like a PIC microcontroller.
ICSP Pins for Communication Between Two or More Arduino Boards
Consider you are making a project where you need more than one Arduino board, and you need them to communicate with each other or if you want to control some Arduino boards with a master Arduino board. In these cases, you can use the
ICSP pins for communication.