LAUGHTON ELECTRONICS |
||
Programming Device for MCS-48 Microcomputers |
||
This article describes equipment created for use in my own computer lab. | ||
|
Single-chip computers deliver a lot of bang for the buck. There's immense problem-solving power inherent in programmable logic, and when the processor, memory and Input-Output have been shrunken onto a single piece of silicon, a project's fabrication costs and design overhead diminish as well. In the early 1980s I built a tool which allowed me to deploy and exploit these devices to my customers' advantage. Single-chip computers, or microcontrollers (µC's), attracted my attention early in the game. (I'd previously rolled my own programmable processors using just an EPROM and some discrete logic.) The first generation of µC's were a real breakthrough, even though they offered limited options in regard to nonvolatile program memory: the only choices were mask-programmable ROM (suitable only for mass-market products), and ultraviolet-erasable EPROM. EPROM-based µC's are well suited for low-volume applications, but a special device is required to write the program bytes into the nonvolatile memory, and in the early days these devices carried hefty price tags. Luckily, however, Intel published the actual interface spec's for programming their MCS-48 series EPROM µC's (ie, the 8748, 8749, 8741A and 8742). Armed with that information I undertook to build a Programmer myself. And, because the interface requirements are similar, I allowed for programming ordinary EPROM's as well — classic parts such as the 2716, 2732 and 2764. The programming procedure for all of these chips is a repetitive, byte-by-byte process. An address is applied to the chip, and likewise the byte of data which is to be stored at that address. Control signals get toggled, a 50 ms programming pulse is applied, and the byte is read back to verify successful programming. The process repeats until all bytes are completed. An adjunct to the procedure is the application of some comparatively high voltages. Although the chips generally operate on 5 volts, during programming certain pins receive 12.5, 21 or even 25 volts. For the MCS-48 chips there are three high voltage signals involved, all of which are switched under control of the host computer -- in this case, one of my early Forth machines. Two of the high-voltage signals have max & min spec's for rise time and fall time; it's necessary for these signals to ramp up and down with a trapezoidal rather than rectangular waveform. One of the high-voltage signals is also required to “tri-state,” or float, on command. Each high-voltage ramp generator is just an op-amp configured as an integrator, except with zener diodes used in the feedback loop to arrest the output swing. A complementary emitter-follower transistor pair buffers the output to provide the necessary current. Tri-state capability is provided by a MOSFET operating as a transmission gate. All the necessary sequencing is provided by a Forth program running on the host computer. (I also wrote an MCS-48 assembler in Forth.) One of the host's 65C22 multi-IO chips easily supports the Programmer interface. One of the byte-wide ports sends and receives data bytes; the other is used for individual control lines. Most of these get boosted beyond TTL levels by a 7406 open-collector inverter. (Nowadays I'd use a 74C907 instead.) Address information, which might otherwise require more than a dozen lines, is carried by signals CB1 and CB2. These implement a tidy serial link from the 65C22's on-chip shift register to a pair of 4094's on the programmer board. Elsewhere on this Web site I describe some real-world problems I solved using microcontrollers. The chips involved are Intel MCS-48 series, the Motorola 68HC705 (for which a reasonably-priced programmer is available) and the Texas Instruments MSP series — which use modern Flash memory, and conveniently require no special voltages or programming equipment at all, just a serial connection from the host PC. |
|
|
||