aboutsummaryrefslogtreecommitdiff
path: root/embassy-rp/src/pio_programs/rotary_encoder.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-05-13 22:33:56 +0200
committerGitHub <[email protected]>2025-05-13 22:33:56 +0200
commit102258c0b07ca581d5dabdbd540febd54c0f4443 (patch)
tree05765308bab9131f93cd23e1aa5fe306122e8db7 /embassy-rp/src/pio_programs/rotary_encoder.rs
parent8e7e4332b40707e8d36338ad8ec486320bb3538f (diff)
parentaa85293457039a336eec1f10bcd32d47d7223f95 (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.rs8
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
3use fixed::traits::ToFixed;
4
5use crate::gpio::Pull; 3use crate::gpio::Pull;
6use crate::pio::{ 4use 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};
7use crate::pio_programs::clock_divider::calculate_pio_clock_divider;
9use crate::Peri; 8use 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);