diff --git a/ports/nrf/drivers/bluetooth/ble_uart.c b/ports/nrf/drivers/bluetooth/ble_uart.c index d322b9bd8..0e0e147c2 100644 --- a/ports/nrf/drivers/bluetooth/ble_uart.c +++ b/ports/nrf/drivers/bluetooth/ble_uart.c @@ -94,15 +94,14 @@ static ubluepy_advertise_data_t m_adv_data_eddystone_url; #endif // BLUETOOTH_WEBBLUETOOTH_REPL int mp_hal_stdin_rx_chr(void) { - wdt_feed(); + wdt_feed(false); while (!ble_uart_enabled()) { // wait for connection - wdt_feed(); + wdt_feed(false); } while (isBufferEmpty(mp_rx_ring_buffer)) { - wdt_feed(); - ; + wdt_feed(false); } uint8_t byte; diff --git a/ports/nrf/drivers/wdt.c b/ports/nrf/drivers/wdt.c index 89ab823d7..73ce51647 100644 --- a/ports/nrf/drivers/wdt.c +++ b/ports/nrf/drivers/wdt.c @@ -76,7 +76,7 @@ void wdt_init(void) } } -void wdt_feed(void) +void wdt_feed(bool isr) { /* * A WDT button allows us to feed the dog from somewhere that would @@ -86,6 +86,8 @@ void wdt_feed(void) */ #if MICROPY_HW_HAS_WDT_BUTTON if (!button_pressed()) +#else + if (!isr) #endif nrf_wdt_reload_request_set(0); } diff --git a/ports/nrf/drivers/wdt.h b/ports/nrf/drivers/wdt.h index 3938ef8de..094df0854 100644 --- a/ports/nrf/drivers/wdt.h +++ b/ports/nrf/drivers/wdt.h @@ -26,6 +26,6 @@ #define __MICROPY_INCLUDED_LIB_WDT_H__ void wdt_init(void); -void wdt_feed(void); +void wdt_feed(bool isr); #endif // __MICROPY_INCLUDED_LIB_WDT_H__ diff --git a/ports/nrf/modules/machine/rtcounter.c b/ports/nrf/modules/machine/rtcounter.c index 28ee781cc..d25e6d865 100644 --- a/ports/nrf/modules/machine/rtcounter.c +++ b/ports/nrf/modules/machine/rtcounter.c @@ -28,6 +28,7 @@ #include "py/nlr.h" #include "py/runtime.h" #include "rtcounter.h" +#include "wdt.h" #include "nrfx_rtc.h" #include "nrf_clock.h" @@ -106,6 +107,7 @@ STATIC void interrupt_handler(size_t instance_id) { uint32_t val = nrfx_rtc_counter_get(self->p_rtc) + config->period; nrfx_rtc_cc_set(self->p_rtc, 0, val, true); } + wdt_feed(true); } #if !defined(BLUETOOTH_SD)