diff options
| author | Dario Nieuwenhuis <[email protected]> | 2025-05-13 22:33:56 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-05-13 22:33:56 +0200 |
| commit | 102258c0b07ca581d5dabdbd540febd54c0f4443 (patch) | |
| tree | 05765308bab9131f93cd23e1aa5fe306122e8db7 /embassy-rp/src/pio_programs/rotary_encoder.rs | |
| parent | 8e7e4332b40707e8d36338ad8ec486320bb3538f (diff) | |
| parent | aa85293457039a336eec1f10bcd32d47d7223f95 (diff) | |
Merge branch 'main' into add-rng
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); |
