disable scanner when running motors
This commit is contained in:
parent
7df4e4e28f
commit
d508e3bca6
2 changed files with 15 additions and 2 deletions
|
@ -1,4 +1,6 @@
|
||||||
|
|
||||||
|
use core::sync::atomic::AtomicBool;
|
||||||
|
|
||||||
use embassy_rp::gpio::Input;
|
use embassy_rp::gpio::Input;
|
||||||
use embassy_rp::multicore::spawn_core1;
|
use embassy_rp::multicore::spawn_core1;
|
||||||
use embassy_rp::multicore::Stack;
|
use embassy_rp::multicore::Stack;
|
||||||
|
@ -14,6 +16,9 @@ use super::BIT;
|
||||||
|
|
||||||
use super::READ_CARD;
|
use super::READ_CARD;
|
||||||
|
|
||||||
|
/// disable scanner when doing emf heavy operations
|
||||||
|
pub static LOCKOUT: AtomicBool = AtomicBool::new(false);
|
||||||
|
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
pub(crate) async fn data_extractor() -> ! {
|
pub(crate) async fn data_extractor() -> ! {
|
||||||
let mut last_bit = 0;
|
let mut last_bit = 0;
|
||||||
|
@ -26,7 +31,12 @@ pub(crate) async fn data_extractor() -> ! {
|
||||||
if bit == last_bit {
|
if bit == last_bit {
|
||||||
if card !=0 {
|
if card !=0 {
|
||||||
info!("read a card: {card:#16x}");
|
info!("read a card: {card:#16x}");
|
||||||
CHANNEL.send(card).await;
|
if LOCKOUT.load(core::sync::atomic::Ordering::Relaxed) {
|
||||||
|
info!("scanner disabled");
|
||||||
|
} else {
|
||||||
|
CHANNEL.send(card).await;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
critical_section::with(|cs| {
|
critical_section::with(|cs| {
|
||||||
READ_CARD.replace(cs, 0);
|
READ_CARD.replace(cs, 0);
|
||||||
|
|
|
@ -4,6 +4,8 @@ use embassy_rp::pwm;
|
||||||
use embassy_time::Timer;
|
use embassy_time::Timer;
|
||||||
use rand::RngCore;
|
use rand::RngCore;
|
||||||
|
|
||||||
|
use crate::scanner::LOCKOUT;
|
||||||
|
|
||||||
use super::WAGS;
|
use super::WAGS;
|
||||||
|
|
||||||
use embassy_rp::pwm::Pwm;
|
use embassy_rp::pwm::Pwm;
|
||||||
|
@ -30,6 +32,7 @@ pub(crate) async fn wiggle_manager(pwm: PWM_SLICE5, head: PIN_26, tail: PIN_27)
|
||||||
wags = WAGS.load(core::sync::atomic::Ordering::SeqCst);
|
wags = WAGS.load(core::sync::atomic::Ordering::SeqCst);
|
||||||
if wags != 0 {
|
if wags != 0 {
|
||||||
WAGS.store(0, core::sync::atomic::Ordering::SeqCst);
|
WAGS.store(0, core::sync::atomic::Ordering::SeqCst);
|
||||||
|
LOCKOUT.store(true, core::sync::atomic::Ordering::SeqCst);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +40,7 @@ pub(crate) async fn wiggle_manager(pwm: PWM_SLICE5, head: PIN_26, tail: PIN_27)
|
||||||
pwm.set_config(&c);
|
pwm.set_config(&c);
|
||||||
|
|
||||||
Timer::after_millis(50).await;
|
Timer::after_millis(50).await;
|
||||||
|
LOCKOUT.store(false, core::sync::atomic::Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
|
|
||||||
let positions = [6200,4800,6248,4700, 5500];
|
let positions = [6200,4800,6248,4700, 5500];
|
||||||
|
|
Loading…
Reference in a new issue