LEDs for Monitoring Signals
Debugging embedded systems often requires observing very short or fast signals, for example: Is there activity on UART or I2C? Is the clock signal running? Did we get an interrupt signal into the MCU? In many cases answering these questions requires using an oscilloscope or a logic analyzer and probing the signals in question—but that’s cumbersome and requires a more elaborate setup.
Often simple LEDs driven by a BJT or a FET are used to indicate signal states. Unfortunately, such a simple approach fails if the signal pulses are shorter than 10–20 milliseconds or the frequency is higher than 50–100 Hz. Pulses quickly become invisible to the eye, and fast toggling signals just slightly dim the LED brightness.
Blinker Pulse Extenders
To conveniently monitor signal pulses in the order of few micro-seconds (µs) or nano-seconds (ns)—and high-frequency signals in the MHz range—we need something else. Something ideally as convenient to use as simple LEDs but with extra features avoiding the LED limitations mentioned above.
So, recently I designed specialized pulse extenders called Blinkers using a custom IC. They take short or fast-toggling signals and extend their pulse duration such that they are easily observable on the built-in LEDs. The basic principle of operation is illustrated below, and it works in a similar way for both positive and negative pulses.
Each of the Blinker modules has five input channels and five corresponding LEDs to indicate signal state. Additionally, there is a voltage monitor channel: it works as a window comparator that monitors a 3.3V or a 1.8V power rail. Its dedicated LED shows if the power rail is within ±5% of the nominal voltage. As with the other input channels, short trips outside the ±5% limits are extended for clear visual indication. The entire module is very small and breadboard-friendly.
It’s amazing how much you can tell about the functionality of your design by just looking at the Blinkers! You literally see sensor data readouts (I2C), Flash reads and writes (SPI), MCU interrupt lines, SWD programming and debugging, and so on. In many cases I no longer need to use a scope. And since they are small I can use multiple modules to monitor as many signals as I want! If you get a chance I am sure you will love them too!