diff options
| author | huntc <[email protected]> | 2022-02-05 08:05:23 +1100 |
|---|---|---|
| committer | huntc <[email protected]> | 2022-02-05 08:05:23 +1100 |
| commit | df5ba727f2c8bd3f2a67f51a3f43d7f47b011b1c (patch) | |
| tree | dbc3853104a92609140a8ab8a350b621b9faf1d7 | |
| parent | 81d31e43ebf947ff2cd91b3a6f6af092fcb7e2b7 (diff) | |
Further API simplification for the single seq scenario
| -rw-r--r-- | embassy-nrf/src/pwm.rs | 4 | ||||
| -rw-r--r-- | examples/nrf/src/bin/pwm_sequence.rs | 5 | ||||
| -rw-r--r-- | examples/nrf/src/bin/pwm_sequence_ppi.rs | 5 | ||||
| -rw-r--r-- | examples/nrf/src/bin/pwm_sequence_ws2812b.rs | 5 |
4 files changed, 8 insertions, 11 deletions
diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs index 895292bc8..01b1f48d9 100644 --- a/embassy-nrf/src/pwm.rs +++ b/embassy-nrf/src/pwm.rs | |||
| @@ -323,9 +323,9 @@ pub struct SingleSequencer<'d, 's, T: Instance> { | |||
| 323 | 323 | ||
| 324 | impl<'d, 's, T: Instance> SingleSequencer<'d, 's, T> { | 324 | impl<'d, 's, T: Instance> SingleSequencer<'d, 's, T> { |
| 325 | /// Create a new sequencer | 325 | /// Create a new sequencer |
| 326 | pub fn new(pwm: &'s mut SequencePwm<'d, T>, sequence: Sequence<'s>) -> Self { | 326 | pub fn new(pwm: &'s mut SequencePwm<'d, T>, words: &'s [u16], config: SequenceConfig) -> Self { |
| 327 | Self { | 327 | Self { |
| 328 | sequencer: Sequencer::new(pwm, sequence, None), | 328 | sequencer: Sequencer::new(pwm, Sequence::new(words, config), None), |
| 329 | } | 329 | } |
| 330 | } | 330 | } |
| 331 | 331 | ||
diff --git a/examples/nrf/src/bin/pwm_sequence.rs b/examples/nrf/src/bin/pwm_sequence.rs index a76b1110b..f06ea0b19 100644 --- a/examples/nrf/src/bin/pwm_sequence.rs +++ b/examples/nrf/src/bin/pwm_sequence.rs | |||
| @@ -9,7 +9,7 @@ use embassy::executor::Spawner; | |||
| 9 | use embassy::time::{Duration, Timer}; | 9 | use embassy::time::{Duration, Timer}; |
| 10 | use embassy_nrf::gpio::NoPin; | 10 | use embassy_nrf::gpio::NoPin; |
| 11 | use embassy_nrf::pwm::{ | 11 | use embassy_nrf::pwm::{ |
| 12 | Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, | 12 | Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, |
| 13 | }; | 13 | }; |
| 14 | use embassy_nrf::Peripherals; | 14 | use embassy_nrf::Peripherals; |
| 15 | 15 | ||
| @@ -31,8 +31,7 @@ async fn main(_spawner: Spawner, p: Peripherals) { | |||
| 31 | p.PWM0, p.P0_13, NoPin, NoPin, NoPin, config, | 31 | p.PWM0, p.P0_13, NoPin, NoPin, NoPin, config, |
| 32 | )); | 32 | )); |
| 33 | 33 | ||
| 34 | let sequence = Sequence::new(&seq_words, seq_config); | 34 | let sequencer = SingleSequencer::new(&mut pwm, &seq_words, seq_config); |
| 35 | let sequencer = SingleSequencer::new(&mut pwm, sequence); | ||
| 36 | unwrap!(sequencer.start(SingleSequenceMode::Times(1))); | 35 | unwrap!(sequencer.start(SingleSequenceMode::Times(1))); |
| 37 | 36 | ||
| 38 | // we can abort a sequence if we need to before its complete with pwm.stop() | 37 | // we can abort a sequence if we need to before its complete with pwm.stop() |
diff --git a/examples/nrf/src/bin/pwm_sequence_ppi.rs b/examples/nrf/src/bin/pwm_sequence_ppi.rs index 7e58c37e6..c25c5e10d 100644 --- a/examples/nrf/src/bin/pwm_sequence_ppi.rs +++ b/examples/nrf/src/bin/pwm_sequence_ppi.rs | |||
| @@ -12,7 +12,7 @@ use embassy_nrf::gpio::{Input, NoPin, Pull}; | |||
| 12 | use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity}; | 12 | use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity}; |
| 13 | use embassy_nrf::ppi::Ppi; | 13 | use embassy_nrf::ppi::Ppi; |
| 14 | use embassy_nrf::pwm::{ | 14 | use embassy_nrf::pwm::{ |
| 15 | Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, | 15 | Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, |
| 16 | }; | 16 | }; |
| 17 | use embassy_nrf::Peripherals; | 17 | use embassy_nrf::Peripherals; |
| 18 | 18 | ||
| @@ -53,8 +53,7 @@ async fn main(_spawner: Spawner, p: Peripherals) { | |||
| 53 | let start = unsafe { pwm.task_start_seq0() }; | 53 | let start = unsafe { pwm.task_start_seq0() }; |
| 54 | let stop = unsafe { pwm.task_stop() }; | 54 | let stop = unsafe { pwm.task_stop() }; |
| 55 | 55 | ||
| 56 | let sequence = Sequence::new(&seq_words, seq_config); | 56 | let sequencer = SingleSequencer::new(&mut pwm, &seq_words, seq_config); |
| 57 | let sequencer = SingleSequencer::new(&mut pwm, sequence); | ||
| 58 | unwrap!(sequencer.start(SingleSequenceMode::Infinite)); | 57 | unwrap!(sequencer.start(SingleSequenceMode::Infinite)); |
| 59 | 58 | ||
| 60 | let mut ppi = Ppi::new_one_to_one(p.PPI_CH1, button1.event_in(), start); | 59 | let mut ppi = Ppi::new_one_to_one(p.PPI_CH1, button1.event_in(), start); |
diff --git a/examples/nrf/src/bin/pwm_sequence_ws2812b.rs b/examples/nrf/src/bin/pwm_sequence_ws2812b.rs index 71ddd5283..d1a027a7e 100644 --- a/examples/nrf/src/bin/pwm_sequence_ws2812b.rs +++ b/examples/nrf/src/bin/pwm_sequence_ws2812b.rs | |||
| @@ -9,7 +9,7 @@ use embassy::executor::Spawner; | |||
| 9 | use embassy::time::{Duration, Timer}; | 9 | use embassy::time::{Duration, Timer}; |
| 10 | use embassy_nrf::gpio::NoPin; | 10 | use embassy_nrf::gpio::NoPin; |
| 11 | use embassy_nrf::pwm::{ | 11 | use embassy_nrf::pwm::{ |
| 12 | Config, Prescaler, Sequence, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode, | 12 | Config, Prescaler, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode, |
| 13 | SingleSequencer, | 13 | SingleSequencer, |
| 14 | }; | 14 | }; |
| 15 | use embassy_nrf::Peripherals; | 15 | use embassy_nrf::Peripherals; |
| @@ -54,8 +54,7 @@ async fn main(_spawner: Spawner, p: Peripherals) { | |||
| 54 | let mut bit_value = T0H; | 54 | let mut bit_value = T0H; |
| 55 | 55 | ||
| 56 | loop { | 56 | loop { |
| 57 | let sequence0 = Sequence::new(&seq_words, seq_config.clone()); | 57 | let sequences = SingleSequencer::new(&mut pwm, &seq_words, seq_config.clone()); |
| 58 | let sequences = SingleSequencer::new(&mut pwm, sequence0); | ||
| 59 | unwrap!(sequences.start(SingleSequenceMode::Times(1))); | 58 | unwrap!(sequences.start(SingleSequenceMode::Times(1))); |
| 60 | 59 | ||
| 61 | Timer::after(Duration::from_millis(50)).await; | 60 | Timer::after(Duration::from_millis(50)).await; |
