This is the third attempt at designing an extensible device programmer and it is currently a work in progress.

EMDP3 System


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:

EMDP3 Bases
An EMDP3 base takes commands downloaded from a host computer via a host computer connection (e.g. RS-232 serial, USB, Internet, etc.) and generates appropriate signals for the EMDP3 bus.
The EMDP3 Bus is a 37 wire bus that connects an EMDP3 to an EMDP3 adaptor.
EMDP3 Adaptors
An EMDP3 adaptor plugs into the EMDP3 bus and provides a direct electrical connection to the chip being programmed. Most adaptors have rewiring plugs that direct signals from the EMDP3 bus to specific pins of the chip being programmed.
Any EMDP3 adaptor can be plugged into any EMDP3 base and still interoperate.

Requirements and Goals

The EMDP3 requirements are:

The EMDP3 system is designed around three open (i.e. published and royalty free) standards:
The bus is provides connections between an EMDP3 base and an EMDP3 adaptor.
EMDP3 Interpreter
The programming algorithms are written for a microprocessor independent interpreter that resides in each EMDP3 base.
EMDP3 Protocol
The communication between the host software and microprocesor is also open and standardized.
The EMDP3 standards are designed to easily support the addition of new programming algorithms for new devices. A new device will typically only require the addition of an inexpensive rewiring plug for a preexisting EMDP3 adaptor.
There is no "give" on these requirements.

The EMDP3 goals are:

A basic system can be assembled for less than $100 (US) and program a very interesting set of devices.
Hobbyist Friendly
A new adaptor can be bread boarded on .1 inch perforated board. The basic EMDP3 base uses no difficult to solder surface mount parts. Commonly available parts are used through out.
No Preprogrammed Parts
I suspect most people will opt for having somebody else preprogram the microcontrollers required for each EMDP3 base. However, there should also be a path that allows people to take bare unprogrammed microcontroller and get it programmed without having to beg for some time on somebody else's programmer.
Whether or not a given EMDP3 adaptor or base meets the goals above can be a bit more subjective than requirements.


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.

Copyright © 2003-2006 by Wayne C. Gramlich. All rights reserved.