First somewhat working version

This commit is contained in:
Sebastian 2020-12-21 15:12:13 +01:00
parent 9afa0ae91f
commit 930d004e32
1 changed files with 4 additions and 11 deletions

View File

@ -121,8 +121,8 @@ fn main() -> ! {
let mut last_ic = 0u32; let mut last_ic = 0u32;
let mut avg = 10f64; let mut avg = 10f64;
let max_pwm = pwm.get_max_duty() as f64; let max_pwm = pwm.get_max_duty() as u32;
let mut cur_pwm = max_pwm / 2.0; let mut cur_pwm = max_pwm / 2;
// Skip the first measurement, it will be garbage // Skip the first measurement, it will be garbage
while !tim1.sr.read().cc1if().bit_is_set() || !tim2.sr.read().cc1if().bit_is_set() { while !tim1.sr.read().cc1if().bit_is_set() || !tim2.sr.read().cc1if().bit_is_set() {
@ -159,15 +159,8 @@ fn main() -> ! {
avg = avg * 0.99 + freq * 0.01; avg = avg * 0.99 + freq * 0.01;
let error = target_freq - avg; cur_pwm += 10_000_000 - diff_ic;
cur_pwm += error * 100000.0; cur_pwm = if cur_pwm > max_pwm { max_pwm } else { cur_pwm };
cur_pwm = if cur_pwm < 0.0 {
0.0
} else if cur_pwm > max_pwm {
max_pwm
} else {
cur_pwm
};
pwm.set_duty(cur_pwm as u16); pwm.set_duty(cur_pwm as u16);