When I started PIC programming 15+ years ago hobbyists used to build their own PIC programmers and as such, came out with their own ICSP (In-Circuit-Software-Programming) interface connection pin-outs which they would adopt for their own designs. I don’t remember giving my own pin-out much thought and it was probably based on the easiest way to route tracks on the PCB with influences from Everyday Practical Electronics’ and the late John Becker with his TK2/TK3 PIC programmer projects. In those early days, you only needed 4 wires to establish an ICSP connection.
When the 18F devices started to become available a requirement for a 5th wire was added and so the 4-pin connector needed to be expanded on. For me, I opted for a 6-pin connector and my current personal standard came into existence, and that’s what I’d stayed with ever since.
I always use 6-pin Molex connectors for my ICSP connections and as I bought a life-time supply of them cheap several years ago, I’ve no intention using anything different; at least for the majority of my projects. The Molex connectors are keyed so it’s impossible to make a reverse connection.
However, over the years a standard has started to be adopted based on the Microchip PICKIT2 and PICKIT3 programmers. These programmers also use a 6-pin connector but have no reverse polarity protection like that offered by the Molex connectors, though using the Microchip standard you are less likely to damage things if the connection is reversed.
So the question is, do I keep my standard or change ?
I could adopt the Microchip standard really simply. My home-built custom programmer has standard 9-way D-type connectors as it’s interface and it would be a simple matter of creating a new programming cable that matches the Microchip standard. A couple of years ago somebody asked me to look at a PIC project they created that used the Microchip standard and I did quickly make a different cable for my programmer… and I’ve never used that cable since.
Changing things at this stage feels like change for change sake. My current configuration works really well for me and I have no real incentive to change. But changing standards are an unfortunate way of life. In the software programming world it became common practice to adopt variable naming standards, only for this now to be frowned upon when using some programming languages.
Maybe if I wait long enough, Microchip will change their standard and fall in line with mine.
One lives in hope 🙂