-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update fault handling in driver crates.
- Add parity and motor fault handling - Add a full diagnostic struct for the A4964
- Loading branch information
1 parent
0d390b7
commit 51ee3c4
Showing
13 changed files
with
191 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
//! All diagnostics for the chip | ||
|
||
use bilge::prelude::*; | ||
use crate::a4964::readback::ReadbackDiagnostics; | ||
use crate::a4964::regs::diagnostic::*; | ||
|
||
#[bitsize(24)] | ||
#[derive(Clone, Copy, DefaultBits, DebugBits, FromBits)] | ||
pub struct Diagnostics { | ||
pub readback_diagnostics: ReadbackDiagnostics, | ||
pub status_diagnostics: Data, | ||
pub main_diagnostics: Header, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,3 +3,5 @@ | |
pub mod driver; | ||
pub mod io; | ||
pub mod regs; | ||
pub mod readback; | ||
pub mod diagnostics; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
//! Readback telemetry | ||
|
||
use core::ops::{Index, IndexMut}; | ||
use bilge::prelude::*; | ||
use super::regs::readback::ReadbackSelect; | ||
|
||
#[bitsize(10)] | ||
#[derive(Copy, Clone, PartialEq, DebugBits, DefaultBits, FromBits)] | ||
pub struct ReadbackDiagnostics { | ||
cl: bool, | ||
ch: bool, | ||
bl: bool, | ||
bh: bool, | ||
al: bool, | ||
ah: bool, | ||
bc: bool, | ||
bb: bool, | ||
ba: bool, | ||
osr: bool, | ||
} | ||
|
||
#[derive(Debug, Copy, Clone, PartialEq, Default)] | ||
pub struct Readback { | ||
diagnostic: u16, | ||
motor_speed: u16, | ||
avg_supply_current: u16, | ||
supply_voltage: u16, | ||
chip_temperature: u16, | ||
demand_input: u16, | ||
applied_bridge_peak_duty_cycle: u16, | ||
applied_phase_advance: u16, | ||
} | ||
|
||
impl Index<ReadbackSelect> for Readback { | ||
type Output = u16; | ||
fn index(&self, index: ReadbackSelect) -> &Self::Output { | ||
match index { | ||
ReadbackSelect::Diagnostic => &self.diagnostic, | ||
ReadbackSelect::MotorSpeed => &self.motor_speed, | ||
ReadbackSelect::AvgSupplyCurrent => &self.avg_supply_current, | ||
ReadbackSelect::SupplyVoltage => &self.supply_voltage, | ||
ReadbackSelect::ChipTemperature => &self.chip_temperature, | ||
ReadbackSelect::DemandInput => &self.demand_input, | ||
ReadbackSelect::AppliedBridgePeakDutyCycle => &self.applied_bridge_peak_duty_cycle, | ||
ReadbackSelect::AppliedPhaseAdvance => &self.applied_phase_advance, | ||
} | ||
} | ||
} | ||
|
||
impl IndexMut<ReadbackSelect> for Readback { | ||
fn index_mut(&mut self, index: ReadbackSelect) -> &mut Self::Output { | ||
match index { | ||
ReadbackSelect::Diagnostic => &mut self.diagnostic, | ||
ReadbackSelect::MotorSpeed => &mut self.motor_speed, | ||
ReadbackSelect::AvgSupplyCurrent => &mut self.avg_supply_current, | ||
ReadbackSelect::SupplyVoltage => &mut self.supply_voltage, | ||
ReadbackSelect::ChipTemperature => &mut self.chip_temperature, | ||
ReadbackSelect::DemandInput => &mut self.demand_input, | ||
ReadbackSelect::AppliedBridgePeakDutyCycle => &mut self.applied_bridge_peak_duty_cycle, | ||
ReadbackSelect::AppliedPhaseAdvance => &mut self.applied_phase_advance, | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.