From dff20c41adaa50488841830ee50de50ba6140002 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 28 Nov 2021 22:48:36 +0100 Subject: [PATCH] WS2812 RMT work-around --- tasmota/xlgt_01_ws2812.ino | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tasmota/xlgt_01_ws2812.ino b/tasmota/xlgt_01_ws2812.ino index 3a9e396f3..763f3e89e 100644 --- a/tasmota/xlgt_01_ws2812.ino +++ b/tasmota/xlgt_01_ws2812.ino @@ -224,6 +224,9 @@ void Ws2812StripShow(void) } } strip->Show(); +#ifdef ESP32 // workaround for SPI conflict + rmt_wait_tx_done((rmt_channel_t) USE_WS2812_RMT, 50/portTICK_PERIOD_MS); +#endif } int mod(int a, int b) @@ -497,6 +500,9 @@ void Ws2812Clear(void) strip->ClearTo(0); strip->Show(); Ws2812.show_next = 1; +#ifdef ESP32 // workaround for SPI conflict + rmt_wait_tx_done((rmt_channel_t) USE_WS2812_RMT, 50/portTICK_PERIOD_MS); +#endif } void Ws2812SetColor(uint32_t led, uint8_t red, uint8_t green, uint8_t blue, uint8_t white) @@ -523,6 +529,9 @@ void Ws2812SetColor(uint32_t led, uint8_t red, uint8_t green, uint8_t blue, uint if (!Ws2812.suspend_update) { strip->Show(); Ws2812.show_next = 1; +#ifdef ESP32 // workaround for SPI conflict + rmt_wait_tx_done((rmt_channel_t) USE_WS2812_RMT, 50/portTICK_PERIOD_MS); +#endif } } @@ -564,6 +573,9 @@ void Ws2812ForceUpdate (void) Ws2812.suspend_update = false; strip->Show(); Ws2812.show_next = 1; +#ifdef ESP32 // workaround for SPI conflict + rmt_wait_tx_done((rmt_channel_t) USE_WS2812_RMT, 50/portTICK_PERIOD_MS); +#endif } /********************************************************************************************/