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?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
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.
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).