Makuna / NeoPixelBus

An Arduino NeoPixel support library supporting a large variety of individually addressable LEDs. Please refer to the Wiki for more details. Please use the GitHub Discussions to ask questions as the GitHub Issues feature is used for bug tracking.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

False positive error report

BlueAndi opened this issue · comments

The "NeoEsp32RmtMethod" is used to update the strip.
After a Show(), the CanShow() is called periodically to determine when the strip update is finished.

CanShow() calls IsReadyToUpdate() method:

bool IsReadyToUpdate() const
{
return (ESP_OK == ESP_ERROR_CHECK_WITHOUT_ABORT(rmt_wait_tx_done(_channel.RmtChannelNumber, 0)));
}

The rmt_wait_tx_done() is called with a timeout of 0, which causes an error report in case the transfer is not finished yet.
See
image

This pollute the log and causes that the system slows down.

Could we skip using the ESP_ERROR_CHECK_WITHOUT_ABORT() in especially this case?

One single error log looks like:

ESP_ERROR_CHECK_WITHOUT_ABORT failed: esp_err_t 0x107 (ESP_ERR_TIMEOUT) at 0x4008862b
file: ".pio/libdeps/default/NeoPixelBus/src/internal/methods/NeoEsp32RmtMethod.h" line 599
func: bool NeoEsp32RmtMethodBase<T_SPEED, T_CHANNEL>::IsReadyToUpdate() const [with T_SPEED = NeoEsp32RmtSpeedWs2812x; T_CHANNEL = NeoEsp32RmtChannel6]
expression: rmt_wait_tx_done(_channel.RmtChannelNumber, 0)

NeoPixelBus: v2.7.9
Platform: espressif32 v6.5.0
Framework: arduino
Board: esp32-S3 DevKitC-1

The timeout shouldn't be an error, or they should provide a routine you can call to check/poll the state.

But your suggestion sounds like a good work around.

https://github.com/Makuna/NeoPixelBus/tree/Esp32RmtSilentTimeout contains the changes to silence timeouts.

Give it try, if it works I will merge into master before the next release.

Thanks, will try and come back with feedback.

Successful tested, you can integrate the bugfix. Thanks for the fast and good support!!