From 0fb26389ea53d4e2a4b0587886e6970f8c5ad102 Mon Sep 17 00:00:00 2001 From: barthess Date: Mon, 30 May 2016 23:07:09 +0300 Subject: [PATCH] 1-wire. Data acqusition code in test application rewritten in more safe way --- testhal/STM32/STM32F0xx/onewire/onewire_test.c | 6 +++--- testhal/STM32/STM32F1xx/onewire/onewire_test.c | 6 +++--- testhal/STM32/STM32F4xx/onewire/onewire_test.c | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/testhal/STM32/STM32F0xx/onewire/onewire_test.c b/testhal/STM32/STM32F0xx/onewire/onewire_test.c index 719420ab..be20dbc1 100644 --- a/testhal/STM32/STM32F0xx/onewire/onewire_test.c +++ b/testhal/STM32/STM32F0xx/onewire/onewire_test.c @@ -95,6 +95,7 @@ static void strong_pullup_release(void); static uint8_t testbuf[12]; +/* stores 3 temperature values in millicelsius */ static int32_t temperature[3]; /* @@ -242,9 +243,8 @@ void onewireTest(void) { onewireRead(&OWD1, testbuf, 9); osalDbgCheck(testbuf[8] == onewireCRC(testbuf, 8)); - tmp = 0; - tmp |= (testbuf[1] << 8) | testbuf[0]; - temperature[i] = (tmp * 625) / 10; + memcpy(&tmp, &testbuf, 2); + temperature[i] = ((int32_t)tmp * 625) / 10; } } else { diff --git a/testhal/STM32/STM32F1xx/onewire/onewire_test.c b/testhal/STM32/STM32F1xx/onewire/onewire_test.c index 719420ab..be20dbc1 100644 --- a/testhal/STM32/STM32F1xx/onewire/onewire_test.c +++ b/testhal/STM32/STM32F1xx/onewire/onewire_test.c @@ -95,6 +95,7 @@ static void strong_pullup_release(void); static uint8_t testbuf[12]; +/* stores 3 temperature values in millicelsius */ static int32_t temperature[3]; /* @@ -242,9 +243,8 @@ void onewireTest(void) { onewireRead(&OWD1, testbuf, 9); osalDbgCheck(testbuf[8] == onewireCRC(testbuf, 8)); - tmp = 0; - tmp |= (testbuf[1] << 8) | testbuf[0]; - temperature[i] = (tmp * 625) / 10; + memcpy(&tmp, &testbuf, 2); + temperature[i] = ((int32_t)tmp * 625) / 10; } } else { diff --git a/testhal/STM32/STM32F4xx/onewire/onewire_test.c b/testhal/STM32/STM32F4xx/onewire/onewire_test.c index 719420ab..be20dbc1 100644 --- a/testhal/STM32/STM32F4xx/onewire/onewire_test.c +++ b/testhal/STM32/STM32F4xx/onewire/onewire_test.c @@ -95,6 +95,7 @@ static void strong_pullup_release(void); static uint8_t testbuf[12]; +/* stores 3 temperature values in millicelsius */ static int32_t temperature[3]; /* @@ -242,9 +243,8 @@ void onewireTest(void) { onewireRead(&OWD1, testbuf, 9); osalDbgCheck(testbuf[8] == onewireCRC(testbuf, 8)); - tmp = 0; - tmp |= (testbuf[1] << 8) | testbuf[0]; - temperature[i] = (tmp * 625) / 10; + memcpy(&tmp, &testbuf, 2); + temperature[i] = ((int32_t)tmp * 625) / 10; } } else {