1
Fork 0
restored esc pwm calculator

send length before data
This commit is contained in:
Andy Killorin 2025-03-05 14:20:17 -05:00
parent 02f6efaaa5
commit 99f0ed69e4
Signed by: ank
GPG key ID: 23F9463ECB67FE8C

View file

@ -288,10 +288,18 @@ async fn main(spawner: Spawner) {
};
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 {
warn!("write error: {:?}", e);
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
fn calc_speed(speed: f32) -> u16 {
fn calc_speed_mosfet(speed: f32) -> u16 {
let speed = speed.clamp(0., 1.);
let speed = speed * u16::MAX as f32;
@ -307,6 +315,16 @@ fn calc_speed(speed: f32) -> 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)]
enum CamState {
Override(f32),
@ -365,6 +383,6 @@ fn handle_cam(cam: &mut Pwm, state: &mut CamState, limit: &Input) {
let mut f: pwm::Config = Default::default();
f.divider = 1.into();
f.top = u16::MAX;
f.compare_b = calc_speed(speed);
f.compare_b = calc_speed_mosfet(speed);
cam.set_config(&f);
}