diff --git a/2sem_i2c/src/bin/main.rs b/2sem_i2c/src/bin/main.rs index fe85ad1..8bb4ca6 100644 --- a/2sem_i2c/src/bin/main.rs +++ b/2sem_i2c/src/bin/main.rs @@ -22,28 +22,25 @@ async fn main(_spawner: Spawner) { let mut i2c = I2c::new_blocking(p.I2C3, p.PC0, p.PC1, i2c_cfg); let addr = 0x23; + if let Err(e) = i2c.blocking_write(addr, &[0x01, 0x79]) { + error!("Nepodarilo sa aktivovať CMM: {:?}", e); + } + loop { - // Attempt to read REVID (Register 0x36) - Should return 0x22 - let mut rev_id = [0u8; 1]; - match i2c.blocking_write_read(addr, &[0x36], &mut rev_id) { + let mut raw = [0u8; 9]; + match i2c.blocking_write_read(addr, &[0x24], &mut raw) { Ok(_) => { - let _ = i2c.blocking_write(addr, &[0x00, 0x70]); - - Timer::after(Duration::from_millis(50)).await; - - 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); - } + 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) => { - 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; } }