Further API simplification for the single seq scenario
This commit is contained in:
parent
81d31e43eb
commit
df5ba727f2
4 changed files with 8 additions and 11 deletions
|
@ -323,9 +323,9 @@ pub struct SingleSequencer<'d, 's, T: Instance> {
|
||||||
|
|
||||||
impl<'d, 's, T: Instance> SingleSequencer<'d, 's, T> {
|
impl<'d, 's, T: Instance> SingleSequencer<'d, 's, T> {
|
||||||
/// Create a new sequencer
|
/// Create a new sequencer
|
||||||
pub fn new(pwm: &'s mut SequencePwm<'d, T>, sequence: Sequence<'s>) -> Self {
|
pub fn new(pwm: &'s mut SequencePwm<'d, T>, words: &'s [u16], config: SequenceConfig) -> Self {
|
||||||
Self {
|
Self {
|
||||||
sequencer: Sequencer::new(pwm, sequence, None),
|
sequencer: Sequencer::new(pwm, Sequence::new(words, config), None),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ use embassy::executor::Spawner;
|
||||||
use embassy::time::{Duration, Timer};
|
use embassy::time::{Duration, Timer};
|
||||||
use embassy_nrf::gpio::NoPin;
|
use embassy_nrf::gpio::NoPin;
|
||||||
use embassy_nrf::pwm::{
|
use embassy_nrf::pwm::{
|
||||||
Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer,
|
Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer,
|
||||||
};
|
};
|
||||||
use embassy_nrf::Peripherals;
|
use embassy_nrf::Peripherals;
|
||||||
|
|
||||||
|
@ -31,8 +31,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||||
p.PWM0, p.P0_13, NoPin, NoPin, NoPin, config,
|
p.PWM0, p.P0_13, NoPin, NoPin, NoPin, config,
|
||||||
));
|
));
|
||||||
|
|
||||||
let sequence = Sequence::new(&seq_words, seq_config);
|
let sequencer = SingleSequencer::new(&mut pwm, &seq_words, seq_config);
|
||||||
let sequencer = SingleSequencer::new(&mut pwm, sequence);
|
|
||||||
unwrap!(sequencer.start(SingleSequenceMode::Times(1)));
|
unwrap!(sequencer.start(SingleSequenceMode::Times(1)));
|
||||||
|
|
||||||
// we can abort a sequence if we need to before its complete with pwm.stop()
|
// we can abort a sequence if we need to before its complete with pwm.stop()
|
||||||
|
|
|
@ -12,7 +12,7 @@ use embassy_nrf::gpio::{Input, NoPin, Pull};
|
||||||
use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity};
|
use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity};
|
||||||
use embassy_nrf::ppi::Ppi;
|
use embassy_nrf::ppi::Ppi;
|
||||||
use embassy_nrf::pwm::{
|
use embassy_nrf::pwm::{
|
||||||
Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer,
|
Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer,
|
||||||
};
|
};
|
||||||
use embassy_nrf::Peripherals;
|
use embassy_nrf::Peripherals;
|
||||||
|
|
||||||
|
@ -53,8 +53,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||||
let start = unsafe { pwm.task_start_seq0() };
|
let start = unsafe { pwm.task_start_seq0() };
|
||||||
let stop = unsafe { pwm.task_stop() };
|
let stop = unsafe { pwm.task_stop() };
|
||||||
|
|
||||||
let sequence = Sequence::new(&seq_words, seq_config);
|
let sequencer = SingleSequencer::new(&mut pwm, &seq_words, seq_config);
|
||||||
let sequencer = SingleSequencer::new(&mut pwm, sequence);
|
|
||||||
unwrap!(sequencer.start(SingleSequenceMode::Infinite));
|
unwrap!(sequencer.start(SingleSequenceMode::Infinite));
|
||||||
|
|
||||||
let mut ppi = Ppi::new_one_to_one(p.PPI_CH1, button1.event_in(), start);
|
let mut ppi = Ppi::new_one_to_one(p.PPI_CH1, button1.event_in(), start);
|
||||||
|
|
|
@ -9,7 +9,7 @@ use embassy::executor::Spawner;
|
||||||
use embassy::time::{Duration, Timer};
|
use embassy::time::{Duration, Timer};
|
||||||
use embassy_nrf::gpio::NoPin;
|
use embassy_nrf::gpio::NoPin;
|
||||||
use embassy_nrf::pwm::{
|
use embassy_nrf::pwm::{
|
||||||
Config, Prescaler, Sequence, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode,
|
Config, Prescaler, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode,
|
||||||
SingleSequencer,
|
SingleSequencer,
|
||||||
};
|
};
|
||||||
use embassy_nrf::Peripherals;
|
use embassy_nrf::Peripherals;
|
||||||
|
@ -54,8 +54,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||||
let mut bit_value = T0H;
|
let mut bit_value = T0H;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let sequence0 = Sequence::new(&seq_words, seq_config.clone());
|
let sequences = SingleSequencer::new(&mut pwm, &seq_words, seq_config.clone());
|
||||||
let sequences = SingleSequencer::new(&mut pwm, sequence0);
|
|
||||||
unwrap!(sequences.start(SingleSequenceMode::Times(1)));
|
unwrap!(sequences.start(SingleSequenceMode::Times(1)));
|
||||||
|
|
||||||
Timer::after(Duration::from_millis(50)).await;
|
Timer::after(Duration::from_millis(50)).await;
|
||||||
|
|
Loading…
Reference in a new issue