From ec72b2dc8f9e55041cd76899f7ad7b9ae3525816 Mon Sep 17 00:00:00 2001 From: Priec Date: Thu, 28 May 2026 08:02:12 +0200 Subject: [PATCH] fix pokial 0 a 1 je predefinovana pouzivatelom --- 2sem_sem2/src/bin/main.rs | 6 +++--- 2sem_sem2/src/receive.rs | 13 +++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/2sem_sem2/src/bin/main.rs b/2sem_sem2/src/bin/main.rs index d9817b4..d2c80d6 100644 --- a/2sem_sem2/src/bin/main.rs +++ b/2sem_sem2/src/bin/main.rs @@ -45,11 +45,11 @@ async fn main(spawner: Spawner) { info!("starting loop"); loop { - msg_encode(b"ahoj", &sender).await; - msg_encode(b"hello", &sender).await; + let _ = msg_encode(b"ahoj", &sender).await; + let _ = msg_encode(b"hello", &sender).await; let data = [0x01, 0x02, 0x03, 0x04]; - msg_encode(&data, &sender).await; + let _ = msg_encode(&data, &sender).await; info!("frame sent"); embassy_time::Timer::after(Duration::from_secs(1)).await; diff --git a/2sem_sem2/src/receive.rs b/2sem_sem2/src/receive.rs index 26ce669..4a6dd81 100644 --- a/2sem_sem2/src/receive.rs +++ b/2sem_sem2/src/receive.rs @@ -70,10 +70,18 @@ async fn sample_byte( #[embassy_executor::task] pub async fn bit_receive_and_decode(mut pin: ExtiInput<'static>, encoding: Encoding) { loop { - pin.wait_for_falling_edge().await; + if level_for_bit(1) { + pin.wait_for_falling_edge().await; + } else { + pin.wait_for_rising_edge().await; + } let t1 = embassy_time::Instant::now(); - pin.wait_for_rising_edge().await; + if level_for_bit(1) { + pin.wait_for_rising_edge().await; + } else { + pin.wait_for_falling_edge().await; + } let bit_time = embassy_time::Instant::now().duration_since(t1); // stred data bitu @@ -84,6 +92,7 @@ pub async fn bit_receive_and_decode(mut pin: ExtiInput<'static>, encoding: Encod let mut ticker = Ticker::every(bit_time); let mut last_level = level_for_bit(1); + // First START bit is the already detected logical 0, sample the remaining 7 bits. let mut start_byte = 0u8; for _ in 0..7 { let bit = match encoding {