First of all: great library.

First of all: great library. I recently bought a blinkytape and started experimenting with it - great fun. I have since ordered longer strips of the same type (w/o controller) - bigger projects ahead.

I have a timing question: I can see (100MHz scope), that the 0-pulses are 440ns and the 1-pulses are 820ns. So far, so good. But the period is 1940ns; shouldn’t it be ~1250ns? Or is that something the library can’t achieve (with scaling and more stuff going on)? I just thought it would, because there are explicit warnings for “not enough cycles”, which are not triggered in my programs.

The 1940ns is solid, by the way; hardly any jitter at all (1982ns average for 1440bits). So if this is expected, I’m satisfied - I just thought it would be ~1250ns.

Details:
Library is RC5, Arduino IDE is 1.0.5+dfsg2-1, Hardware is blinkytape (arduino leonardo compatible), Linux Mint Cinnamon (shouldn’t matter)
Init is LEDS.addLeds<WS2811, LED_OUT, GRB>(leds, LED_COUNT);

Further investigation: each 3-byte group is the same, and in each byte there is only a single bit fluctuating: The timing is (clock cycles): 31, 31, 31, 31, 33, 31, (34 / 35 / 33), 32. I assume that is all happening in the third part of the bit, with the first two parts being exactly 7 and 6 clocks long. I’ll try different compiler versions next.

OK, nevermind. Solution: Do NOT use the arduino environment from your distribution. Use the official one from arduino.cc, they bundle a known working avr-gcc…

Everything’s perfect now!

Yeah, I’ve started working on hand written/timed asm for avr to get around compiler inconsistencies.