Microprocessor RS-232 Reset
Introduction This circuit allows a remote microprocessor to be reset by a controlling host over a remote RS-232 or similar protocol serial line. With the use of a program loader on the remote host, a program may be downloaded and run. This allows a target processor to run different code in RAM, thus getting rid of the need to burn multiple EPROMs. The circuit is usually used for developing code on a target processor, but it can also be used for permanent applications where the target program lives on a host system's disk. A program loader for the Z80 CPU is available below. The circuit has also been used with the Motorola 68HC11 EVB and the BUFFALO monitor program. See my Linux Cross Assemblers page for more info.
Theory This circuit detects long duration zero level signals (breaks) on a NRZ (non return to zero) serial data line. Normal serial characters spend a short time in the zero state, and do not cause a reset. Break characters last long enough to cause the output of the circuit to switch. The 10K/1N4148 parts keep the 2.2uF capacitor charged up. Low input signals go through the 10K resistor and slowly pull the charge on the 2.2uF capacitor down. High input signals quickly recharge the capacitor through the 1N4148 diode. A break signal lasts long enough to discharge the 2.2uF capacitor to the point where the following gate changes state.
The 1N4148 on the right allows a manual break switch to be used on the target CPU, pressing such a switch does not short out the preceding 74HC14 gate. This circuit could be built with just 2 schmidt trigger non inverting buffers, the 74HC14 was chosen because it is a common part. The parallel inverters are also optional, single inverters work fine.
Z80 Program Loader Here is a Z80 assembly language program that functions as a bootstrap loader for use with the Microprocessor RS-232 Reset circuit. This code runs on an ancient SD systems SBC200 Z80 circuit board and can be made to work with other Z80 boards by changing the initialization and serial port functions.