Browse over 10,000 Electronics Projects

TV-Based Oscilloscope

TV-Based Oscilloscope

An ordinary TV has been turned into a digital storage oscilloscope with a sampling rate of 160 ksps. This article explains how to use an LPC2138 microcontroller to build a high-resolution system of your own.

In order to obtain high-resolution video, I had to generate a TV signal via the hardware as much as possible. The LPC2138 microcontroller has a PWM block and SPI communication module. The former can be used for generating sync pulses. The latter can be used to generate the video stream! Want to know a secret? I already tried this with Cypress Semiconductor PSoC chips. Unfortunately, the capabilities of the PSoC SPI module did not allow me to obtain a horizontal resolution of more than 256 pixels.

The useful feature of the LPC2138’s (also called the synchronous serial port (SSP)) SPI1 block is the fact that it can operate in a continuous SSI mode. It has an eight-frame FIFO buffer and can send 16-bit frames. This means that it can process a 128-bit block without participation from the software. Of course, to send more bits, the software must reload the FIFO buffer with additional data.



The algorithm for generating a single TV line is simple. Every 64 µs for PAL (or 63.536 µs for NTSC), the PWM block produces a horizontal sync pulse and simultaneously generates an interrupt that initiates the sequence of SSP cycles for a single TV line.

Because the SSP module has only 128 bits of its own memory (eight 16-bit FIFO frames), it can’t contain all the data for a 512-pixel line. To create a continuous bitstream, a new chunk of data should be loaded into the SSP as soon as there’s room for it. For this purpose, I use the “half empty” interrupt. This means that every time the FIFO becomes half empty, it requires the new portion of data. I assigned both the PWM and SSP interrupt requests to the FIQ category because the FIQ has a high priority and the fastest possible latency (see Figure 3). The disadvantage is that the FIQ handler should first identify which source is requesting the interrupt. Although it isn’t a recommended method, this is a unique way to create a glitch-free video when the other tasks use the vectored interrupt controller. (In this case, they must use only the IRQ category of interrupts.

Visit Here for more.