-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
(0.15) RMT High-priority Interrupt driver backport #4980
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Pull the RMT High-priority Interrupt driver in to a vendored local library, pending inclusion in upstream NeoPixelBus. Driver is enabled only for XTensa chips; there's some unresolved issue with nested interrupts on RISCV.
PlatformIO's Library Dependency Finder will take care of it based on the #include.
While these were both fortunately included in Arduino.h, as @coderabbitai suggests, it's best practice to be explicit for anything one uses directly.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@willmmiles one question before I merge this into WLED-MM Or maybe not needed for NeoPixelBus < 2.8.3 ? |
|
@coderabbitai this PR was created with NeoPixelBus release 2.8.3 in mind. Would it also help to remove flickering artefacts when using NeoPixelBus release 2.7.5? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 198 🏁 Script executed: Length of output: 29237 🏁 Script executed: Length of output: 61414 🏁 Script executed: Length of output: 2804 🏁 Script executed: Length of output: 4830 🏁 Script executed: Length of output: 2343 🏁 Script executed: Length of output: 9133 🌐 Web query: 💡 Result: I can look that up — can you tell me where you saw the symbol (compile error, issue link or log) and which ESP/Arduino/ESP-IDF and NeoPixelBus versions you’re using? If you prefer, I’ll search GitHub/NeoPixelBus issues and releases now for when that symbol appeared. 🌐 Web query: 💡 Result: Short summary of API/behavior changes from NeoPixelBus 2.7.5 → 2.8.3
Key changes (user-visible API/behavior):
Practical impact:
References
If you want, I can:
References: 🏁 Script executed: Length of output: 1379 🏁 Script executed: Length of output: 24330 🏁 Script executed: Length of output: 3033 🏁 Script executed: Length of output: 222 🏁 Script executed: Length of output: 768 🏁 Script executed: Length of output: 262 @softhack007 Based on my analysis of the code, this PR would likely NOT work with NeoPixelBus 2.7.5 without modifications. Here's why: Key DependenciesThe RMT High-priority Interrupt driver has a hard dependency on NeoPixelBus 2.8.3+ for two main reasons:
About the Flickering FixThe flickering artifact fix itself is achieved through the driver's high-priority interrupt handling implementation (in the assembly ISR shim and C++ interrupt code), which operates at the ESP-IDF level. This mechanism is independent of the NeoPixelBus version - it's the driver's own interrupt management that solves the flickering issue. Path Forward for 2.7.5 CompatibilityIf you need this to work with NeoPixelBus 2.7.5, you would need to:
Alternatively, consider updating WLED-MM to NeoPixelBus 2.7.9 (which you have experimental compat builds for in platformio.ini) or 2.8.3 to get this fix. Would you like me to help investigate what specific changes would be needed for 2.7.5 compatibility, or would upgrading NeoPixelBus be the preferred approach? 🧠 Learnings used |
Backport of #4890 for 0.15. Solves RMT flickering issues on XTensa platforms.