Happens occasionally with a very small number of LEDS (count=10), indicates that either I2S_TX_REMPTY_INT_ST somehow happens twice, or happens before i2s_out_i2s_start(). Probably the later, because I2S_OUT_EOF_INT_ST unconditionally sets the I2S_TX_REMPTY_INT_ENA on the end descr, and i2s_out_i2s_start() is only called by the leds task after i2s_out_dma_start(). Somewhat odd, because i2s_ll_tx_start() is only called after i2s_out->stats_out_timer_start is set, and I wouldn't expect the transmit FIFO is empty condition to happen after DMA completes, but before the i2s device is started...?
assert failed: stats_timer_update stats_timer.h:35 (start)
Backtrace: 0x40081e16:0x3ffb0fb0 0x4008a635:0x3ffb0fd0 0x400931ad:0x3ffb0ff0 0x400897d1:0x3ffb1110 0x4008313d:0x3ffb1140 0x40179343:0x3ffbd780 0x400d52fa:0x3ffbd7a0 0x4008bd2d:0x3ffbd7c0 0x4008ee71:0x3ffbd7e0
0x40081e16: panic_abort at /opt/esp-idf/components/esp_system/panic.c:408
0x4008a635: esp_system_abort at /opt/esp-idf/components/esp_system/esp_system.c:137
0x400931ad: __assert_func at /opt/esp-idf/components/newlib/assert.c:85
0x400897d1: stats_timer_update at /build/components/stats/include/stats_timer.h:35
(inlined by) stats_timer_stop at /build/components/stats/include/stats_timer.h:51
(inlined by) i2s_out_intr_i2s_done at /build/components/i2s_out/esp32/intr_iram.c:55
(inlined by) i2s_intr_tx_rempty_handler at /build/components/i2s_out/esp32/intr_iram.c:118
(inlined by) i2s_intr_handler at /build/components/i2s_out/esp32/intr_iram.c:141
0x4008313d: _xt_lowint1 at /opt/esp-idf/components/freertos/port/xtensa/xtensa_vectors.S:1118
0x40179343: cpu_ll_waiti at /opt/esp-idf/components/hal/esp32/include/hal/cpu_ll.h:183
(inlined by) esp_pm_impl_waiti at /opt/esp-idf/components/esp_pm/pm_impl.c:853
0x400d52fa: esp_vApplicationIdleHook at /opt/esp-idf/components/esp_system/freertos_hooks.c:63
0x4008bd2d: prvIdleTask at /opt/esp-idf/components/freertos/tasks.c:4099 (discriminator 1)
0x4008ee71: vPortTaskWrapper at /opt/esp-idf/components/freertos/port/xtensa/port.c:142
Happens occasionally with a very small number of LEDS (
count=10), indicates that eitherI2S_TX_REMPTY_INT_STsomehow happens twice, or happens beforei2s_out_i2s_start(). Probably the later, becauseI2S_OUT_EOF_INT_STunconditionally sets theI2S_TX_REMPTY_INT_ENAon the end descr, andi2s_out_i2s_start()is only called by the leds task afteri2s_out_dma_start(). Somewhat odd, becausei2s_ll_tx_start()is only called afteri2s_out->stats_out_timer_startis set, and I wouldn't expectthe transmit FIFO is emptycondition to happen after DMA completes, but before the i2s device is started...?