You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are 2 parts to this issue. First, what is the exact theoretical timing that the WS2812 expects? (The WS2811 probably has similar problems, but let's just concentrate on the WS2812 for now.) I found a datasheet that says:
Second part: the actual timing of the esp8266 output (as captured on a scope) is slightly larger than the values listed above, because the loop does timing based on a CPU tick counter but does not take into account overhead from the loop and setting the GPIO registers. The actual values measured are, with esp8266 running at 80MHz:
T0H between 0.417us and 0.5us
T1H between 0.833us and 0.875us
TH+TL between 1.250us and 1.33us
Questions and issues are:
What theoretical values for the timing should a neopixel driver aim for to be compatible with the majority of WS2812 devices?
The esp8266 driver needs to be fixed to include the overhead of the loop, likely this is as simple as subtracting a fixed value from time0, time1 and period.
The text was updated successfully, but these errors were encountered:
There seems to be a timing problem controlling neopixels on esp8266 based boards. Reports on the forum are here: https://forums.adafruit.com/viewtopic.php?f=57&t=103097 https://forums.adafruit.com/viewtopic.php?f=57&t=103844 , and on the MicroPython github: micropython/micropython#2465
There are 2 parts to this issue. First, what is the exact theoretical timing that the WS2812 expects? (The WS2811 probably has similar problems, but let's just concentrate on the WS2812 for now.) I found a datasheet that says:
In the code in this repo following values seem to be used (respectively to the values above, all in microseconds):
There seems to be a bit of a discrepancy here.
Second part: the actual timing of the esp8266 output (as captured on a scope) is slightly larger than the values listed above, because the loop does timing based on a CPU tick counter but does not take into account overhead from the loop and setting the GPIO registers. The actual values measured are, with esp8266 running at 80MHz:
Questions and issues are:
time0
,time1
andperiod
.The text was updated successfully, but these errors were encountered: