First somewhat working version
This commit is contained in:
parent
9afa0ae91f
commit
930d004e32
15
src/main.rs
15
src/main.rs
|
@ -121,8 +121,8 @@ fn main() -> ! {
|
|||
|
||||
let mut last_ic = 0u32;
|
||||
let mut avg = 10f64;
|
||||
let max_pwm = pwm.get_max_duty() as f64;
|
||||
let mut cur_pwm = max_pwm / 2.0;
|
||||
let max_pwm = pwm.get_max_duty() as u32;
|
||||
let mut cur_pwm = max_pwm / 2;
|
||||
|
||||
// Skip the first measurement, it will be garbage
|
||||
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;
|
||||
|
||||
let error = target_freq - avg;
|
||||
cur_pwm += error * 100000.0;
|
||||
cur_pwm = if cur_pwm < 0.0 {
|
||||
0.0
|
||||
} else if cur_pwm > max_pwm {
|
||||
max_pwm
|
||||
} else {
|
||||
cur_pwm
|
||||
};
|
||||
cur_pwm += 10_000_000 - diff_ic;
|
||||
cur_pwm = if cur_pwm > max_pwm { max_pwm } else { cur_pwm };
|
||||
|
||||
pwm.set_duty(cur_pwm as u16);
|
||||
|
||||
|
|
Loading…
Reference in New Issue