fixes
restored esc pwm calculator send length before data
This commit is contained in:
parent
02f6efaaa5
commit
99f0ed69e4
1 changed files with 20 additions and 2 deletions
|
@ -288,10 +288,18 @@ async fn main(spawner: Spawner) {
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Ok(telem) = postcard::to_slice(&telem, &mut telem_buf) {
|
if let Ok(telem) = postcard::to_slice(&telem, &mut telem_buf) {
|
||||||
|
if let Err(e) = socket.write_all(&u32::to_be_bytes(telem.len() as u32)).await {
|
||||||
|
warn!("write error: {:?}", e);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if let Err(e) = socket.write_all(&telem).await {
|
if let Err(e) = socket.write_all(&telem).await {
|
||||||
warn!("write error: {:?}", e);
|
warn!("write error: {:?}", e);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
//if let Err(e) = socket.flush().await {
|
||||||
|
// warn!("write error: {:?}", e);
|
||||||
|
// break;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -299,7 +307,7 @@ async fn main(spawner: Spawner) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 0 to 1
|
/// 0 to 1
|
||||||
fn calc_speed(speed: f32) -> u16 {
|
fn calc_speed_mosfet(speed: f32) -> u16 {
|
||||||
let speed = speed.clamp(0., 1.);
|
let speed = speed.clamp(0., 1.);
|
||||||
|
|
||||||
let speed = speed * u16::MAX as f32;
|
let speed = speed * u16::MAX as f32;
|
||||||
|
@ -307,6 +315,16 @@ fn calc_speed(speed: f32) -> u16 {
|
||||||
speed as u16
|
speed as u16
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// -1 to 1
|
||||||
|
fn calc_speed(speed: f32) -> u16 {
|
||||||
|
const COUNTS_PER_MS: f32 = 3125.;
|
||||||
|
let speed = speed.clamp(-1., 1.);
|
||||||
|
|
||||||
|
let ms = (speed/2.0)+1.5;
|
||||||
|
|
||||||
|
(COUNTS_PER_MS * ms) as u16
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
enum CamState {
|
enum CamState {
|
||||||
Override(f32),
|
Override(f32),
|
||||||
|
@ -365,6 +383,6 @@ fn handle_cam(cam: &mut Pwm, state: &mut CamState, limit: &Input) {
|
||||||
let mut f: pwm::Config = Default::default();
|
let mut f: pwm::Config = Default::default();
|
||||||
f.divider = 1.into();
|
f.divider = 1.into();
|
||||||
f.top = u16::MAX;
|
f.top = u16::MAX;
|
||||||
f.compare_b = calc_speed(speed);
|
f.compare_b = calc_speed_mosfet(speed);
|
||||||
cam.set_config(&f);
|
cam.set_config(&f);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue