@SergeP took a closer look to NEOpixel and created a new version.
Please see attached file.
And this is explanation from @SergeP
After FIFO maximizing everything works in my case. I've found that, as I wrote, there are two classes of high-priority delays (it may be other interrupts) which delay neopixel_handleInterrupt() call. One class is about 1 original buffer, so about 1,25us*64bit=80us, another one is about 4..5 times longer - 300...400 us.
Now I use full RMT buffer and it's enough to neopixel code work. But it is impossible to use pulses on pins at the same time. This was not possible before my changes, too. But it was possibility to fix that, while my code makes it principially impossible.
I've just created pull request with the changes. File in the pull request is slightly different because I try to make it more readable. So I've changed one variable name and removed some unused code.
Where did you do the pull request - cant see it in espruino github?
I hope you can. I am not sure.
Can't see anything here. Is it in your copy?
It's now in https://github.com/espruino/Espruino/pull/1621
Don't worry about formatting, just type in the text and we'll take care of making sense of it. We will auto-convert links, and if you put asterisks around words we will make them bold.
For a full reference visit the Markdown syntax.
© Espruino, powered by microcosm.
Report a problem