add battery level checking

This commit is contained in:
sigil-03 2025-11-15 15:33:38 -07:00
parent f3ac43614c
commit 5934336984

View file

@ -249,6 +249,15 @@ use insert_coin::TickTimerService;
use insert_coin::{TickService, TickServiceData};
fn app_main(mut p: hal::Peripherals) {
// initialize ADC core first, and exit if battery is too low
let mut adc = hal::adc::Adc::new(p.ADC1, Default::default());
let mut batt_monitor_pin = p.PD4;
let mut adc_core = AdcCore::new(adc, batt_monitor_pin);
let bv = adc_core.get_battery_voltage();
if bv < 421 {
adc_core.shutdown();
return;
}
// === output setup ===
// LED0 output setup
@ -292,9 +301,9 @@ fn app_main(mut p: hal::Peripherals) {
// === input setup ===
// adc
let mut adc = hal::adc::Adc::new(p.ADC1, Default::default());
let mut batt_monitor_pin = p.PD4;
let adc_core = AdcCore::new(adc, batt_monitor_pin);
// let mut adc = hal::adc::Adc::new(p.ADC1, Default::default());
// let mut batt_monitor_pin = p.PD4;
// let adc_core = AdcCore::new(adc, batt_monitor_pin);
// adc2
// let mut usb_detect_dc = hal::adc::Adc::new(p.ADC1, Default::default());
@ -555,8 +564,18 @@ fn shutdown_main(p: hal::Peripherals) {
riscv::asm::delay(1_000_000);
unsafe { system::enter_standby() };
riscv::asm::wfi();
loop {
unsafe { system::enter_standby() };
riscv::asm::wfi();
unsafe {
#[allow(static_mut_refs)]
if (INPUT_FLAGS.sense_coin_flag.active() || INPUT_FLAGS.main_btn_flag.active())
// && app.should_wake()
{
break;
}
}
}
// loop {
// unsafe {