aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhuntc <[email protected]>2022-02-05 08:05:23 +1100
committerhuntc <[email protected]>2022-02-05 08:05:23 +1100
commitdf5ba727f2c8bd3f2a67f51a3f43d7f47b011b1c (patch)
treedbc3853104a92609140a8ab8a350b621b9faf1d7
parent81d31e43ebf947ff2cd91b3a6f6af092fcb7e2b7 (diff)
Further API simplification for the single seq scenario
-rw-r--r--embassy-nrf/src/pwm.rs4
-rw-r--r--examples/nrf/src/bin/pwm_sequence.rs5
-rw-r--r--examples/nrf/src/bin/pwm_sequence_ppi.rs5
-rw-r--r--examples/nrf/src/bin/pwm_sequence_ws2812b.rs5
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
324impl<'d, 's, T: Instance> SingleSequencer<'d, 's, T> { 324impl<'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;
9use embassy::time::{Duration, Timer}; 9use embassy::time::{Duration, Timer};
10use embassy_nrf::gpio::NoPin; 10use embassy_nrf::gpio::NoPin;
11use embassy_nrf::pwm::{ 11use embassy_nrf::pwm::{
12 Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, 12 Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer,
13}; 13};
14use embassy_nrf::Peripherals; 14use 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};
12use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity}; 12use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity};
13use embassy_nrf::ppi::Ppi; 13use embassy_nrf::ppi::Ppi;
14use embassy_nrf::pwm::{ 14use embassy_nrf::pwm::{
15 Config, Prescaler, Sequence, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer, 15 Config, Prescaler, SequenceConfig, SequencePwm, SingleSequenceMode, SingleSequencer,
16}; 16};
17use embassy_nrf::Peripherals; 17use 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;
9use embassy::time::{Duration, Timer}; 9use embassy::time::{Duration, Timer};
10use embassy_nrf::gpio::NoPin; 10use embassy_nrf::gpio::NoPin;
11use embassy_nrf::pwm::{ 11use embassy_nrf::pwm::{
12 Config, Prescaler, Sequence, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode, 12 Config, Prescaler, SequenceConfig, SequenceLoad, SequencePwm, SingleSequenceMode,
13 SingleSequencer, 13 SingleSequencer,
14}; 14};
15use embassy_nrf::Peripherals; 15use 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;