diff options
Diffstat (limited to 'embassy-rp/src/pio_programs/rotary_encoder.rs')
| -rw-r--r-- | embassy-rp/src/pio_programs/rotary_encoder.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/embassy-rp/src/pio_programs/rotary_encoder.rs b/embassy-rp/src/pio_programs/rotary_encoder.rs index e520da8a3..70b3795e9 100644 --- a/embassy-rp/src/pio_programs/rotary_encoder.rs +++ b/embassy-rp/src/pio_programs/rotary_encoder.rs | |||
| @@ -1,11 +1,10 @@ | |||
| 1 | //! PIO backed quadrature encoder | 1 | //! PIO backed quadrature encoder |
| 2 | 2 | ||
| 3 | use fixed::traits::ToFixed; | ||
| 4 | |||
| 5 | use crate::gpio::Pull; | 3 | use crate::gpio::Pull; |
| 6 | use crate::pio::{ | 4 | use crate::pio::{ |
| 7 | Common, Config, Direction as PioDirection, FifoJoin, Instance, LoadedProgram, PioPin, ShiftDirection, StateMachine, | 5 | Common, Config, Direction as PioDirection, FifoJoin, Instance, LoadedProgram, PioPin, ShiftDirection, StateMachine, |
| 8 | }; | 6 | }; |
| 7 | use crate::pio_programs::clock_divider::calculate_pio_clock_divider; | ||
| 9 | use crate::Peri; | 8 | use crate::Peri; |
| 10 | 9 | ||
| 11 | /// This struct represents an Encoder program loaded into pio instruction memory. | 10 | /// This struct represents an Encoder program loaded into pio instruction memory. |
| @@ -48,7 +47,10 @@ impl<'d, T: Instance, const SM: usize> PioEncoder<'d, T, SM> { | |||
| 48 | cfg.set_in_pins(&[&pin_a, &pin_b]); | 47 | cfg.set_in_pins(&[&pin_a, &pin_b]); |
| 49 | cfg.fifo_join = FifoJoin::RxOnly; | 48 | cfg.fifo_join = FifoJoin::RxOnly; |
| 50 | cfg.shift_in.direction = ShiftDirection::Left; | 49 | cfg.shift_in.direction = ShiftDirection::Left; |
| 51 | cfg.clock_divider = 10_000.to_fixed(); | 50 | |
| 51 | // Target 12.5 KHz PIO clock | ||
| 52 | cfg.clock_divider = calculate_pio_clock_divider(12_500); | ||
| 53 | |||
| 52 | cfg.use_program(&program.prg, &[]); | 54 | cfg.use_program(&program.prg, &[]); |
| 53 | sm.set_config(&cfg); | 55 | sm.set_config(&cfg); |
| 54 | sm.set_enable(true); | 56 | sm.set_enable(true); |
