tangled
alpha
login
or
join now
sachy.dev
/
strike-sensor
0
fork
atom
Repo for designs & driver for a TA7642 powered lightning detector
0
fork
atom
overview
issues
pulls
pipelines
Add max_duty method for duty cycle trait
sachy.dev
1 month ago
99f235f7
7d7f5cc4
1/1
test.yml
success
16s
+12
-2
3 changed files
expand all
collapse all
unified
split
embassy-strike-driver
src
drivers.rs
lib.rs
traits.rs
+4
embassy-strike-driver/src/drivers.rs
···
97
97
}
98
98
99
99
impl PwmSource for PwmDriver<'_> {
100
100
+
fn max_duty(&self) -> u16 {
101
101
+
self.pwm.max_duty_cycle()
102
102
+
}
103
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
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
152
-
if duty >= 256 {
153
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
186
-
*time = self.get_timestamp();
187
187
self.adc.sample(samples).await;
188
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
313
+
fn max_duty(&self) -> u16 {
314
314
+
255
315
315
+
}
316
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
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);