In-circuit programming means that the PICKit3 programming tool is connected in parallel to the active circuit. This allows debugging and is very convenient in general since there’s no need to take the chip out and put it into the ICSP adaptor.
This is also useful for programming the chips when they are already mounted on a production board.
I will explain the connections and SW configuration in this post.
Wiring and connections
The following photo shows how the PICKit3 is connected to the chip.
The PICKit3 header has six pins and pin number 1 is identified by an arrow as can be seen in the next photo.
The pins have the following functions:
1 – VPP/MCLR
2 – VDD
3 – VSS (Ground)
4 – ICSP data
5 – ICSP clock
6 – LVP (low voltage programming)
We use only the first five pins since we are not working in low voltage programming mode.
The table below shows where each PICKit3 pin is connected to the chip.
[table id=3 /]
The last connection is a 10K pull-up resistor connected from VSS to VPP – pin 4 – of the chip.
Configuring the MPLab IPE (Integrated Programming Environment)
Open the “Advanced mode” window in the Settings menu and select “Power” on the left pane. Make sure that VDD is correct (it is not correct in the screen shot below) and uncheck the “Power target circuit from tool” check box, so that the chip will be powered from the power supply. The reason is that the tool can not provide enough power for programming when it is in-circuit.
I encountered the following errors before I found how to set this up correctly:
“Too much power drawn on VDD” – the VDD and VSS are not connected to the power supply but instead draw power from the PICKit3.