Skip to content

I2c i2c_isr_handler_default cause watchdog timeout #4227

Closed
@DamithVG

Description

@DamithVG

Hardware:

Board: ESP32 Dev Module
Core Installation version: 1.0.4
IDE name: Arduino IDE
Flash Frequency: 80Mhz
PSRAM enabled: no
Upload Speed: 115200
Computer OS: Windows 10

Description:

when running a code, sometimes i2c_isr_handler_default() function executes over and over again and causes firing the interrupt watchdog. This doesn't happen periodically. Sometimes it is 2 3 hours after ESP starts and sometimes it is just 20 minutes.
According to the debug text, activeInt variable of esp32-hal-i2c.c file is 4.

When i examine the esp32-hal-i2c.c file, in line 909, i noticed that interrupts were handled in an while loop. It only exits when activeInt is 0.
Now look the if condition in line 1003.

if(activeInt) { // clear unhandled if possible?  What about Disabling interrupt?
            p_i2c->dev->int_clr.val = activeInt;
            log_e("unknown int=%x",activeInt);
            // disable unhandled IRQ,
            p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt);
        }

If this condition is the only condition becomes true, the while loop never exits because activeInt will not set to 0 and ISR executes until INT WDT fires.

This is the case as i understand. Please correct me if im wrong.

Thank you.

Debug Messages:

[03/08/20 - 16:03:09:283] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:294] 

[03/08/20 - 16:03:09:294] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:304] 

[03/08/20 - 16:03:09:304] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:304] 

[03/08/20 - 16:03:09:304] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:304] 

[03/08/20 - 16:03:09:304] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:314] 

[03/08/20 - 16:03:09:314] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:323] 

[03/08/20 - 16:03:09:323] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:323] 

[03/08/20 - 16:03:09:323] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:333] 

[03/08/20 - 16:03:09:333] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:333] 

[03/08/20 - 16:03:09:333] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:344] 

[03/08/20 - 16:03:09:344] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:353] 

[03/08/20 - 16:03:09:353] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:353] 

[03/08/20 - 16:03:09:353] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:363] 

[03/08/20 - 16:03:09:363] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:363] 

[03/08/20 - 16:03:09:363] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:374] 

[03/08/20 - 16:03:09:374] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:383] 

[03/08/20 - 16:03:09:383] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:383] 

[03/08/20 - 16:03:09:383] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:393] 

[03/08/20 - 16:03:09:393] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:393] 

[03/08/20 - 16:03:09:393] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:404] 

[03/08/20 - 16:03:09:404] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:404] 

[03/08/20 - 16:03:09:404] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:414] 

[03/08/20 - 16:03:09:414] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:423] 

[03/08/20 - 16:03:09:423] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:423] 

[03/08/20 - 16:03:09:423] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:433] 

[03/08/20 - 16:03:09:433] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:433] 

[03/08/20 - 16:03:09:433] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:444] 

[03/08/20 - 16:03:09:444] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:454] 

[03/08/20 - 16:03:09:454] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:454] 

[03/08/20 - 16:03:09:454] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:463] 

[03/08/20 - 16:03:09:463] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:463] 

[03/08/20 - 16:03:09:463] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:473] 

[03/08/20 - 16:03:09:473] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:484] 

[03/08/20 - 16:03:09:484] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:484] 

[03/08/20 - 16:03:09:484] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:494] 

[03/08/20 - 16:03:09:494] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:494] 

[03/08/20 - 16:03:09:494] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:504] 

[03/08/20 - 16:03:09:504] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:513] 

[03/08/20 - 16:03:09:513] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:513] 

[03/08/20 - 16:03:09:513] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:524] 

[03/08/20 - 16:03:09:524] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:524] 

[03/08/20 - 16:03:09:524] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:533] 

[03/08/20 - 16:03:09:533] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:533] 

[03/08/20 - 16:03:09:533] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:543] 

[03/08/20 - 16:03:09:543] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:554] 

[03/08/20 - 16:03:09:554] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:554] 

[03/08/20 - 16:03:09:554] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:563] 

[03/08/20 - 16:03:09:563] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:563] 

[03/08/20 - 16:03:09:563] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:573] 

[03/08/20 - 16:03:09:573] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4
[03/08/20 - 16:03:09:583] 

[03/08/20 - 16:03:09:583] [E][esp32-hal-i2c.c:1005] i2c_isr_handler_default(): unknown int=4Guru Meditation Error: Core  1 panic'ed (Interrupt wdt timeout on CPU1)
[03/08/20 - 16:03:09:594] 

[03/08/20 - 16:03:09:594] Core 1 register dump:
[03/08/20 - 16:03:09:594] 

[03/08/20 - 16:03:09:594] PC      : 0x4000921a  PS      : 0x00060d34  A0      : 0x80007d06  A1      : 0x3ffbe640  
[03/08/20 - 16:03:09:604] 

[03/08/20 - 16:03:09:604] A2      : 0x00800000  A3      : 0x3ffbe660  A4      : 0x00000002  A5      : 0x00000010  
[03/08/20 - 16:03:09:614] 

[03/08/20 - 16:03:09:614] A6      : 0x00000002  A7      : 0x3ffbe584  A8      : 0x3ff40000  A9      : 0x0000000d  
[03/08/20 - 16:03:09:614] 

[03/08/20 - 16:03:09:614] A10     : 0x00800000  A11     : 0x3ff4001c  A12     : 0x3ffdfb20  A13     : 0x3ffdfb28  
[03/08/20 - 16:03:09:623] 

[03/08/20 - 16:03:09:623] A14     : 0x3ffdf9e5  A15     : 0x3ffdfb29  SAR     : 0x00000004  EXCCAUSE: 0x00000006  
[03/08/20 - 16:03:09:633] 

[03/08/20 - 16:03:09:633] EXCVADDR: 0x00000000  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffa  
[03/08/20 - 16:03:09:644] 

[03/08/20 - 16:03:09:644] Core 1 was running in ISR context:
[03/08/20 - 16:03:09:644] 

[03/08/20 - 16:03:09:644] EPC1    : 0x4000beb4  EPC2    : 0x00000000  EPC3    : 0x00000000  EPC4    : 0x4000921a
[03/08/20 - 16:03:09:653] 

[03/08/20 - 16:03:09:653] 
[03/08/20 - 16:03:09:653] 

[03/08/20 - 16:03:09:653] Backtrace: 0x4000921a:0x3ffbe640 0x40007d03:0x3ffbe660 0x40007c69:0x3ffbe680 0x40008106:0x3ffbe6a0 0x400e216e:0x3ffbe730 0x40081a7a:0x3ffbe790 0x40082b11:0x3ffbe7b0 0x400850c5:0x3ffbe7d0 0x4000bfed:0x3ffb8fb0 0x4008a669:0x3ffb8fc0 0x4008c
[03/08/20 - 16:03:09:673] 3b3:0x3ffb8fe0 0x4008cb64:0x3ffb9000 0x40085368:0x3ffb9020 0x4008539d:0x3ffb9040 0x40085861:0x3ffb9060 0x4000beaf:0x3ffb9080 0x400e212d:0x3ffb90a0 0x400dbfde:0x3ffb9100 0x400dc33d:0x3ffb9220 0x400894d1:0x3ffb9250
[03/08/20 - 16:03:09:694] 

[03/08/20 - 16:03:09:694] 
[03/08/20 - 16:03:09:694] 

[03/08/20 - 16:03:09:694] Core 0 register dump:
[03/08/20 - 16:03:09:694] 

[03/08/20 - 16:03:09:694] PC      : 0x4016af06  PS      : 0x00060734  A0      : 0x800e6c21  A1      : 0x3ffbc100  
[03/08/20 - 16:03:09:704] 

[03/08/20 - 16:03:09:704] A2      : 0x00000000  A3      : 0x00000001  A4      : 0x800896e4  A5      : 0x3ffb59d0  
[03/08/20 - 16:03:09:704] 

[03/08/20 - 16:03:09:704] A6      : 0x00000000  A7      : 0x3ffbbe00  A8      : 0x800e5c62  A9      : 0x3ffbc0d0  
[03/08/20 - 16:03:09:713] 

[03/08/20 - 16:03:09:713] A10     : 0x00000000  A11     : 0x00000001  A12     : 0x800896e4  A13     : 0x3ffb55a0  
[03/08/20 - 16:03:09:723] 

[03/08/20 - 16:03:09:723] A14     : 0x00000000  A15     : 0x3ffbbe00  SAR     : 0x00000000  EXCCAUSE: 0x00000006  
[03/08/20 - 16:03:09:733] 

[03/08/20 - 16:03:09:733] EXCVADDR: 0x00000000  LBEG    : 0x00000000  LEND    : 0x00000000  LCOUNT  : 0x00000000  
[03/08/20 - 16:03:09:744] 

[03/08/20 - 16:03:09:744] 
[03/08/20 - 16:03:09:744] 

[03/08/20 - 16:03:09:744] Backtrace: 0x4016af06:0x3ffbc100 0x400e6c1e:0x3ffbc120 0x4008ace1:0x3ffbc140 0x400894d1:0x3ffbc160
[03/08/20 - 16:03:09:744] 

[03/08/20 - 16:03:09:744] 
[03/08/20 - 16:03:09:753] 

[03/08/20 - 16:03:09:753] Rebooting...
[03/08/20 - 16:03:09:753] 

decoded backtrace

Decoding stack results
0x4008c417: multi_heap_free_impl at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap.c line 131
0x4008cb4e: multi_heap_get_allocated_size at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap_poisoning.c line 290
0x40085368: heap_caps_free at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/heap_caps.c line 267
0x4008539d: heap_caps_realloc at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/heap_caps.c line 282
0x40085861: lock_init_generic at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/newlib/locks.c line 85
0x400e212d: uartBegin at C:\Users\VEGA_1010\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32\esp32-hal-uart.c line 207
0x40081a7a: pinMatrixInDetach at C:\Users\VEGA_1010\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32\esp32-hal-matrix.c line 40
0x40082b11: esp_intr_enable at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/intr_alloc.c line 801
0x4008a669: prvAddNewTaskToReadyList at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c line 1149
0x4008c3b3: multi_heap_malloc_impl at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap.c line 155
0x4008cb64: multi_heap_get_allocated_size at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap_poisoning.c line 295
0x40085368: heap_caps_free at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/heap_caps.c line 267
0x4008539d: heap_caps_realloc at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/heap_caps.c line 282
0x40085861: lock_init_generic at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/newlib/locks.c line 85
0x400e212d: uartBegin at C:\Users\VEGA_1010\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32\esp32-hal-uart.c line 207
0x400dbfde: ping_start(IPAddress, int, int, int, int, ping_option*) at C:\Users\VEGA_1010\Documents\Arduino\libraries\ESP32Ping-master\ping.cpp line 121
0x400dc33d: WiFiClient::connect(char const*, unsigned short, int) at C:\Users\VEGA_1010\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32/IPAddress.h line 29
0x400894d1: xPortSysTickHandler at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 284

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions