initial demo
This commit is contained in:
parent
1a714bd907
commit
e3235b34a4
8 changed files with 167 additions and 51 deletions
|
|
@ -95,7 +95,7 @@ fn main() -> ! {
|
|||
let p = hal::init(config);
|
||||
|
||||
// coin button input setup
|
||||
let b1 = Input::new(p.PD4, Pull::Up);
|
||||
let coin_button = Input::new(p.PD4, Pull::Up);
|
||||
|
||||
// p.EXTI4
|
||||
// let ei = hal::exti::ExtiInput::new(p.PD4, p.EXTI4, Pull::Up);
|
||||
|
|
@ -151,47 +151,143 @@ fn main() -> ! {
|
|||
let tt0_fire_rate_hz = 9;
|
||||
let tt0_tick_per_service = (interfaces.config.tick_rate_hz/(tt0_fire_rate_hz * 2));
|
||||
let tt0_service_data = TickServiceData::new(tt0_tick_per_service);
|
||||
let tt0 = TickTimerService::new(tt0_service_data);
|
||||
let mut tt0 = TickTimerService::new(tt0_service_data, true);
|
||||
|
||||
// tick timer 1
|
||||
let tt1_fire_rate_hz = 3;
|
||||
let tt1_tick_per_service = (interfaces.config.tick_rate_hz/(tt1_fire_rate_hz * 2));
|
||||
let tt1_service_data = TickServiceData::new(tt1_tick_per_service);
|
||||
let tt1 = TickTimerService::new(tt1_service_data);
|
||||
let mut tt1 = TickTimerService::new(tt1_service_data, true);
|
||||
|
||||
// debounce timer
|
||||
// let db_ticks = interfaces.config.tick_rate_hz / 100;
|
||||
let db_ticks = interfaces.config.tick_rate_hz / 100;
|
||||
let db_timer_data = TickServiceData::new(db_ticks);
|
||||
let mut db_timer = TickTimerService::new(db_timer_data, false);
|
||||
db_timer.reset();
|
||||
|
||||
// short press timer
|
||||
let sp_ticks = 2 * interfaces.config.tick_rate_hz;
|
||||
let sp_timer_data = TickServiceData::new(sp_ticks);
|
||||
let mut sp_timer = TickTimerService::new(sp_timer_data, false);
|
||||
sp_timer.reset();
|
||||
|
||||
// long press timer
|
||||
let lp_ticks = 5 * interfaces.config.tick_rate_hz;
|
||||
let lp_timer_data = TickServiceData::new(lp_ticks);
|
||||
let mut lp_timer = TickTimerService::new(lp_timer_data, false);
|
||||
lp_timer.reset();
|
||||
|
||||
let mut delay = Delay;
|
||||
let tick_interval_us = 1000000/interfaces.config.tick_rate_hz;
|
||||
|
||||
|
||||
interfaces.led0.set_amplitude(100);
|
||||
interfaces.led1.set_amplitude(100);
|
||||
|
||||
|
||||
loop {
|
||||
|
||||
tt0.tick();
|
||||
tt1.tick();
|
||||
// TODO: timer
|
||||
// if app.led0.need_service() {
|
||||
if tt0.need_service() {
|
||||
interfaces.led0.set_amplitude(led0_dcs[led0_index]);
|
||||
led0_index += 1;
|
||||
if led0_index > led0_dcs.len() - 1 {
|
||||
led0_index = 0;
|
||||
// wait for button to be released if it's pressed
|
||||
if (coin_button.is_low()) {
|
||||
loop {
|
||||
if coin_button.is_high() && !db_timer.is_enabled() {
|
||||
db_timer.enable(true);
|
||||
}
|
||||
if db_timer.need_service() {
|
||||
db_timer.reset();
|
||||
if coin_button.is_high() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
db_timer.tick();
|
||||
delay.delay_us(tick_interval_us as u32);
|
||||
}
|
||||
tt0.service();
|
||||
}
|
||||
// }
|
||||
|
||||
// if app.led1.need_service() {
|
||||
if tt1.need_service() {
|
||||
interfaces.led1.set_amplitude(led1_dcs[led1_index]);
|
||||
led1_index += 1;
|
||||
if led1_index > led1_dcs.len() - 1 {
|
||||
led1_index = 0;
|
||||
// wait for button input
|
||||
loop {
|
||||
if coin_button.is_low() && !db_timer.is_enabled() {
|
||||
db_timer.enable(true);
|
||||
}
|
||||
tt1.service()
|
||||
if db_timer.need_service() {
|
||||
db_timer.reset();
|
||||
if coin_button.is_low() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
db_timer.tick();
|
||||
delay.delay_us(tick_interval_us as u32);
|
||||
}
|
||||
|
||||
interfaces.service();
|
||||
let mut active = true;
|
||||
tt0.enable(true);
|
||||
tt1.enable(true);
|
||||
loop {
|
||||
if active {
|
||||
tt0.tick();
|
||||
tt1.tick();
|
||||
|
||||
delay.delay_us(tick_interval_us as u32);
|
||||
if tt0.need_service() {
|
||||
interfaces.led0.set_amplitude(led0_dcs[led0_index]);
|
||||
led0_index += 1;
|
||||
if led0_index > led0_dcs.len() - 1 {
|
||||
led0_index = 0;
|
||||
}
|
||||
tt0.service();
|
||||
}
|
||||
|
||||
if tt1.need_service() {
|
||||
interfaces.led1.set_amplitude(led1_dcs[led1_index]);
|
||||
led1_index += 1;
|
||||
if led1_index > led1_dcs.len() - 1 {
|
||||
led1_index = 0;
|
||||
}
|
||||
tt1.service()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// buttons
|
||||
|
||||
// SP
|
||||
if coin_button.is_low() && !sp_timer.is_enabled() {
|
||||
sp_timer.reset();
|
||||
sp_timer.enable(true);
|
||||
}
|
||||
if sp_timer.need_service() {
|
||||
sp_timer.reset();
|
||||
if coin_button.is_low() {
|
||||
active = false;
|
||||
// TODO: fix polarity
|
||||
interfaces.led0.set_amplitude(90);
|
||||
interfaces.led1.set_amplitude(90);
|
||||
}
|
||||
}
|
||||
if coin_button.is_high() && sp_timer.is_enabled() {
|
||||
sp_timer.reset();
|
||||
}
|
||||
sp_timer.tick();
|
||||
|
||||
|
||||
// LP
|
||||
if coin_button.is_low() && !lp_timer.is_enabled() {
|
||||
lp_timer.reset();
|
||||
lp_timer.enable(true);
|
||||
}
|
||||
if lp_timer.need_service() {
|
||||
lp_timer.reset();
|
||||
if coin_button.is_low() {
|
||||
interfaces.led0.set_amplitude(100);
|
||||
interfaces.led1.set_amplitude(100);
|
||||
// break;
|
||||
}
|
||||
}
|
||||
if coin_button.is_high() && lp_timer.is_enabled() {
|
||||
lp_timer.reset();
|
||||
}
|
||||
lp_timer.tick();
|
||||
|
||||
interfaces.service();
|
||||
delay.delay_us(tick_interval_us as u32);
|
||||
}
|
||||
}
|
||||
// // DAC servicer setup
|
||||
// let mut pwm_dac_interface = SimplePwmDacHandle{pin: core::cell::RefCell::new(pwm), ch: dac_ch};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue