X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Flm75.c;h=fd44202492b2c0fe67ae1a2091a0eb26d3a23c0c;hb=39e200e1f43474a96888f97e2271728c9605ccbe;hp=93c6509e4e3363a28fc9e871357d33b061b0fb3e;hpb=53a85c63e98a7ec7456db33b665484df3da33fdb;p=bertos.git diff --git a/bertos/drv/lm75.c b/bertos/drv/lm75.c index 93c6509e..fd442024 100644 --- a/bertos/drv/lm75.c +++ b/bertos/drv/lm75.c @@ -63,38 +63,7 @@ deg_t lm75_read_1(uint8_t sens_addr) { - uint8_t data[2]; - int16_t degree; - int16_t deci_degree; - - if( !(i2c_start_w(SELECT_ADDRESS(sens_addr)) - && i2c_put(LM75_PAD_BYTE) - && i2c_start_r(SELECT_ADDRESS(sens_addr))) ) - { - i2c_stop(); - return EOF; - } - - if ( !i2c_recv(data, sizeof(data)) ) - { - i2c_stop(); - return EOF; - } - i2c_stop(); - - degree = (int16_t)data[0]; - deci_degree = (int16_t)(((data[1] >> 7) & 1 ) * 5); - - LOG_INFO("[%d.%d C]\n", degree, deci_degree); - - return degree * 10 + deci_degree; -} - -void lm75_init_0(void) -{ - // Check dependence - MOD_CHECK(i2c); - LM75_HW_INIT(); + return lm75_read_2(&local_i2c_old_api, sens_addr); } #endif /* !CONFIG_I2C_DISABLE_OLD_API */ @@ -105,7 +74,6 @@ void lm75_init_0(void) deg_t lm75_read_2(I2c *i2c, uint8_t sens_addr) { uint8_t data[2]; - int16_t degree; int16_t deci_degree; i2c_start_w(i2c, SELECT_ADDRESS(sens_addr), 1, I2C_NOSTOP); @@ -116,18 +84,11 @@ deg_t lm75_read_2(I2c *i2c, uint8_t sens_addr) if (i2c_error(i2c)) return EOF; - degree = (int16_t)data[0]; - deci_degree = (int16_t)(((data[1] >> 7) & 1 ) * 5); + deci_degree = ((data[0] << 8) | data[1]); + deci_degree >>= 7; + deci_degree *= 5; - LOG_INFO("[%d.%d C]\n", degree, deci_degree); - - return degree * 10 + deci_degree; -} - -void lm75_init_1(I2c *i2c) -{ - ASSERT(i2c); + LOG_INFO("[%d.%d C]\n", deci_degree / 10, ABS(deci_degree % 10)); - // Check dependence - LM75_HW_INIT(); + return deci_degree; }