Skip to content

Commit e4e48b9

Browse files
committed
Add watchdog timer for main task
1 parent 6c3bb3d commit e4e48b9

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

src/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub struct Config {
1818
topic: &'static str,
1919
#[default(1200)]
2020
deep_sleep_dur_secs: u64,
21-
#[default(65)]
21+
#[default(10)]
2222
main_task_dur_secs: u64,
2323
#[default(60)]
2424
task_dur_secs: u64,

src/main.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
holding buffers for the duration of a data transfer."
77
)]
88

9+
use core::time::Duration;
10+
911
use embassy_embedded_hal::shared_bus::asynch::i2c::I2cDevice;
1012
use embassy_executor::Spawner;
1113
use embassy_net::StackResources;
@@ -71,6 +73,15 @@ async fn main(spawner: Spawner) -> ! {
7173
let timg0 = TimerGroup::new(peripherals.TIMG0);
7274
esp_rtos::start(timg0.timer0);
7375

76+
let mut timg1 = TimerGroup::new(peripherals.TIMG1);
77+
let mut watchdog = timg1.wdt;
78+
let watchdog_timeout = Duration::from_secs(CONFIG.main_task_dur_secs);
79+
let _ = watchdog.start(watchdog_timeout);
80+
info!(
81+
"Main watchdog configured for {} seconds",
82+
CONFIG.main_task_dur_secs
83+
);
84+
7485
// Init wifi
7586
let radio_init = mk_static!(
7687
Controller<'static>,
@@ -146,7 +157,12 @@ async fn main(spawner: Spawner) -> ! {
146157
spawner.spawn(anemo_task(anemo_pin, sender_anemo)).ok();
147158
spawner.spawn(as5600_task(as_i2c, sender_as5600)).ok();
148159
spawner.spawn(ina210_task(ina_i2c, sender_ina219)).ok();
149-
Timer::after_secs(CONFIG.main_task_dur_secs).await;
160+
161+
for _ in 0..CONFIG.main_task_dur_secs as usize {
162+
Timer::after_secs(1).await;
163+
watchdog.feed();
164+
}
165+
let _ = watchdog.disable();
150166

151167
info!("Going to sleep...");
152168
transistor_pin.set_low();

0 commit comments

Comments
 (0)