Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I work with PIC microcontrollers quite a bit and have never understood why Vpp (programming voltage) is higher than the max supply voltage that powers the PIC?

share|improve this question
up vote 10 down vote accepted

In older (EPROM) PICs the higher voltage was used directly to power the internal EPROM programming hardware. In the newer (FLASH) PICs the FLASH programming voltage is derived internally, and the Vpp is used only to enable the programming mode. Then why use a high voltage at all? This way you can use a single pin for multiple function, so you don't loose a pin exclusively for enabling programing. Note that a lot of PICs have an alternate method of enabling progamming (called LVP), which does dedicate a pin to enabling programming mode. But this can be disabled (so the pin can be used for its normal I/O purpose) by using HVP. Other modern PICs use a 'magical sequence' that must be clocked 'into' the reset pin to enable programming.

share|improve this answer
Thank you. That also answered my other question which was why is there a LVP mode. Great answer. – Brandon Bailey Nov 15 '12 at 13:24

For awhile after I started working with PICs (maybe until around 2000), I used a PIC programmer I'd designed and built myself; the only thing I needed to worry about when one wanted to program a new PIC was how much memory it had. Otherwise, all of the EEPROM PICs were programmed one way, and all of the 14-bit UVPROM/OTP PICs were programmed another way. When the 12Cxx parts appeared, their programming was almost like the 14-bit parts except that the config fuse was handled differently. Having all PICs use a high voltage on MCLR as a signal to enter programming mode, whether or not they actually "needed" that voltage, meant that the design of the programming hardware could remain the same. Further, having the MCLR circuitry be high-voltage tolerant meant that selecting the wrong batch file when attempting to program a part would be unlikely to cause damage (except when using an OTP part, when it permanently store the wrong program).

share|improve this answer
That must have been an easy time (at least on the algorithm part). Now the FLASH PICs use a maze of programming algorithms, all alike yet subtly different. – Wouter van Ooijen Nov 15 '12 at 22:41
@WoutervanOoijen: Indeed, I eventually gave up on trying to upgrade my programmer after having used it for years with almost no changes, because of some subtle changes. The last thing I fixed before I gave up was the timing of when I checked to ensure that the processor was driving the data pin; I forget the details, but the clock edge when the pin went from floating to actively driven was changed. Unlike some programmers which passively pulled the pins high or low and would read either 0000 or 3FFF if the part was floating, mine passively tried pulling it each way... – supercat Nov 15 '12 at 23:04
...so it could confirm that the chip was actively driving it when it was supposed to (and also that it hadn't gotten 'off' by a bit). But then one of Microchip's parts changed the timing, so the programmer would always fault. – supercat Nov 15 '12 at 23:05

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.