From b2611d6be305c94359f67df875786858e05c3eb0 Mon Sep 17 00:00:00 2001 From: syndycat Date: Sat, 7 Jan 2017 13:36:11 +0200 Subject: [PATCH] drivers/onewire/ds18x20: Fix negative temperature calc for DS18B20. --- drivers/onewire/ds18x20.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/onewire/ds18x20.py b/drivers/onewire/ds18x20.py index a2f7f5c3da..342f4b28ae 100644 --- a/drivers/onewire/ds18x20.py +++ b/drivers/onewire/ds18x20.py @@ -93,6 +93,9 @@ class DS18X20(object): temp = temp_read - 0.25 + (count_per_c - count_remain) / count_per_c return temp elif rom0 == 0x28: - return (temp_msb << 8 | temp_lsb) / 16 + temp = (temp_msb << 8 | temp_lsb) / 16 + if (temp_msb & 0xf8) == 0xf8: # for negative temperature + temp -= 0x1000 + return temp else: assert False