I recycled components from old builds to make this 3-pixel test rig. It will plug into the bottom headers of the Tiva C launchpad using vbus, gnd, and PD0.
I'm thinking of using a TIVA C Launchpad as the first hardware platform to drive these. This has a chip that can run at 40 MHz (using external crystal to drive the PLL).
There are 5 timings for the ws2812S:
350ns
800ns
700ns
600ns
>50us
If I can run a timer with two different compare interrupts I can use the following values:
350ns = 14 cyles @ 40 MHz
800=32
700=28
600=24
Interrupt scheme:
If this is a digital 0: Set compareA to 14 and compareB to (32+14)
If this is a digital 1: Set compareA to 28 and compareB to (24+28)
drive pin high
start counter
at compareA:
drive pin low
at compareB:
drive pin high
look up next bit and set compares accordingly
I will need to account for the overhead of lookup and set.
For a 0 you don't need to really wait, from what I could find you can just toggle the line and it will read a 0 ( presuming your average timing still work out the 1.25 micro seconds per bit ). It seems like the ws2812b starts computing when the line goes high, if it drops in the first half of the 1.25 microsecond cycle it's a 0, in the second half it's a 1.
Take a look at
https://github.com/cnlohr/ws2812esp8266
The Esp8266 can run at 160 MHz ...leaving plenty of time for making fun patterns...