Hallo zusammen Ich habe ein umfangreicheres ESP32 Arduino Projekt (2ndCore, 485, MQTT, Display, Web, ...) das mit Watchdog-Timer reproduzierbar abstürzt (im groben 10 Minuten Rythmus eine WD auslösung, teilweise aber auch schneller) ohne WD aber ohne Auffälligkeiten über Tage läuft. Wenn der WD benutzt wird verwende Ich folgenden Code: --- in setup() esp_task_wdt_init(wdtTimeout_s, true); // enable panic so ESP32 restarts esp_task_wdt_add(NULL); // add current thread to WDT watch --- in loop() esp_task_wdt_reset(); --- Es ist sichergestellt das esp_task_wdt_reset() auch aufgerufen wird. wdtTimeout_s steht z.B auf 40 (sekunden) und durch Ausgaben auf der Seriellen kann Ich sehen das die loop läuft und im <Sekunden Bereich den WD zurueck setzt. Ohne diese 3 Zeilen läuft es stabil (>24h ohne Absturz) Ein Absturz kommt nicht direkt durch den WD Timer, hier zwei Beispiele: --- Guru Meditation Error: Core 1 panic'ed (Unhandled debug exception). Debug exception reason: BREAK instr Core 1 register dump: PC : 0x400803c0 PS : 0x00060b36 A0 : 0x80148699 A1 : 0x3ffcc610 A2 : 0x37400c04 A3 : 0x3ffcc690 A4 : 0x00000004 A5 : 0x00000000 A6 : 0x00000155 A7 : 0x37400c04 A8 : 0x00000000 A9 : 0x00000000 A10 : 0x00000001 A11 : 0x58b48bfc A12 : 0x00000004 A13 : 0x3ffcc694 A14 : 0x6c030050 A15 : 0x6c030050 SAR : 0x00000018 EXCCAUSE: 0x00000001 EXCVADDR: 0x00000008 LBEG : 0x40089d01 LEND : 0x40089d23 LCOUNT : 0xffffffff Backtrace: 0x400803bd:0x3ffcc610 0x40148696:0x3ffcc630 0x401489ad:0x3ffcc6d0 0x4014983b:0x3ffcc700 0x4014a36d:0x3ffcc760 0x4014bd9d:0x3ffcc790 0x40147881:0x3ffcc7b0 0x400e73d2:0x3ffcc7e0 0x400dd195:0x3ffcc810 0x4019c445:0x3ffcca00 0x400ed276:0x3ffcca20 0x400ed31d:0x3ffcca40 0x400ed3fa:0x3ffcca80 0x400ed59d:0x3ffccaf0 0x400e08bf:0x3ffccb40 0x400e12f9:0x3ffccb60 0x400e5c19:0x3ffccb80 0x40107585:0x3ffccbe0 #0 0x400803bd:0x3ffcc610 in _UserExceptionVector at ??:? #1 0x40148696:0x3ffcc630 in lfs_dir_fetchmatch at /Users/ficeto/Desktop/ESP32/ESP32S2/esp32-arduino-lib-builder/components /esp_littlefs/src/littlefs/lfs.c:1066 #2 0x401489ad:0x3ffcc6d0 in lfs_dir_fetch at /Users/ficeto/Desktop/ESP32/ESP32S2/esp32-arduino-lib-builder/components /esp_littlefs/src/littlefs/lfs.c:1233 #3 0x4014983b:0x3ffcc700 in lfs_fs_rawtraverse at /Users/ficeto/Desktop/ESP32/ESP32S2/esp32-arduino-lib-builder/components /esp_littlefs/src/littlefs/lfs.c:4278 (discriminator 1) #4 0x4014a36d:0x3ffcc760 in lfs_fs_rawsize at /Users/ficeto/Desktop/ESP32/ESP32S2/esp32-arduino-lib-builder/components /esp_littlefs/src/littlefs/lfs.c:4631 #5 0x4014bd9d:0x3ffcc790 in lfs_fs_size at /Users/ficeto/Desktop/ESP32/ESP32S2/esp32-arduino-lib-builder/components /esp_littlefs/src/littlefs/lfs.c:5765 #6 0x40147881:0x3ffcc7b0 in esp_littlefs_info at /Users/ficeto/Desktop/ESP32/ESP32S2/esp32-arduino-lib-builder/components /esp_littlefs/src/esp_littlefs.c:224 (discriminator 1) #7 0x400e73d2:0x3ffcc7e0 in fs::LittleFSFS::totalBytes() at /Users/klkl/.platformio/packages/framework-arduinoespressif32/libraries/ LittleFS/src/LittleFS.cpp:129 #8 0x400dd195:0x3ffcc810 in handleRoot() at src/MyWebServer.cpp:414 (discriminator 1) #9 0x4019c445:0x3ffcca00 in std::_Function_handler<void (), void (*)()>::_M_invoke(std::_Any_data const&) at /Users/klkl/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf /include/c++/8.4.0/bits/std_function.h:297 #10 0x400ed276:0x3ffcca20 in std::function<void ()>::operator()() const at /Users/klkl/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf /include/c++/8.4.0/bits/std_function.h:687 #11 0x400ed31d:0x3ffcca40 in FunctionRequestHandler::handle(WebServer&, http_method, String) at /Users/klkl/.platformio/packages/framework-arduinoespressif32/libraries/ WebServer/src/detail/RequestHandlersImpl.h:45 #12 0x400ed3fa:0x3ffcca80 in WebServer::_handleRequest() at /Users/klkl/.platformio/packages/framework-arduinoespressif32/libraries/ WebServer/src/WebServer.cpp:651 #13 0x400ed59d:0x3ffccaf0 in WebServer::handleClient() at /Users/klkl/.platformio/packages/framework-arduinoespressif32/libraries/ WebServer/src/WebServer.cpp:318 #14 0x400e08bf:0x3ffccb40 in AutoConnectCore<AutoConnectConfigExt>::handleClient() at .pio/libdeps/heltec_wifi_lora_32_V2/AutoConnect/src/AutoConnectCoreImpl. hpp:540 #15 0x400e12f9:0x3ffccb60 in workOnWebServer() at src/MyWebServer.cpp:822 #16 0x400e5c19:0x3ffccb80 in loop() at src/unetAdapter.cpp:588 #17 0x40107585:0x3ffccbe0 in loopTask(void*) at /Users/klkl/.platformio/packages/framework-arduinoespressif32/cores/esp3 2/main.cpp:50 --- oder Guru Meditation Error: Core 0 panic'ed (IllegalInstruction). Exception was unhandled. Memory dump at 0x40090b38: 10c132b3 a90020c0 b81a2c0c Core 0 register dump: PC : 0x40090b3e PS : 0x00060034 A0 : 0x80114a3d A1 : 0x3ffd3ab0 A2 : 0x00000004 A3 : 0x3ffd3ab8 A4 : 0x00000024 A5 : 0x3ffd3b20 A6 : 0x00000026 A7 : 0x00000002 A8 : 0x80080346 A9 : 0xffffffef A10 : 0xb80fc000 A11 : 0x3ffd3abc A12 : 0xbffd7abd A13 : 0x7ffa7568 A14 : 0x001ff755 A15 : 0x3ffd3cdc SAR : 0x0000001e EXCCAUSE: 0x00000000 EXCVADDR: 0x00000000 LBEG : 0x40089e00 LEND : 0x40089e0b LCOUNT : 0xffffffff Backtrace: 0x40090b3b:0x3ffd3ab0 0x40114a3a:0x3ffd3af0 0x40083b15:0x3ffd3b40 0x40084cac:0x3ffd3b60 0x40090674:0x3ffd3c20 0x22004133:0x3ffd3c40 |<-CORRUPTED #0 0x40090b3b:0x3ffd3ab0 in soc_ll_stall_core at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/hal/esp32/ include/hal/soc_ll.h:34 (inlined by) soc_hal_stall_core at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/hal/soc_ha l.c:29 #1 0x40114a3a:0x3ffd3af0 in panic_handler at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_system /port/panic_handler.c:158 #2 0x40083b15:0x3ffd3b40 in xt_unhandled_exception at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_system /port/panic_handler.c:219 #3 0x40084cac:0x3ffd3b60 in _xt_user_exc at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/freertos/p ort/xtensa/xtensa_vectors.S:703 #4 0x40090674:0x3ffd3c20 in spinlock_release at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_hw_sup port/include/soc/spinlock.h:164 (inlined by) vPortExitCritical at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/freertos/p ort/xtensa/port.c:323 #5 0x22004133:0x3ffd3c40 in ?? ??:0 --- der Stacktrace scheint nicht auf das wirkliche Problem hinzudeuten. Ich würde tippen das Ich irgendwo den Stack zerstöre, kann das aber an nichts festmachen. Ganz blöde ist das der Neustart nicht immer funktioniert. Bei jedem ca 20-50sten Neustart bleibt der Controller noch vor den ersten seriellen Ausgaben hängen und es ist ein Hardware-Reset notwendig. Mit meinem Verständnis eines WD Timer kann Ich meine Beobachtungen gar nicht vereinbaren. Ein WD Timer sollte unabhängig vom restlichen Code laufen und auch keine Rückwirkungen auf den Programmablauf haben. Nach einer Reset-Auslösung sollte der Prozessor immer wieder neu booten.... Hat jemand eine Idee wie Ich dies weiter einkreisen kann? Vielen Dank schon mal das Ihr bis hierher gelesen habt. Gruß Klaus
hmm, wie kommt Ihr darauf? der Stacktrace sagt /Users/klkl/.platformio/packages/framework-arduinoespressif32/cores/esp3 2/main.cpp:50 Das ist aber nicht in meinem Zuständigkeitsbereich
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.