Interface for programming 4 same PICs at once with PICKit 3 - Page 1
Forum section: electronics / general

author: microvia
author_rank: Regular Contributor
timestamp: September 15, 2025, 01:22:07 pm
content: Hi,I would like to find a way to easily program my pcb panels (4 pcbs each) using a single ICSP port on the breakaway edges of the panel to program.I understand that direct parallel programming isn't possible due to the cumulative current draw, but is there a simple interface or adaptor to allow this ?

author: Ian.M
author_rank: Super Contributor
timestamp: September 15, 2025, 02:50:55 pm
content: PGC/ICSPCLK and PGD/ICSPDAT can each be wired in parallel across all devices provided external nMCLR is enabled for all devices and remains enabled after programming. You then need to provide all devices with Vdd power and switch Vpp to each device in turn, run a programming cycle keeping all the other nMCLR pins grounded to keep the other devices inactive and tri-stated, then switch to the next device.For older PICs requiring high-voltage programming, you may have to handle up to 13V on Vpp and some mA of current so relay switching is advisable. Modern PICs use code entry to programming mode and Vpp never exceeds Vdd, and the nMCLR/Vpp pin is a unidirectional logic input so a simple logic level '1-hot' demux will do to drive them e.g. 74HC238, with the programmer's Vpp going to EN. You will need some scriptable IO pins attached to your programming station's control PC to select the PIC to program. You will probably require an external source of Vdd as the programmer is unlikely to be able to supply sufficient for three idle boards + the active one. This could be controlled by programmer Vdd or by one of the scriptable IO pins.Alternatively, for a manual programming station, simply use a four pole four way switch to route Vpp to one PIC while grounding all the others.This approach, albeit with manual selection of the active Vpp by jumper, has been used by Microchip themselves, on demo and development boards that come with a default MCU soldered in place, but allow you to plug in a different MCU on a PIM over it.Note that the programmer itself may need to have a high output drive capability usually only found on pro grade tools, and you need to keep all the commoned ICSP connections and lead back to the programmer as short as possible to minimise capacitive loading.

author: Smokey
author_rank: Super Contributor
timestamp: September 15, 2025, 08:02:18 pm
content: For my in-panel programming of ARM stuff I designed a SWD multiplexer board. It doesn't do them in parallel, but it does do them one at a time and handles all the switching between boards. Also handles power switching and monitoring so I can see if there is a short or something before it starts programming.

author: microvia
author_rank: Regular Contributor
timestamp: September 17, 2025, 05:58:49 pm
content: Ok so basically the panels need ICSP tracks through the tabs and a custom PICKit interface to program the PICs individually, which involves sniffing the firmware coming out of the PICKit and apply it to each chip. Quite complicated and not sure how feasible this is. It would be better to design a multi-programming interface from scratch which takes the HEX from MPLAB (or a HEX on a USB) and manages everything. Not really worth the effort in my case unless this already exists as a DIY project. I'll just program each pcb individually using the Programm-To-Go option and a Pogo clip on the ICSP header.

author: Ian.M
author_rank: Super Contributor
timestamp: September 17, 2025, 06:35:44 pm
content: No, there's no 'sniffing firmware'. The PICkit 3 sends a command to the selected PIC and checks the response. This happens multiple times in a programming session. It is *NOT* a gang programmer so it can only handle a single target per session. My description above is how to switch the target so the PICkit 3 can do sequential programming of multiple devices without moving its ICSP connector to a different header.

author: microvia
author_rank: Regular Contributor
timestamp: September 17, 2025, 08:19:53 pm
content: What would be interesting is a dedicated circuit able to program serveral PICs (or other MCUs) simultaneously with parallel programmation processes, and a header with common PGC/PGD and individual MCLR/VPP. Else, you'd spend almost as much time programming your PICs as with one PICKit in Program-To-Go mode (in which case your best option is N PICKits running at the same time).

author: nctnico
author_rank: Super Contributor
timestamp: September 17, 2025, 09:13:11 pm
content: I have seen a product in which 10+ PICs where programmed in parallel. The pin carrying the response from the PIC to the programmer was connected to the first PIC. The rest was supposed to become programmed just like the first one.

author: thm_w
author_rank: Super Contributor
timestamp: September 17, 2025, 11:51:58 pm
content: mike always suggests this one:https://www.microchip.com/en-us/microchipdirect/programming-servicesIf you can either program a bootloader, or have finalized stable code already.

author: microvia
author_rank: Regular Contributor
timestamp: September 21, 2025, 06:35:58 am
content: I know Microchip's programming service. I was looking for a way to program a whole panel to update the firmware, like as a PIC or other MCU which can handle what the PICKit does, but in parallel.

author: fchk
author_rank: Frequent Contributor
timestamp: September 21, 2025, 10:39:20 am
content: A MPLAB SNAP is only 10$. Nothing prevents you from using four of them in parallel. They should have unique serials so you know which one is which.Most modern 8-bit PICs and all 16 and 32 bit PICs should do LVP.