Previously, I made a Pickit 3 clone – (See previous Blog Post). It works well, but I have often wondered just how little of its circuitry was needed to program and debug the boards I make. For instance – I primarily use the newer 3.3V PIC32 processors, so I really don’t need the ability to alter the voltage like the standard Pickit 3 can. I also have no real need for programming on the go, or even to provide power to the target MCU to program. Knowing this – I decided to see what I could do to remove the circuitry I didn’t need, yet still have a functioning programmer/debugger.
After a little research and looking at what Microchip had done with their starter kits, I arrived at the following schematic, which is based on their Pickit On-Board:
Here is a link to a PDF of the schematic: PDF Schematic
In the top left of the schematic is the 25LC256 EEPROM. Working our way down we see the main MCU the PIC24FJ256GB106 – and it’s programming header to the left, and below that is the USB Mini-B connector and the 3.3V regulator. Just above that and to the right is the target MCU programming header. To the right of that is a transistor that controls the target MCU master-clear line. Above that are a couple of voltage dividers that mimic the programming and target mcu voltages, and above that are the target MCU clock and Data lines.
This circuit looks to be the same basic underlying Pickit 3 circuit, but with some “faking” of inputs to mimic missing circuitry. For instance – the OTG programming switch would normally be on pin 21, but instead it is simply pulled high as there is no switch to pull it low. VPP_SENSE and VDD_SENSE are simply fed to the PIC by way of voltage dividers, as is the 2.5 volt reference at pin 16.
As it appeared I had everything I needed, I went about laying out the PCB. Since my ultimate goal with this project is to simply include these parts on my prototype development boards so that I can program and debug with an on-board device, I did not spend a lot of time routing the board. It is a quick and dirty that I am using as a proof of concept. If I intended to make these for long term use, I would have spent some time laying it out properly. Having said that, here are some photos of the PCB layers:
Here are some 3D renderings of what the board will look like:
The board is decently small at 40 x 15 millimeters, but could be a bit smaller. I used 0805 passives, and left things a bit spread out, just to make it easy to solder by hand, so using smaller passives and moving them closer together could easily reduce the size even more. Here is a link to the Kicad project files: KICAD Project Files
Satisfied with things, I ordered the boards and the parts. Here is what the board will look like according to OSH Park :
Fast Forward about 10 days, and all my boards and parts have arrived. Here is the actual board:
Here is the board after I built one:
After finishing the prototype board, I used the MPLAB IPE and flashed the PIC24 to program it as a PICKIT 3. Once that was done, I connected the PICKIT Mini to MPLAB X and attempted to program one of our project boards. Here is MPLAB X loading the relevant firmware for the PIC:
and then the PICKIT Mini programming my board:
So – now that I know this works, I can set about doing what I originally wanted to. My next prototype board I create for a new PIC project will have its own programmer and debugger built right in. From the above schematic, I can remove the power section and the target programming header, so that I am just left with the PIC24, the EEPROM, and some passives. The prototype board will power the PIC24, so I no longer need the power section here, and the PGED/PGEC lines and MCLR will just be directly connected to the target MCU on the prototype board, so I won’t need the connector. If I place the PIC24 and EEPROM on one side, and the Crystal and Passives on the other side of the PCB, it should take up very little room and give me all the functionality I need.