add coin button handling and move coin dac inside app
This commit is contained in:
parent
930d10218f
commit
c8c42c0194
5 changed files with 81 additions and 57 deletions
|
|
@ -20,8 +20,8 @@ pub unsafe fn init_gpio_irq(pin: u8, port: u8, rising: bool, falling: bool) {
|
|||
});
|
||||
}
|
||||
|
||||
pub fn clear_interrupt(coin_pin: u8, button_pin: u8) -> crate::InputFlags {
|
||||
let mut input_flags = crate::InputFlags::default();
|
||||
pub fn clear_interrupt(coin_pin: u8, button_pin: u8) -> [bool; 2] {
|
||||
let mut output = [false, false];
|
||||
|
||||
let exti = &hal::pac::EXTI;
|
||||
|
||||
|
|
@ -35,53 +35,23 @@ pub fn clear_interrupt(coin_pin: u8, button_pin: u8) -> crate::InputFlags {
|
|||
|
||||
// We don't handle or change any EXTI lines above 24.
|
||||
let bits = bits.0 & 0x00FFFFFF;
|
||||
#[cfg(feature = "enable_print")]
|
||||
println!("bits: {bits:08x}");
|
||||
|
||||
// coin_flag
|
||||
if (bits & (0x1 << coin_pin)) != 0x0 {
|
||||
#[cfg(feature = "enable_print")]
|
||||
println!("coin irq!");
|
||||
input_flags.sense_coin_flag = true;
|
||||
output[0] = true;
|
||||
}
|
||||
|
||||
// button_flag
|
||||
if (bits & (0x1 << button_pin)) != 0x0 {
|
||||
#[cfg(feature = "enable_print")]
|
||||
println!("main_btn irq!");
|
||||
input_flags.main_btn_flag = true;
|
||||
// CHECK PC6
|
||||
// unsafe {
|
||||
// let mut val = 0;
|
||||
// let reg: u32 = 0x40011008;
|
||||
// val = (reg as *mut u32).read_volatile();
|
||||
// if ((val >> 0x6) & 0x1) == 0x0 {
|
||||
// input_flags.volume_btn_flag = true;
|
||||
// #[cfg(feature = "enable_print")]
|
||||
// println!("volume irq!");
|
||||
// println!("CBANK: {val:08x}");
|
||||
// }
|
||||
// }
|
||||
// // CHECK PD6
|
||||
// unsafe {
|
||||
// let mut val = 0;
|
||||
// let reg: u32 = 0x40011408;
|
||||
// val = (reg as *mut u32).read_volatile();
|
||||
// // if ((val >> 0x6) & 0x1) == 0x0 {
|
||||
// input_flags.main_btn_flag = true;
|
||||
// #[cfg(feature = "enable_print")]
|
||||
// println!("main_btn irq!");
|
||||
// println!("DBANK: {val:08x}");
|
||||
// // }
|
||||
// }
|
||||
output[1] = true;
|
||||
}
|
||||
|
||||
// light_ctrl_btn_flag
|
||||
// if (bits & (0x1 << light_ctrl_btn_pin)) != 0x0 {
|
||||
// #[cfg(feature = "enable_print")]
|
||||
// println!("light ctrl btn irq!");
|
||||
// input_flags.light_ctrl_btn_flag = true;
|
||||
// }
|
||||
|
||||
// Clear pending - Clears the EXTI's line pending bits.
|
||||
exti.intfr().write(|w| w.0 = bits);
|
||||
|
||||
|
|
@ -94,7 +64,7 @@ pub fn clear_interrupt(coin_pin: u8, button_pin: u8) -> crate::InputFlags {
|
|||
exti.intenr().modify(|w| w.set_mr(coin_pin, true)); // enable interrupt
|
||||
exti.intenr().modify(|w| w.set_mr(button_pin, true)); // enable interrupt
|
||||
|
||||
input_flags
|
||||
output
|
||||
}
|
||||
|
||||
/// enter standby (SLEEPDEEP) mode, with WFE enabled.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue