-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
--- a/lib/led-matrix.cc
+++ b/lib/led-matrix.cc
@@ -660,7 +660,7 @@ RGBMatrix *RGBMatrix::CreateFromOptions(const RGBMatrix::Options &options,
// For the Pi4, we might need 2, maybe up to 4. Let's open up to 5.
// on supproted architectures, -1 will emit memory barier (DSB ST) after GPIO write
if (runtime_options.gpio_slowdown < (LED_MATRIX_ALLOW_BARRIER_DELAY ? -1 : 0)
- || runtime_options.gpio_slowdown > 5) {
+ || runtime_options.gpio_slowdown > 10) {
fprintf(stderr, "--led-slowdown-gpio=%d is outside usable range\n",
runtime_options.gpio_slowdown);
return NULL;
@hzeller this is both an FYI and also kind of asking for help.
I got some ABC flexible panels, if I connect just 3 of them on a Pi02wl, one per chain, they work with a slowdown of 5, for 5 is already terrible for a pi02w (probably wouldn't work at all with a Pi4).
Now the super weird thing is if I plug in 2 panels per channel, then I start getting all kinds of noise, and I have to increase the slowdown to 8 :(
My ribbon cables are not that long, the noise is on all 3 channels, I have triple redundant grounds and double redundant power.
The exact same thing worked with ABCDE panels and a slowdown of 2, but obviously those different chips do not like the (I assume) bad waveform that comes out of a Pi.
Questions
-
am I correct that basically I have no way around this? if I have noise with short enough ribbon cables, I'm forced to increase slowdown, even past 5?
-
are ABC /32 panels (128x64) inherently worse than ABCDE, or did I just get unlucky with the chips on these specific panels?
