From 5ff7cb6e0c15706b27e86b50ef7398132aa11a6a Mon Sep 17 00:00:00 2001 From: smlng <s@mlng.net> Date: Thu, 31 Aug 2017 16:24:12 +0200 Subject: [PATCH] drivers, lps331ap: fix overshift error on 8Bit MCUs --- drivers/lps331ap/lps331ap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/lps331ap/lps331ap.c b/drivers/lps331ap/lps331ap.c index 3f57374f92..06c6f9bcb7 100644 --- a/drivers/lps331ap/lps331ap.c +++ b/drivers/lps331ap/lps331ap.c @@ -86,7 +86,7 @@ int lps331ap_read_temp(const lps331ap_t *dev) val |= tmp; i2c_read_reg(dev->i2c, dev->address, LPS331AP_REG_TEMP_OUT_H, &tmp); i2c_release(dev->i2c); - val |= (tmp << 8); + val |= ((uint16_t)tmp << 8); /* compute actual temperature value in °C */ res += ((float)val) / TEMP_DIVIDER; @@ -105,13 +105,13 @@ int lps331ap_read_pres(const lps331ap_t *dev) i2c_read_reg(dev->i2c, dev->address, LPS331AP_REG_PRESS_OUT_XL, &tmp); val |= tmp; i2c_read_reg(dev->i2c, dev->address, LPS331AP_REG_PRESS_OUT_L, &tmp); - val |= (tmp << 8); + val |= ((uint32_t)tmp << 8); i2c_read_reg(dev->i2c, dev->address, LPS331AP_REG_PRESS_OUT_H, &tmp); i2c_release(dev->i2c); - val |= (tmp << 16); + val |= ((uint32_t)tmp << 16); /* see if value is negative */ if (tmp & 0x80) { - val |= (0xff << 24); + val |= ((uint32_t)0xff << 24); } /* compute actual pressure value in mbar */ -- GitLab