change pwm to match talon sr spec

This commit is contained in:
Andy Killorin 2024-10-29 11:15:25 -04:00
parent 66cfbda231
commit 432b4552c3
Signed by: ank
GPG key ID: 23F9463ECB67FE8C

View file

@ -70,11 +70,10 @@ async fn main(spawner: Spawner) {
spawner.spawn(logger_task(driver)).unwrap(); spawner.spawn(logger_task(driver)).unwrap();
let mut c: pwm::Config = Default::default(); let mut c: pwm::Config = Default::default();
c.divider = 255.into(); c.divider = 40.into();
c.top = 8715; c.top = 62_500; // 20ms
c.compare_b = 7210; c.compare_b = 4687; // 1.5ms
c.compare_a = 2240; let mut pwm = Pwm::new_output_b(p.PWM_SLICE0, p.PIN_1, c.clone());
let mut pwm = Pwm::new_output_ab(p.PWM_SLICE1, p.PIN_18, p.PIN_19, c.clone());
let fw = include_bytes!("../../cyw43-firmware/43439A0.bin"); let fw = include_bytes!("../../cyw43-firmware/43439A0.bin");
let clm = include_bytes!("../../cyw43-firmware/43439A0_clm.bin"); let clm = include_bytes!("../../cyw43-firmware/43439A0_clm.bin");
@ -129,10 +128,10 @@ async fn main(spawner: Spawner) {
socket.set_timeout(Some(Duration::from_secs(3))); socket.set_timeout(Some(Duration::from_secs(3)));
let mut c: pwm::Config = Default::default(); let mut c: pwm::Config = Default::default();
c.divider = 255.into(); c.divider = 40.into();
c.top = 8715; c.top = 62_500; // 20ms
c.compare_b = 0; // 3125 counts per ms
c.compare_a = 0; c.compare_b = 4687; // 1.5ms
pwm.set_config(&c); pwm.set_config(&c);
control.gpio_set(0, false).await; control.gpio_set(0, false).await;
@ -166,15 +165,12 @@ async fn main(spawner: Spawner) {
match char::from_u32(segs.next().unwrap()[0] as u32).unwrap() { match char::from_u32(segs.next().unwrap()[0] as u32).unwrap() {
'D' => { 'D' => {
let left: [u8;2] = hex::FromHex::from_hex(segs.next().unwrap()).unwrap(); let pwr: [u8;2] = hex::FromHex::from_hex(segs.next().unwrap()).unwrap();
let right: [u8;2] = hex::FromHex::from_hex(segs.next().unwrap()).unwrap(); info!("power {pwr:?}");
info!("left {:?}, right {left:?}", right);
let left = u16::from_be_bytes(left); let pwr = u16::from_be_bytes(pwr);
c.compare_a = left; c.compare_b = pwr;
let right = u16::from_be_bytes(right); info!("power {pwr:?}");
c.compare_b = right;
info!("left {:?}, right {left:?}", right);
pwm.set_config(&c); pwm.set_config(&c);
}, },
_ => {} _ => {}