I’ve often wondered the correct (and simple) way to implement ICSP for PICs.
For anyone who does any kind of microcontroller development, you’ll no doubt be familiar with in-circuit programming. This method of programming the chips allows you to leave the chip in its destination circuit (whether is surface-mount or not) and re-program it.
Obviously, this is very hand for debugging as you can easily test your code in the circuit which it’ll be running in. It’s also much more convenient than pulling a DIP from the circuit, programming it, and re-inserting it. With SMT devices, that routine is not even an option.
The Microchip PIC series of microcontrollers makes in-circuit programming fairly easy, but there are a few gotchas. For as long as I’ve been using PICs (a few years) I’ve never really taken the time to figure-out how to do the ICP. This article explains the various hoops you need to jump through (diodes to protect your circuit, for example) and should be helpful to anyone who, like myself, just never found it that much of a necessity to decipher.