machine.WDT
MaixPy's WDT watchdog module is used to restart the system when the application crashes and eventually enters an unrecoverable state. Once started, when the hardware is running without regular feeding (feed), it will automatically reset after a timeout.
Constructor
from machine import WDT
wdt0 = WDT(id=1, timeout=4000, callback=on_wdt, context={})
Create a new WDT object with specified parameters
Parameters
id
: When this watchdog object must be initialized, an ID (0 ~ 2) must be specified to distinguish the watchdog used.timeout
: Watchdog timeout time, in milliseconds (ms).callback
: (Optional) A callback function that can be executed after timeout.context
: (Optional) The parameters passed to the callback function.
Method
feed
"Feed" the watchdog to prevent it from resetting the system. The app should use the call in the right place and make sure to "feed" the watchdog only after verifying that everything is working properly.
wdt0.feed()
Parameters
no
return value
no
stop
Stop the current watchdog object
wdt0.stop()
Parameters
no
return value
no
Routine
Routine 1 (Basic use)
Feed the dog once and stop feeding the dog to reset the system
import time
from machine import WDT
#'''
# test default wdt
wdt0 = WDT(id=0, timeout=3000)
print('into', wdt0)
time.sleep(2)
print(time.ticks_ms())
# 1.test wdt feed
wdt0.feed()
time.sleep(2)
print(time.ticks_ms())
# 2.test wdt stop
# wdt0.stop()
Routine 2 (advanced use)
Feed the dog in the callback function and the system runs normally
import time
from machine import WDT
def on_wdt(self):
print(self.context(), self)
self.feed()
## release WDT
#self.stop()
# test callback wdt
wdt1 = WDT(id=1, timeout=4000, callback=on_wdt, context={})
print('into', wdt1)
time.sleep(2)
print(time.ticks_ms())
# 1.test wdt feed
wdt1.feed()
time.sleep(2)
print(time.ticks_ms())
# 2.test wdt stop
# wdt1.stop()
# print('stop', wdt1)
# 3.wait wdt work
while True:
print('idle', time.ticks_ms())
time.sleep(1)