This is the third attempt at designing an extensible device programmer and it is currently a work in progress.
EMDP3 stands for "Extensible Multiple Device Programmer, revision 3." Most other vendors tend to call these systems "universal programmers", but I feel that the word "universal" sets the wrong level of expectation, since there are many parts which can not be programmed on a "universal prorgrammer" for a variety of reasons.
The EMDP3 consists of the following over all sub-systems:
The EMDP3 requirements are:
The EMDP3 goals are:
The EMP3 is my third design of an extensible programmer. Neither, EMP1 nor EMP2 made it past the design stage.
The concept behind the EMP1 was that there would be a main host programmer board (Rev. D) and a bunch of adaptors, where there would be an adaptor for each basic microcontroller family. What I discovered is that the adaptor boards cost as much as the main processor board. The reason why was because the ZIF-40 socket is actually quite expensive.
The EMDP2 basically said let's just add a microcontroller to each adaptor board. Thus, the main controller board was little more than an RS-232 level converter and and programmable voltage output power supply. Again, the adaptors were still pretty expensive, so I was not very satisfied how this design worked out.
Ultimately, I realized that adaptors should not be designed around a particular microcontroller family, but instead around a package. Thus, there should be one adaptor for all parts that come in DIP packages, one adaptor for SOIC parts, etc. Each adaptor, needs to have a smaller connector that allows the bus signals to be routed to the correct pins on the appropariate package. I call these smaller rewiring connectors "plugs".
The other realization that was hammered into me is that newer parts are coming out that can not tolerate 5 volts. Thus, the entire system had to have a bus whose voltage could be reduced. This is accomplished by having two microcontrollers in the base where the first microcontoller operates at 5 volts and it can set the operating voltage of the second microcontroller.
The EMPD3 system is designed around a 37 pin D-connector which contains the bus. The bus has ground, 2 variable supply voltages and the rest are digital data.
Given the proliferation of in-circuit programming, I will also be defining a 9-pin connector D-connector that just has ground, 2 variable supply voltages and 6 digital I/O lines.