January 11, 2025

Driving an LED panel - can we do it faster?

Today is a great success, I am doing things with my panel for the first time. Using gpio (emio) I can send lines to the panel at about 1100 Hz. Divide that by 32 and that means I can get a 34 Hz refresh rate, which is sort of entertaining, but entirely inadequate for anything real.

Smarter code to send colors

The time to send a line is dominated by the time to clock colors into the 64 pixels in a row. We currently make 6 emio_write() calls (one per color). What if we combine these into one? That reduces 384 calls to 64 which ought to be a big win.

After doing this, I use a stopwatch and measure 4.1 seconds to send 10,000 lines. That is 2440, which is not the 5x improvement I had hoped for. More like 2x -- but it would allow a 76 Hz refresh rate rather than 34.

Run the CPU faster

It occured to me to check, and my first check indicated that the CPU was running at 10 Mhz. It turned out that this was entirely a mistake and the CPU is running at 666 Mhz -- as fast as possible.

Details about all this are here:


Have any comments? Questions? Drop me a line!

Tom's Electronics pages / tom@mmto.org