PIC Microcontroller ICSP: In Circuit Serial Programming

by Joe Watson.

Also:

The ICSP connector is a 6-pin male header, .1 inch spaced. The signals assigned to the pins are as follows:

Pin   Meaning
 1    VPP (also /MCLR)
 2    VDD
 3    VSS  (Gnd)
 4    ICSP Data (aka PGD)
 5    ICSP Clock (aka PGC)
 6    AUX  (aka LVP)

Pin 1 always connects to the microcontroller's /MCLR pin and is fed something around +13 volts during High-Voltage Programming. At one time, this +13 volt line actually powered the chip programming process. According to what I have read, these days it serves only as an indicator that the programming is taking place and the high voltage source for the actual programming process is developed inside the chip from the VDD supply.

Using an internally developed high voltage supply also set the stage for Low-Voltage programming. Not all PICs support this and the 12F675 is one that does not. In those that do, one of the I/O pins is assigned to indicate if the programming is to use the High- or Low-Voltage programming method as these chips are designed to use either. During the programming process, the signal name assigned to the pin is LVP which stands for Low-Voltage Programming.

For example, on the 16F628A, the LVP pin is pin 10. If the LVP pin is held high when the programming mode is entered, the chip is to be programmed using Low-Voltage programming instead of High-Voltage programming. There are other special requirements involving the timing of the application of VDD and the VPP/MCLR signal but the logic state of the LVP pin is important. So what about PIC programmers that use High-Voltage programming? A requirement these days that did not exist before the existence of Low-Voltage Programming is that the LVP pin must be held low during High-Voltage Programming. If the LVP pin is just allowed to float, sometimes High-Voltage Programming fails because the chip assumes that Low-Voltage Programming is intended.

At one time, pin 6 of the ICSP was simply called AUX and was usually not connected to anything. It was just a spare pin. Now that Low-Voltage Programming is an option, pin 6 has often been renamed as LVP and is expected to be connected to whichever pin on the target microcontroller is assigned by Microchip as the LVP pin. If the PIC programmer supports High-Voltage Programming, connecting ICSP Pin 6 in the programmer to ground (perhaps via a 10K resistor) assures that the LVP pin on the target chip will be low during the High-Voltage Programming cycle.

Several simple PIC programmer circuits leave pin 6 open or just omit it altogether.

Archive: