I am using I2S to play audio files and MQTT to transfer these audio files between devices and saving to SPIFFS. I have a curious problem where I can create and play audio files on the same device and never run into any issues. However, if i create a file on device A and then send it to the second device B, file approximately 100KB, writing to the SPIFFS this all works fine. But then playback causes a kernel panic with the following error:
Code: Select all
I (811131) I2S_Audio: Start playing
E (811141) I2S: Register I2S Interrupt error: 261
Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x400c98fe PS : 0x00060830 A0 : 0x800a1ff6 A1 : 0x3ffd6c40
0x400c98fe: i2s_set_pin at C:/Users/mpwir/esp/esp-idf/components/driver/i2s.c:780
A2 : 0x00000000 A3 : 0x3ffd0c54 A4 : 0x0000000a A5 : 0x00000000
A6 : 0x3ffd1d00 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x3ffd6bf0
A10 : 0x00000001 A11 : 0x3f019eec A12 : 0x3f01a4b4 A13 : 0x000c6085
A14 : 0x3f019eec A15 : 0x00000105 SAR : 0x0000000a EXCCAUSE: 0x0000001c
EXCVADDR: 0x0000002c LBEG : 0x3f01a4b4 LEND : 0x000c6085 LCOUNT : 0x40026bbd
0x40026bbd: _xt_user_exc at C:/Users/mpwir/esp/esp-idf/components/freertos/port/xtensa/xtensa_vectors.S:627
Backtrace:0x400c98fb:0x3ffd6c40 0x400a1ff3:0x3ffd6c80 0x4008bfa3:0x3ffd6cd0 0x4008c03b:0x3ffd6cf0 0x400899cb:0x3ffd6d10 0x400a0f0d:0x3ffd6d30 0x400a0fff:0x3ffd6d50 0x40089081:0x3ffd6d70 0x400890aa:0x3ffd6da0 0x40032365:0x3ffd6dc0
0x400c98fb: i2s_set_pin at C:/Users/mpwir/esp/esp-idf/components/driver/i2s.c:780
0x400a1ff3: I2SOutput::start(int) at C:/Users/mpwir/esp/FL_Standard/components/i2saudio/I2SOutput.cpp:26
0x4008bfa3: play(Output*, char const*) at c:\users\mpwir\esp\fl_standard\standard_lamp\build/../main/app_audio.cpp:197
0x4008c03b: audio_play at c:\users\mpwir\esp\fl_standard\standard_lamp\build/../main/app_audio.cpp:237
0x400899cb: button_audio_play_cb at c:\users\mpwir\esp\fl_standard\standard_lamp\build/../main/app_driver.c:353 (discriminator 15)
0x400a0f0d: button_handler at C:/Users/mpwir/esp/FL_Standard/components/button/iot_button.c:122 (discriminator 1)
0x400a0fff: button_cb at C:/Users/mpwir/esp/FL_Standard/components/button/iot_button.c:171 (discriminator 3)
0x40089081: timer_process_alarm at C:/Users/mpwir/esp/esp-idf/components/esp_timer/src/esp_timer.c:330
0x400890aa: timer_task at C:/Users/mpwir/esp/esp-idf/components/esp_timer/src/esp_timer.c:349 (discriminator 1)
0x40032365: vPortTaskWrapper at C:/Users/mpwir/esp/esp-idf/components/freertos/port/xtensa/port.c:168
There seems to be some shared IRQ between I2S and the MQTT library? I am not sure which way to investigate this.