From 7bd4d6acacf4b44fe3028d0500b2e4a9cb20d36d Mon Sep 17 00:00:00 2001 From: Filipriec Date: Tue, 10 Mar 2026 16:05:32 +0100 Subject: [PATCH] working --- 2sem_spi/src/bin/main.rs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/2sem_spi/src/bin/main.rs b/2sem_spi/src/bin/main.rs index 2b6d758..5e87cb0 100644 --- a/2sem_spi/src/bin/main.rs +++ b/2sem_spi/src/bin/main.rs @@ -5,7 +5,7 @@ use defmt::*; use embassy_executor::Spawner; use embassy_stm32::spi::{Config, Spi}; -use embassy_stm32::gpio::{Pull, Level, Speed, Output}; +use embassy_stm32::gpio::{Level, Speed, Output}; use embassy_time::{Duration, Timer}; use {defmt_rtt as _, panic_probe as _}; @@ -15,37 +15,36 @@ async fn main(_spawner: Spawner) { let p = embassy_stm32::init(Default::default()); - let mut spi = Spi::new_blocking(p.SPI1, p.PA5, p.PA7, p.PA6, Config::default()); + let mut spi = Spi::new_blocking(p.SPI1, p.PB3, p.PB5, p.PB4, Config::default()); let mut cs = Output::new(p.PA4, Level::High, Speed::VeryHigh); cs.set_low(); - if let Err(e) = spi.blocking_write(&[0x01u8, 0x79u8]) { - error!("Nepodarilo sa aktivovaƄ CMM: {:?}", e); - } + let _ = spi.blocking_write(&[0x01u8, 0x79u8]); cs.set_high(); loop { let mut data = [0u8; 10]; data[0] = 0xA4; - cs.set_low(); let result = spi.blocking_transfer_in_place(&mut data); cs.set_high(); match result { Ok(_) => { - // index 0, len potvrdenie prijatia adresy let raw = &data[1..]; - info!("X: {:02x}{:02x}{:02x} Y: {:02x}{:02x}{:02x} Z: {:02x}{:02x}{:02x}", - raw[0], raw[1], raw[2], - raw[3], raw[4], raw[5], - raw[6], raw[7], raw[8]); + // 1. Correct 24-bit Signed Conversion (Minimal change) + let x = (((raw[0] as i32) << 24) | ((raw[1] as i32) << 16) | ((raw[2] as i32) << 8)) >> 8; + let y = (((raw[3] as i32) << 24) | ((raw[4] as i32) << 16) | ((raw[5] as i32) << 8)) >> 8; + let z = (((raw[6] as i32) << 24) | ((raw[7] as i32) << 16) | ((raw[8] as i32) << 8)) >> 8; + + // 2. Display in Relevant Decimal Format + info!("X: {} Y: {} Z: {}", x, y, z); } Err(e) => error!("SPI error: {:?}", e), } - Timer::after(Duration::from_millis(100)).await; + Timer::after(Duration::from_millis(10)).await; } }