Electronic – What options are there for programming MCU’s in production

microcontrollerprogrammer

For my Super OSD project I'm going to need to program large batches of MCU's, probably about 10-15 boards an hour. I could just use my trusty PICkit 2 to program them (there are two – maybe three – on each board) but it would be very laborious to load each file (up to 128KB and 256KB in size), hit program, and repeat for each MCU, and probably wouldn't allow me to meet my target speed. Also, the MCU's are surface mount, so I have to have headers on the board to allow this. Ideally, I'd like to remove these headers, but it may not be an option.

So what options are there for mass programming of MCU's – are there faster ways to do it? I'm kind of on a budget of less than $100 USD, so things like Microchip's MPLAB PM3 at $895 USD, while nice, wouldn't be an option.

I'm dealing with PIC microcontrollers of various types. There's a PIC16F887, PIC24FJ64GA002 and dsPIC33FJ128GP802. However, I am also interested in options for AT32 and STM32 processors, as I may also be using them.

Please note, I'm not currently considering ordering chips from the manufacturers pre-programmed because the software may change by the time the chips arrive, and because of the additional cost involved.

Best Answer

What we do for production, is to first load a program into the PIC that tests out the board (using a small test board that independently verifies the 3.3v rail is within spec using a couple of comparators, and then we use the ADC on the PIC to check everything else out. We had enough pins left over to allow this (it required some extra resistors to act as voltage dividers for the voltages over 3v).

After the tests pass, the real production code is flashed into the micro. Some additional tests are run, and the PCB is ready for assembly into a case.

This is all done via a program on the PC that only requires an operator to connect the board, click one button, and wait for the result PASS/FAIL. All test results (including ADC readings) are logged. The entire process (including the programming of the PICs via an ICD 3) is controlled via the PC program, which runs batch scripts to do the actual programming. Communication to the PIC to control the tests is done via one of the UARTs, whose pins are brought out to the test board (so in addition to the pins required for programming, we also have TX/RX as a minimum).

We set up several stations like this at our contract manufacturer.

BTW the ICD 3 is much faster than the ICD 2 (USB 2.0 vs 1.1).