LowPower
This commit is contained in:
+9
-8
@@ -17,7 +17,7 @@ use esp_hal::{
|
|||||||
delay::Delay,
|
delay::Delay,
|
||||||
gpio::{DriveMode, Flex, OutputConfig, Pull},
|
gpio::{DriveMode, Flex, OutputConfig, Pull},
|
||||||
interrupt::software::SoftwareInterruptControl,
|
interrupt::software::SoftwareInterruptControl,
|
||||||
rtc_cntl::{Rtc, reset_reason, sleep::TimerWakeupSource, wakeup_cause},
|
rtc_cntl::{reset_reason, sleep::{LowPower, TimerWakeupSource}, wakeup_cause},
|
||||||
system::Cpu,
|
system::Cpu,
|
||||||
timer::timg::TimerGroup,
|
timer::timg::TimerGroup,
|
||||||
};
|
};
|
||||||
@@ -131,8 +131,8 @@ async fn main(_spawner: Spawner) -> ! {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let delay = Delay::new();
|
let delay = Delay::new();
|
||||||
let mut rtc = Rtc::new(peripherals.LPWR);
|
//let mut rtc = Rtc::new(peripherals.RTC_TIMER);//LPWR);
|
||||||
|
let mut lpwr = LowPower::new(peripherals.LPWR);
|
||||||
let reason = reset_reason(Cpu::ProCpu);
|
let reason = reset_reason(Cpu::ProCpu);
|
||||||
let wake_reason = wakeup_cause();
|
let wake_reason = wakeup_cause();
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ async fn main(_spawner: Spawner) -> ! {
|
|||||||
}
|
}
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
esp_println::dbg!("An error occurred while trying to read sensor: {:?}", error);
|
esp_println::dbg!("An error occurred while trying to read sensor: {:?}", error);
|
||||||
deep_sleep(&mut rtc, &delay, 30);
|
deep_sleep(&mut lpwr, &delay, 30);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,13 +180,14 @@ async fn main(_spawner: Spawner) -> ! {
|
|||||||
.send_async(&peer.peer_address, (data + fill.as_str()).as_bytes())
|
.send_async(&peer.peer_address, (data + fill.as_str()).as_bytes())
|
||||||
.await;
|
.await;
|
||||||
println!("Send status: {:?}", status);
|
println!("Send status: {:?}", status);
|
||||||
deep_sleep(&mut rtc, &delay, DEEP_SLEEP_TIME);
|
deep_sleep(&mut lpwr, &delay, DEEP_SLEEP_TIME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deep_sleep(rtc: &mut Rtc, delay: &Delay, time : u64) {
|
fn deep_sleep(lpwr: &mut LowPower, delay: &Delay, time : u64) {
|
||||||
let timer = TimerWakeupSource::new(core::time::Duration::from_secs(time));
|
let timer = TimerWakeupSource::new(esp_hal::time::Duration::from_secs(time));
|
||||||
println!("Going sleep for {} seconds", time);
|
println!("Going sleep for {} seconds", time);
|
||||||
delay.delay_millis(100);
|
delay.delay_millis(100);
|
||||||
rtc.sleep_deep(&[&timer]);
|
//rtc.sleep_deep(&[&timer]);
|
||||||
|
lpwr.sleep_deep(&[&timer]);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user