I use a lot of PIC microcontrollers in my designs and have never really been happy with different onboard programming connectors I've tried. I'm now trying a new design and want to share a little about how I got here.
I design a lot of small/fairly complex pcbs, and space is always a premium, 0402 is my go-to size, so over the years I've changed up my connector to try to reduce the footprint.
My First Programmer(tm) was a Mikroelectronica MikroProg, the old one, not the shiny new one, this used a 2x5 2.54mm IDC socket, this is way too big for my designs, measuring a massive 12.7mm x 5.08mm, plus its throughhole, restricting pcb space on both sides of the board.
I first started out by making an adaptor cable for this, reducing it to a 1.27mm pitch 1x5 pin header, the idea was to have the pins on the cable, and just hold it in the holes on the board whilst it programs. This ws pretty small, but had a lot of problems, from the solder joints on the pins breaking to having to constantly it at a jaunty angle just to make contact. This make in-circuit debugging very difficult indeed.
After this, i moved to a molex connector, a six way one of these:
This was bigger at 10mm x 5mm, but was surface mount, so didnt impact on the other side of the pcb, it also had locking connectors so was a lot more secure, and I had many happy hours of programming joy with this.
I then saw a hackaday article on the TAG connector, and liked what I saw.
This connector is 5mm by 2mm, with 3 through-hole alignment posts and the rest is surface mount. You can also get a small pcb which goes underneath your board and locks the alignment pins in place for a better connection. The size has been ideal, but I had a few issues with it.
Number 1 is the price, the cable itself is £24, and the last time I bought one it was difficult to get hold of. The locking board is around £4.
Number 2 is it used sprung pins, and so sometimes it was tricky to get a decent connection, especially for debugging. Nothing worse that stepping through your code to the part you want, to have the programmer disconnect.
Number 3 is the concern that if I ever can't buy these cables, if it breaks I have no way of programming my boards.
We recently employed another engineer, so I've made the decision to look around for a better option, rather than continuing with these expensive unreliable cables.
I also want to add some communication ports for PC connectivity, so debugging/testing will be easier.