1#[cfg_attr(feature = "defmt", derive(defmt::Format))]
2#[derive(Copy, Clone, Debug)]
3pub struct DeadtimeConfig {
4 pub(crate) prescaler: DeadtimePrescaler,
6
7 pub(crate) deadtime_rising_value: u16,
9
10 pub(crate) deadtime_rising_sign: bool,
12
13 pub(crate) deadtime_falling_value: u16,
15
16 pub(crate) deadtime_falling_sign: bool,
18}
19
20impl DeadtimeConfig {
21 pub fn prescaler(mut self, value: DeadtimePrescaler) -> Self {
23 self.prescaler = value;
24 self
25 }
26
27 pub fn deadtime_rising_value(mut self, value: u16) -> Self {
29 assert!(value < (1 << 9));
31
32 self.deadtime_rising_value = value;
33
34 self
35 }
36
37 pub fn deadtime_rising_sign(mut self, is_negative: bool) -> Self {
38 self.deadtime_rising_sign = is_negative;
39 self
40 }
41
42 pub fn deadtime_falling_value(mut self, value: u16) -> Self {
44 assert!(value < (1 << 9));
46
47 self.deadtime_falling_value = value;
48
49 self
50 }
51
52 pub fn deadtime_falling_sign(mut self, is_negative: bool) -> Self {
53 self.deadtime_falling_sign = is_negative;
54 self
55 }
56}
57
58impl Default for DeadtimeConfig {
59 fn default() -> Self {
60 Self {
61 prescaler: DeadtimePrescaler::Thrtim,
62 deadtime_rising_value: 170, deadtime_rising_sign: false,
64 deadtime_falling_value: 170, deadtime_falling_sign: false,
66 }
67 }
68}
69
70#[cfg_attr(feature = "defmt", derive(defmt::Format))]
71#[derive(Copy, Clone, Debug)]
72pub enum DeadtimePrescaler {
73 ThrtimDiv8 = 0b000,
74 ThrtimDiv4 = 0b001,
75 ThrtimDiv2 = 0b010,
76 Thrtim = 0b011,
77 ThrtimMul2 = 0b100,
78 ThrtimMul4 = 0b101,
79 ThrtimMul8 = 0b110,
80 ThrtimMul16 = 0b111,
81}