CMM working now

This commit is contained in:
Filipriec
2026-03-03 18:02:57 +01:00
parent 07c0e9501a
commit bdb46a89c1

View File

@@ -22,28 +22,25 @@ async fn main(_spawner: Spawner) {
let mut i2c = I2c::new_blocking(p.I2C3, p.PC0, p.PC1, i2c_cfg); let mut i2c = I2c::new_blocking(p.I2C3, p.PC0, p.PC1, i2c_cfg);
let addr = 0x23; let addr = 0x23;
if let Err(e) = i2c.blocking_write(addr, &[0x01, 0x79]) {
error!("Nepodarilo sa aktivovať CMM: {:?}", e);
}
loop { loop {
// Attempt to read REVID (Register 0x36) - Should return 0x22 let mut raw = [0u8; 9];
let mut rev_id = [0u8; 1]; match i2c.blocking_write_read(addr, &[0x24], &mut raw) {
match i2c.blocking_write_read(addr, &[0x36], &mut rev_id) {
Ok(_) => { Ok(_) => {
let _ = i2c.blocking_write(addr, &[0x00, 0x70]); let x = i32::from_be_bytes([raw[0], raw[1], raw[2], 0]) >> 8;
let y = i32::from_be_bytes([raw[3], raw[4], raw[5], 0]) >> 8;
Timer::after(Duration::from_millis(50)).await; let z = i32::from_be_bytes([raw[6], raw[7], raw[8], 0]) >> 8;
info!("X: {}, Y: {}, Z: {}", x, y, z);
let mut raw = [0u8; 9];
if let Ok(_) = i2c.blocking_write_read(addr, &[0x24], &mut raw) {
let x = i32::from_be_bytes([raw[0], raw[1], raw[2], 0]) >> 8;
let y = i32::from_be_bytes([raw[3], raw[4], raw[5], 0]) >> 8;
let z = i32::from_be_bytes([raw[6], raw[7], raw[8], 0]) >> 8;
info!("X: {}, Y: {}, Z: {}", x, y, z);
}
} }
Err(e) => { Err(e) => {
error!("I2C Error: {:?}.", e); error!("Chyba pri čítaní: {:?}", e);
} }
} }
Timer::after(Duration::from_millis(200)).await; // Čítajte napríklad každých 100ms. Dáta v registroch budú vždy najaktuálnejšie dokončené meranie.
Timer::after(Duration::from_millis(100)).await;
} }
} }