Add an external watchdog module

This commit is contained in:
Quency-D
2026-01-22 15:03:40 +08:00
parent 7d1f52252b
commit c89a0e9929
10 changed files with 96 additions and 3 deletions
+28
View File
@@ -13,6 +13,7 @@ VolatileRTCClock fallback_clock;
AutoDiscoverRTCClock rtc_clock(fallback_clock);
MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1);
SolarSensorManager sensors = SolarSensorManager(nmea);
SolarExWatchdog ex_watchdog;
#ifdef DISPLAY_CLASS
DISPLAY_CLASS display;
@@ -121,3 +122,30 @@ bool SolarSensorManager::setSettingValue(const char* name, const char* value) {
}
return false; // not supported
}
bool SolarExWatchdog::begin() {
next_feed_watchdog = 0;
pinMode(EX_WATCHDOG_WAKE_PIN, INPUT);
pinMode(EX_WATCHDOG_DONE_PIN, OUTPUT);
delay(1);
digitalWrite(EX_WATCHDOG_DONE_PIN, LOW);
delay(1);
feed();
return true;
}
void SolarExWatchdog::loop() {
if (millis() > next_feed_watchdog) {
feed();
next_feed_watchdog = millis() + EX_WATCHDOG_TIMEOUT_MS;
}
}
unsigned long SolarExWatchdog::getIntervalMs() const {
return next_feed_watchdog - millis();
}
void SolarExWatchdog::feed() {
digitalWrite(EX_WATCHDOG_DONE_PIN, HIGH);
delay(1);
digitalWrite(EX_WATCHDOG_DONE_PIN, LOW);
}