add some task watchdog handling

This commit is contained in:
cyberman54 2022-01-27 18:04:37 +01:00
parent ad027f7e80
commit 13eaae74ac
5 changed files with 16 additions and 3 deletions

View File

@ -8,6 +8,9 @@
#include <RtcDateTime.h> #include <RtcDateTime.h>
#include <Ticker.h> #include <Ticker.h>
// task watchdog functions
#include <esp_task_wdt.h>
// std::set for unified array functions // std::set for unified array functions
#include <set> #include <set>
#include <array> #include <array>

View File

@ -138,10 +138,12 @@ time_t get_gpstime(uint16_t *msec) {
void gps_loop(void *pvParameters) { void gps_loop(void *pvParameters) {
_ASSERT((uint32_t)pvParameters == 1); // FreeRTOS check _ASSERT((uint32_t)pvParameters == 1); // FreeRTOS check
esp_task_wdt_add(NULL);
while (1) { while (1) {
esp_task_wdt_reset(); // feed task watchdog
while (cfg.payloadmask & GPS_DATA) { while (cfg.payloadmask & GPS_DATA) {
esp_task_wdt_reset(); // feed task watchdog
#ifdef GPS_SERIAL #ifdef GPS_SERIAL
// feed GPS decoder with serial NMEA data from GPS device // feed GPS decoder with serial NMEA data from GPS device
while (GPS_Serial.available()) while (GPS_Serial.available())

View File

@ -141,7 +141,9 @@ void blink_LED(uint16_t set_color, uint16_t set_blinkduration) {
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED) #if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
void ledLoop(void *parameter) { void ledLoop(void *parameter) {
esp_task_wdt_add(NULL);
while (1) { while (1) {
esp_task_wdt_reset(); // feed task watchdog
// Custom blink running always have priority other LoRaWAN led // Custom blink running always have priority other LoRaWAN led
// management // management
if (LEDBlinkStarted && LEDBlinkDuration) { if (LEDBlinkStarted && LEDBlinkDuration) {

View File

@ -343,9 +343,11 @@ uint32_t lora_queuewaiting(void) {
// LMIC loop task // LMIC loop task
void lmictask(void *pvParameters) { void lmictask(void *pvParameters) {
_ASSERT((uint32_t)pvParameters == 1); _ASSERT((uint32_t)pvParameters == 1);
esp_task_wdt_add(NULL);
while (1) { while (1) {
os_runloop_once(); // execute lmic scheduled jobs and events esp_task_wdt_reset(); // feed task watchdog
delay(2); // yield to CPU os_runloop_once(); // execute lmic scheduled jobs and events
delay(2); // yield to CPU
} }
} }

View File

@ -104,6 +104,10 @@ void setup() {
(*((uint32_t volatile *)ETS_UNCACHED_ADDR((DR_REG_RTCCNTL_BASE + 0xd4)))) = 0; (*((uint32_t volatile *)ETS_UNCACHED_ADDR((DR_REG_RTCCNTL_BASE + 0xd4)))) = 0;
#endif #endif
// task watchdog configuration
//esp_task_wdt_init(1, true);
esp_task_wdt_deinit();
// setup debug output or silence device // setup debug output or silence device
#if (VERBOSE) #if (VERBOSE)
Serial.begin(115200); Serial.begin(115200);