Electronic – ICSP or Pre-Programmed Microcontroller


I've designed a PCB for small scale production; currently I'm hand soldering them in batches of 20 at a time. This PCB uses an ATMEGA168 microcontroller which I program before soldering to the board – this method works well for me at the moment.

I'm looking at having a batch of 200 boards manufactured and assembled for me as the product I've designed seems to be quite popular. Would it be better practice to either include an ICSP header onto the board or keep on pre-programming the ICs myself? Re-programming of the board after manufacture or assembly isn't an intended or required feature.

I'm unsure of how this is done in a larger scale production environment? Adding an ICSP header would increase the cost of manufacture slightly so is pre-programming a standard practice?

Best Answer

I would suggest always including a header in that kind of quantity (small). If you get to larger quantities you can consider pads for pogo pins (you'd have to make a fixture to hold the PCB in alignment) or, in your quantities, you could use one of the Tag Connect cables which require only holes and unpopulated pads (they snap onto the board).

enter image description here

As well as allowing you to recover from a need for a programming update, this will allow you to have an assembly house populate the boards before programming, which could improve logistics.

Pre-programming is certainly an option, even in production quantities (you can even have the distributor do it for you), but it seems to be mostly used in the most simple of applications. Usually chips on boards are programmed (or capable of being programmed) post-assembly.