Repo for designs & driver for a TA7642 powered lightning detector

Add max_duty method for duty cycle trait

+12 -2
+4
embassy-strike-driver/src/drivers.rs
··· 97 97 } 98 98 99 99 impl PwmSource for PwmDriver<'_> { 100 + fn max_duty(&self) -> u16 { 101 + self.pwm.max_duty_cycle() 102 + } 103 + 100 104 fn set_duty(&mut self, duty: u16) { 101 105 let duty = duty.clamp(0, self.pwm.max_duty_cycle()); 102 106
+7 -2
embassy-strike-driver/src/lib.rs
··· 141 141 142 142 pub async fn tune(&mut self, samples: &mut [u16]) { 143 143 let mut duty = 0; 144 + let max_duty = self.pwm.max_duty(); 144 145 self.pwm.set_duty(duty); 145 146 Timer::after_secs(2).await; 146 147 let mut act_value = self.adc.sample_average(samples).await; ··· 149 150 150 151 while act_value < 1500 { 151 152 duty += 2; 152 - if duty >= 256 { 153 + if duty >= max_duty { 153 154 #[cfg(feature = "debug")] 154 155 info!("RESET: {} @ Duty {}", act_value, duty); 155 156 duty = 0; ··· 183 184 ) { 184 185 loop { 185 186 let (time, samples) = dma.send().await; 186 - *time = self.get_timestamp(); 187 187 self.adc.sample(samples).await; 188 + *time = self.get_timestamp(); 188 189 dma.send_done(); 189 190 } 190 191 } ··· 309 310 struct MockPwm<'a>(&'a MockMachine); 310 311 311 312 impl PwmSource for MockPwm<'_> { 313 + fn max_duty(&self) -> u16 { 314 + 255 315 + } 316 + 312 317 fn set_duty(&mut self, duty: u16) { 313 318 self.0.pwm.set(duty); 314 319 }
+1
embassy-strike-driver/src/traits.rs
··· 11 11 } 12 12 13 13 pub trait PwmSource { 14 + fn max_duty(&self) -> u16; 14 15 fn set_duty(&mut self, duty: u16); 15 16 fn enable(&mut self); 16 17 fn disable(&mut self);