pub struct Fit0185<const CS_P: char, const CS_N: u8, const IN1_P: char, const IN1_N: u8, const IN2_P: char, const IN2_N: u8, const SLP_P: char, const SLP_N: u8, const DIS_P: char, const DIS_N: u8> { /* private fields */ }Expand description
Motor abstraction that combines a DRV8873 driver, four control pins, and a TIM2 encoder.
Implementations§
Source§impl<const CS_P: char, const CS_N: u8, const IN1_P: char, const IN1_N: u8, const IN2_P: char, const IN2_N: u8, const SLP_P: char, const SLP_N: u8, const DIS_P: char, const DIS_N: u8> Fit0185<CS_P, CS_N, IN1_P, IN1_N, IN2_P, IN2_N, SLP_P, SLP_N, DIS_P, DIS_N>
impl<const CS_P: char, const CS_N: u8, const IN1_P: char, const IN1_N: u8, const IN2_P: char, const IN2_N: u8, const SLP_P: char, const SLP_N: u8, const DIS_P: char, const DIS_N: u8> Fit0185<CS_P, CS_N, IN1_P, IN1_N, IN2_P, IN2_N, SLP_P, SLP_N, DIS_P, DIS_N>
Sourcepub fn new<In1Mode, In2Mode, SlpMode, DisMode>(
drv: Drv8873<CS_P, CS_N>,
enc: Encoder<TIM2>,
in1: Pin<IN1_P, IN1_N, In1Mode>,
in2: Pin<IN2_P, IN2_N, In2Mode>,
nsleep: Pin<SLP_P, SLP_N, SlpMode>,
disable: Pin<DIS_P, DIS_N, DisMode>,
counts_per_rev: u32,
) -> Self
pub fn new<In1Mode, In2Mode, SlpMode, DisMode>( drv: Drv8873<CS_P, CS_N>, enc: Encoder<TIM2>, in1: Pin<IN1_P, IN1_N, In1Mode>, in2: Pin<IN2_P, IN2_N, In2Mode>, nsleep: Pin<SLP_P, SLP_N, SlpMode>, disable: Pin<DIS_P, DIS_N, DisMode>, counts_per_rev: u32, ) -> Self
Construct a new SpiMotor.
counts_per_rev is the encoder resolution at the mechanical shaft (after any gear ratio).
Sourcepub fn free(
self,
) -> (Drv8873<CS_P, CS_N>, Encoder<TIM2>, Pin<IN1_P, IN1_N, Output<PushPull>>, Pin<IN2_P, IN2_N, Output<PushPull>>, Pin<SLP_P, SLP_N, Output<PushPull>>, Pin<DIS_P, DIS_N, Output<PushPull>>)
pub fn free( self, ) -> (Drv8873<CS_P, CS_N>, Encoder<TIM2>, Pin<IN1_P, IN1_N, Output<PushPull>>, Pin<IN2_P, IN2_N, Output<PushPull>>, Pin<SLP_P, SLP_N, Output<PushPull>>, Pin<DIS_P, DIS_N, Output<PushPull>>)
Tear down this motor and return its constituent parts.
Sourcepub fn init<I, PINS>(
&mut self,
spi_bus: &mut SpiBus<I, PINS>,
) -> Result<(), Error>where
I: Instance,
PINS: Pins<I>,
pub fn init<I, PINS>(
&mut self,
spi_bus: &mut SpiBus<I, PINS>,
) -> Result<(), Error>where
I: Instance,
PINS: Pins<I>,
Initialize and set base configuration for the DRV8873.
Sourcepub fn read_fault<I, PINS>(
&mut self,
spi_bus: &mut SpiBus<I, PINS>,
) -> Result<Fault, Error>where
I: Instance,
PINS: Pins<I>,
pub fn read_fault<I, PINS>(
&mut self,
spi_bus: &mut SpiBus<I, PINS>,
) -> Result<Fault, Error>where
I: Instance,
PINS: Pins<I>,
Read the FAULT status register.
Sourcepub fn read_diag<I, PINS>(
&mut self,
spi_bus: &mut SpiBus<I, PINS>,
) -> Result<Diag, Error>where
I: Instance,
PINS: Pins<I>,
pub fn read_diag<I, PINS>(
&mut self,
spi_bus: &mut SpiBus<I, PINS>,
) -> Result<Diag, Error>where
I: Instance,
PINS: Pins<I>,
Read the DIAG status register.
Sourcepub fn drv(&mut self) -> &mut Drv8873<CS_P, CS_N>
pub fn drv(&mut self) -> &mut Drv8873<CS_P, CS_N>
Access the underlying DRV8873 driver for advanced SPI control.
Sourcepub fn sleep(&mut self)
pub fn sleep(&mut self)
Put the driver into sleep mode.
This shuts down most of the internal circuitry to reduce power consumption.
Sourcepub fn enable_outputs(&mut self)
pub fn enable_outputs(&mut self)
Enable the motor and wake the driver if in sleep.
Sourcepub fn disable_outputs(&mut self)
pub fn disable_outputs(&mut self)
Disable the motor and coast.
Sourcepub fn position_ticks(&self) -> i32
pub fn position_ticks(&self) -> i32
Raw encoder position in ticks (signed).
Sourcepub fn position_revs(&self) -> f32
pub fn position_revs(&self) -> f32
Encoder position converted to revolutions.
Sourcepub fn ticks_for_revs(&self, revs: f32) -> i32
pub fn ticks_for_revs(&self, revs: f32) -> i32
Convert a number of revolutions into encoder ticks.
Sourcepub fn target_for_delta_ticks(&self, delta_ticks: i32) -> i32
pub fn target_for_delta_ticks(&self, delta_ticks: i32) -> i32
Compute a target tick position for a relative move from the current position.
Sourcepub fn target_for_delta_revs(&self, delta_revs: f32) -> i32
pub fn target_for_delta_revs(&self, delta_revs: f32) -> i32
Compute a target tick position for a relative move in revolutions.
Sourcepub fn encoder_mut(&mut self) -> &mut Encoder<TIM2>
pub fn encoder_mut(&mut self) -> &mut Encoder<TIM2>
Mutable access to the encoder.
Sourcepub fn apply_pid_output(&mut self, u: f32)
pub fn apply_pid_output(&mut self, u: f32)
Apply PID output.