fix sleep timer overflow
This commit is contained in:
parent
7e187680f5
commit
c71ace5063
2 changed files with 24 additions and 9 deletions
|
|
@ -193,7 +193,7 @@ pub struct TimerConfig {
|
||||||
pub usb_adc_timer_ms: usize,
|
pub usb_adc_timer_ms: usize,
|
||||||
pub led0_timer_ms: usize,
|
pub led0_timer_ms: usize,
|
||||||
pub led1_timer_ms: usize,
|
pub led1_timer_ms: usize,
|
||||||
pub shutdown_timer_ms: usize,
|
pub shutdown_timer_s: usize,
|
||||||
// pub led2_timer_ms: usize,
|
// pub led2_timer_ms: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -205,6 +205,7 @@ pub struct Timers {
|
||||||
led0_timer: TickTimerService,
|
led0_timer: TickTimerService,
|
||||||
led1_timer: TickTimerService,
|
led1_timer: TickTimerService,
|
||||||
shutdown_timer: TickTimerService,
|
shutdown_timer: TickTimerService,
|
||||||
|
pps_timer: TickTimerService,
|
||||||
// led2_timer: TickTimerService,
|
// led2_timer: TickTimerService,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,9 +237,11 @@ impl Timers {
|
||||||
true,
|
true,
|
||||||
),
|
),
|
||||||
shutdown_timer: TickTimerService::new(
|
shutdown_timer: TickTimerService::new(
|
||||||
TickServiceData::new(config.shutdown_timer_ms * system_tick_rate_hz / 1000),
|
TickServiceData::new(config.shutdown_timer_s),
|
||||||
false,
|
false,
|
||||||
), // led2_timer: TickTimerService::new(
|
),
|
||||||
|
pps_timer: TickTimerService::new(TickServiceData::new(system_tick_rate_hz), true),
|
||||||
|
// led2_timer: TickTimerService::new(
|
||||||
// TickServiceData::new(config.led2_timer_ms * system_tick_rate_hz / 1000),
|
// TickServiceData::new(config.led2_timer_ms * system_tick_rate_hz / 1000),
|
||||||
// true,
|
// true,
|
||||||
// ),
|
// ),
|
||||||
|
|
@ -251,7 +254,7 @@ impl Timers {
|
||||||
self.usb_adc_timer.tick();
|
self.usb_adc_timer.tick();
|
||||||
self.led0_timer.tick();
|
self.led0_timer.tick();
|
||||||
self.led1_timer.tick();
|
self.led1_timer.tick();
|
||||||
self.shutdown_timer.tick();
|
self.pps_timer.tick();
|
||||||
// self.led2_timer.tick();
|
// self.led2_timer.tick();
|
||||||
}
|
}
|
||||||
pub fn need_service(&self) -> bool {
|
pub fn need_service(&self) -> bool {
|
||||||
|
|
@ -262,6 +265,7 @@ impl Timers {
|
||||||
| self.led0_timer.need_service()
|
| self.led0_timer.need_service()
|
||||||
| self.led1_timer.need_service()
|
| self.led1_timer.need_service()
|
||||||
| self.shutdown_timer.need_service()
|
| self.shutdown_timer.need_service()
|
||||||
|
| self.pps_timer.need_service()
|
||||||
// | self.led2_timer.need_service()
|
// | self.led2_timer.need_service()
|
||||||
}
|
}
|
||||||
pub fn init(&mut self) {
|
pub fn init(&mut self) {
|
||||||
|
|
@ -357,6 +361,9 @@ impl App {
|
||||||
self.timers.shutdown_timer.reset();
|
self.timers.shutdown_timer.reset();
|
||||||
self.timers.shutdown_timer.enable(true);
|
self.timers.shutdown_timer.enable(true);
|
||||||
|
|
||||||
|
self.timers.pps_timer.reset();
|
||||||
|
self.timers.pps_timer.enable(true);
|
||||||
|
|
||||||
// self.timers.led2_timer.reset();
|
// self.timers.led2_timer.reset();
|
||||||
// self.timers.led2_timer.enable(true);
|
// self.timers.led2_timer.enable(true);
|
||||||
|
|
||||||
|
|
@ -406,6 +413,7 @@ impl App {
|
||||||
let avg = self.interfaces.adc_core.get_average();
|
let avg = self.interfaces.adc_core.get_average();
|
||||||
// #[cfg(feature = "enable_print")]
|
// #[cfg(feature = "enable_print")]
|
||||||
// println!("batt adc service: {bv}, {avg}");
|
// println!("batt adc service: {bv}, {avg}");
|
||||||
|
// println!("none USB");
|
||||||
if avg < 421 {
|
if avg < 421 {
|
||||||
self.set_state(State::DeepSleep);
|
self.set_state(State::DeepSleep);
|
||||||
}
|
}
|
||||||
|
|
@ -450,9 +458,14 @@ impl App {
|
||||||
// #[cfg(feature = "enable_print")]
|
// #[cfg(feature = "enable_print")]
|
||||||
// println!("led1 service");
|
// println!("led1 service");
|
||||||
}
|
}
|
||||||
|
if self.timers.pps_timer.need_service() {
|
||||||
|
self.timers.pps_timer.service();
|
||||||
|
self.timers.shutdown_timer.tick();
|
||||||
|
}
|
||||||
if self.timers.shutdown_timer.need_service() {
|
if self.timers.shutdown_timer.need_service() {
|
||||||
self.timers.shutdown_timer.service();
|
self.timers.shutdown_timer.service();
|
||||||
self.timers.shutdown_timer.reset();
|
self.timers.shutdown_timer.reset();
|
||||||
|
// println!("eepy");
|
||||||
self.set_state(State::DeepSleep);
|
self.set_state(State::DeepSleep);
|
||||||
}
|
}
|
||||||
// if self.timers.led2_timer.need_service() {
|
// if self.timers.led2_timer.need_service() {
|
||||||
|
|
@ -652,7 +665,7 @@ impl App {
|
||||||
if self.interfaces.usb.powered() {
|
if self.interfaces.usb.powered() {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if self.interfaces.adc_core.get_average() > 421 {
|
if self.interfaces.adc_core.get_average() >= 421 {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -339,7 +339,8 @@ fn app_main(mut p: hal::Peripherals) -> ! {
|
||||||
usb_adc_timer_ms: 10000,
|
usb_adc_timer_ms: 10000,
|
||||||
led0_timer_ms: 100,
|
led0_timer_ms: 100,
|
||||||
led1_timer_ms: 100,
|
led1_timer_ms: 100,
|
||||||
shutdown_timer_ms: 4 * 60 * 60 * 1000,
|
// 4 hours:
|
||||||
|
shutdown_timer_s: 4 * 60 * 60,
|
||||||
// led2_timer_ms: 100,
|
// led2_timer_ms: 100,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -517,6 +518,7 @@ fn app_main(mut p: hal::Peripherals) -> ! {
|
||||||
app.shut_down();
|
app.shut_down();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
riscv::asm::delay(20_000);
|
||||||
unsafe { system::enter_standby() };
|
unsafe { system::enter_standby() };
|
||||||
unsafe {
|
unsafe {
|
||||||
#[allow(static_mut_refs)]
|
#[allow(static_mut_refs)]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue