I have three of these programmers, and two of them have failed over the years (one quite recently). Today I decided to open them up and attempt to discover the fault.
Unit 1:
In this case the programmer was recognised by the PC software (PICkit 2 connected), but it failed to identify the PIC (No Device Found). The PICkit 2 software has a very useful feature under the Tools menu called "Troubleshoot". This allows you to check that the correct signals are present at the ICSP connector, and requires the use of a voltmeter and an oscilloscope.
During the test procedure it was clear that the VPP (programming voltage) line was generating the required 12V level, but the MCLR function was not able to pull the voltage at pin 2 down to ground. However, the voltage was also floating above ground when MCLR was set high, despite there being no pull-up resistor connected. Therefore I suspected that Q6 (MMBT3906) was faulty. See attached PDF. This is an SMD that I don't have, so I replaced it with a 2N3906. Problem solved.
Unit 2:
The symptoms on this unit were exactly the same as unit1, and therefore I suspected that this had the same fault. Completely wrong!
In this instance I discovered the PGD line, which can be toggled by a 30kHz signal, or forced to VDD or GND, was working but with a lower amplitude than the PGC line. Initially I pointed the finger of suspicion at Q5 (another MMBT3906), but replacing it made no difference. The output signal from the PIC was fine at 4.8V, and the amplitude was perfect at the junction of R19/R20. As a comparison, I measured the resistances of R15 and R20. It turned out that R15 was 33R (as expected) but R20 was 5k8. After replacing R20 with a non-surface mount 33R resistor, the problem was resolved.
Luckily there was plenty of room in the enclosure to accommodate these larger components, and hopefully this might be of interest to anyone else with a sick PICkit 2 programmer. The schematics are in Appendix B.
Unit 1:
In this case the programmer was recognised by the PC software (PICkit 2 connected), but it failed to identify the PIC (No Device Found). The PICkit 2 software has a very useful feature under the Tools menu called "Troubleshoot". This allows you to check that the correct signals are present at the ICSP connector, and requires the use of a voltmeter and an oscilloscope.
During the test procedure it was clear that the VPP (programming voltage) line was generating the required 12V level, but the MCLR function was not able to pull the voltage at pin 2 down to ground. However, the voltage was also floating above ground when MCLR was set high, despite there being no pull-up resistor connected. Therefore I suspected that Q6 (MMBT3906) was faulty. See attached PDF. This is an SMD that I don't have, so I replaced it with a 2N3906. Problem solved.

Unit 2:
The symptoms on this unit were exactly the same as unit1, and therefore I suspected that this had the same fault. Completely wrong!
In this instance I discovered the PGD line, which can be toggled by a 30kHz signal, or forced to VDD or GND, was working but with a lower amplitude than the PGC line. Initially I pointed the finger of suspicion at Q5 (another MMBT3906), but replacing it made no difference. The output signal from the PIC was fine at 4.8V, and the amplitude was perfect at the junction of R19/R20. As a comparison, I measured the resistances of R15 and R20. It turned out that R15 was 33R (as expected) but R20 was 5k8. After replacing R20 with a non-surface mount 33R resistor, the problem was resolved.
Luckily there was plenty of room in the enclosure to accommodate these larger components, and hopefully this might be of interest to anyone else with a sick PICkit 2 programmer. The schematics are in Appendix B.
Comment