From 719c2bbbb89c0121bbd2b62f9aeb98327e583d2b Mon Sep 17 00:00:00 2001 From: Michael Turner Date: Sun, 2 Nov 2025 14:10:02 -0800 Subject: [PATCH] Correct the temperature reading to preserve the sign bits --- examples/rp/src/bin/pio_onewire.rs | 2 +- examples/rp/src/bin/pio_onewire_parasite.rs | 2 +- examples/rp235x/src/bin/pio_onewire.rs | 2 +- examples/rp235x/src/bin/pio_onewire_parasite.rs | 2 +- examples/stm32g0/src/bin/onewire_ds18b20.rs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/rp/src/bin/pio_onewire.rs b/examples/rp/src/bin/pio_onewire.rs index 102f13c459..6432edb8a1 100644 --- a/examples/rp/src/bin/pio_onewire.rs +++ b/examples/rp/src/bin/pio_onewire.rs @@ -61,7 +61,7 @@ async fn main(_spawner: Spawner) { let mut data = [0; 9]; onewire.read_bytes(&mut data).await; if crc8(&data) == 0 { - let temp = ((data[1] as u32) << 8 | data[0] as u32) as f32 / 16.; + let temp = ((data[1] as i16) << 8 | data[0] as i16) as f32 / 16.; info!("Read device {:x}: {} deg C", device, temp); } else { warn!("Reading device {:x} failed", device); diff --git a/examples/rp/src/bin/pio_onewire_parasite.rs b/examples/rp/src/bin/pio_onewire_parasite.rs index fd076dee0b..78fb94b18e 100644 --- a/examples/rp/src/bin/pio_onewire_parasite.rs +++ b/examples/rp/src/bin/pio_onewire_parasite.rs @@ -63,7 +63,7 @@ async fn main(_spawner: Spawner) { let mut data = [0; 9]; onewire.read_bytes(&mut data).await; if crc8(&data) == 0 { - let temp = ((data[1] as u32) << 8 | data[0] as u32) as f32 / 16.; + let temp = ((data[1] as i16) << 8 | data[0] as i16) as f32 / 16.; info!("Read device {:x}: {} deg C", device, temp); } else { warn!("Reading device {:x} failed. {:02x}", device, data); diff --git a/examples/rp235x/src/bin/pio_onewire.rs b/examples/rp235x/src/bin/pio_onewire.rs index 102f13c459..6432edb8a1 100644 --- a/examples/rp235x/src/bin/pio_onewire.rs +++ b/examples/rp235x/src/bin/pio_onewire.rs @@ -61,7 +61,7 @@ async fn main(_spawner: Spawner) { let mut data = [0; 9]; onewire.read_bytes(&mut data).await; if crc8(&data) == 0 { - let temp = ((data[1] as u32) << 8 | data[0] as u32) as f32 / 16.; + let temp = ((data[1] as i16) << 8 | data[0] as i16) as f32 / 16.; info!("Read device {:x}: {} deg C", device, temp); } else { warn!("Reading device {:x} failed", device); diff --git a/examples/rp235x/src/bin/pio_onewire_parasite.rs b/examples/rp235x/src/bin/pio_onewire_parasite.rs index fd076dee0b..78fb94b18e 100644 --- a/examples/rp235x/src/bin/pio_onewire_parasite.rs +++ b/examples/rp235x/src/bin/pio_onewire_parasite.rs @@ -63,7 +63,7 @@ async fn main(_spawner: Spawner) { let mut data = [0; 9]; onewire.read_bytes(&mut data).await; if crc8(&data) == 0 { - let temp = ((data[1] as u32) << 8 | data[0] as u32) as f32 / 16.; + let temp = ((data[1] as i16) << 8 | data[0] as i16) as f32 / 16.; info!("Read device {:x}: {} deg C", device, temp); } else { warn!("Reading device {:x} failed. {:02x}", device, data); diff --git a/examples/stm32g0/src/bin/onewire_ds18b20.rs b/examples/stm32g0/src/bin/onewire_ds18b20.rs index 62f8711a66..43ecca8c40 100644 --- a/examples/stm32g0/src/bin/onewire_ds18b20.rs +++ b/examples/stm32g0/src/bin/onewire_ds18b20.rs @@ -267,7 +267,7 @@ where } match Self::crc8(&data) == 0 { - true => Ok(((data[1] as u16) << 8 | data[0] as u16) as f32 / 16.), + true => Ok(((data[1] as i16) << 8 | data[0] as i16) as f32 / 16.), false => Err(()), } }