Hello!
I am currently trying to use the watchdog driver from the Zephyr library. I have enabled the CONFIG_WATCHDOG and set it up similarly to the asset_tracker application example.
The problems I am experiencing is that the max time window I set does not seem to be close to correct. Setting it to 300ms results in restarts after about 20 seconds, while 6000ms results in restarts after around 400s. Am I missing something?
This is how I set it up in the application:
#include <zephyr.h> #include <device.h> #include <drivers/watchdog.h> static struct device *wdt_dev; static int wdt_main_channel; static struct wdt_timeout_cfg wdt_cfg = { .window = { .min = 0, .max = CONFIG_WDT_MAX_TIMEOUT_MS, // This is set to 6000 }, .callback = NULL, .flags = WDT_FLAG_RESET_SOC, }; int main() { wdt_dev = device_get_binding(DT_LABEL(DT_NODELABEL(wdt))); if (wdt_dev == NULL) { LOG_ERR("Could not set up watchdog"); return -1; } wdt_main_channel = wdt_install_timeout(wdt_dev, &wdt_cfg); if (wdt_main_channel < 0) { LOG_ERR("Could not install wdt timeout. (error: %d)", wdt_main_channel); return wdt_main_channel; } ret = wdt_setup(wdt_dev, WDT_OPT_PAUSE_HALTED_BY_DBG | WDT_OPT_PAUSE_IN_SLEEP); if (ret < 0) { LOG_ERR("Could not setup WDT"); return ret; } LOG_INF("Watchdog set up with a %ds interval", CONFIG_WDT_MAX_TIMEOUT_MS/1000); }
My SDK is at this commit: 7c35ef35fe604c8d69096f93a460852c5023eae4 as I require manual modem toggling, and I have a v0.9.0 devkit.