Hi,
For my application, I would like to have multiple watchdog timers. I am measuring several sensors (I want one short-term watchdog timer to be fed in this loop, pause during sleep mode), and then I am sleeping for a much longer time (minutes) in which I would like a longer term watchdog timer (run during sleep mode). I tried to use a different nrf_drv_wdt_config_t for each case, but then when I try nrf_drv_wdt_init() the 2nd time, I get error code 8 (Invalid State). It seems like there is a possibility to use multiple wdt channels, but how can I set them up with different nrf_drv_wdt_config_t?
The code looks something like this:
// WDT for within a measurement loop
// Default values: Pause in SLEEP, Pause in HALT; 2000 ms; IRQ 7
nrf_drv_wdt_config_t wdt_meas_config = NRF_DRV_WDT_DEAFULT_CONFIG;
wdt_meas_config.reload_value = WDT_TIMEOUT_MEAS;
err_code = nrf_drv_wdt_init(&wdt_meas_config, wdt_event_handler);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_wdt_channel_alloc(&wdt_channel_id);
APP_ERROR_CHECK(err_code);
// WDT for long sleep cycles
// Default values: Pause in SLEEP, Pause in HALT; 2000 ms; IRQ 7
nrf_drv_wdt_config_t wdt_sleep_config = NRF_DRV_WDT_DEAFULT_CONFIG;
wdt_sleep_config.reload_value = WDT_TIMEOUT_SLEEP;
wdt_sleep_config.behaviour = NRF_WDT_BEHAVIOUR_RUN_SLEEP; // keep it running while waiting
err_code = nrf_drv_wdt_init(&wdt_sleep_config, wdt_event_handler);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_wdt_channel_alloc(&wdt_sleep_channel_id);
APP_ERROR_CHECK(err_code);