From 39ce6c651bd4d2b09bcca76878e51f83c210a19c Mon Sep 17 00:00:00 2001 From: eddyem Date: Thu, 21 Apr 2016 08:46:20 +0300 Subject: [PATCH] fix error in 1-wire data conversion for DS18B20 --- with_opencm3/ircontroller.bin | Bin 27252 -> 27252 bytes with_opencm3/onewire.c | 10 ++++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/with_opencm3/ircontroller.bin b/with_opencm3/ircontroller.bin index 11f80dd0965cb0d19d7d54f1b132573898c84a84..3d0a9cda0850ea069865f0db0baa6ee5e3346561 100755 GIT binary patch delta 7195 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 delta 6865 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 diff --git a/with_opencm3/onewire.c b/with_opencm3/onewire.c index ae81e5f..68a4912 100644 --- a/with_opencm3/onewire.c +++ b/with_opencm3/onewire.c @@ -387,10 +387,12 @@ int32_t gettemp(uint8_t *scratchpad){ }else{ // DS18B20 v = l>>4 | ((m & 7)<<4) | (m & 0x80); t = ((int32_t)v) * 10L; - m = l & 0x0f; // add decimal - t += (int32_t)m; // t = v*10 + l*1.25 -> convert - if(m > 1) ++t; // 1->1, 2->3, 3->4, 4->5, 5->6 - else if(m > 5) t += 2L; // 6->8, 7->9 + m = (l & 0x0f) >> 1; // add decimal + // 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 -> + // 0 1 1 2 3 3 4 4 5 6 6 7 8 8 9 9 + t += (int32_t)m; // t = v*10 + l*0.625 -> convert + if(m) ++t; // 1->1, 2->3, 3->4, 4->5, 5->6 + if(m > 5) ++t; // 6->8, 7->9 } return t; }