|
@@ -101,7 +101,7 @@ uint32_t getMaxPower(void) {
|
|
|
|
|
|
/** */
|
|
|
uint16_t readBusCurrent(void) {
|
|
|
- uint16_t current;
|
|
|
+ uint32_t current;;
|
|
|
int16_t tmp;
|
|
|
|
|
|
status = i2c_rd_reg(INA219_ADDRESS, INA219_REG_CURRENT, (uint16_t *)&tmp);
|
|
@@ -112,16 +112,25 @@ uint16_t readBusCurrent(void) {
|
|
|
if (tmp < 0) {
|
|
|
tmp = - tmp;
|
|
|
}
|
|
|
- current = (uint16_t)(((tmp * currentLSB) + 500) / 1000);
|
|
|
+ current = tmp;
|
|
|
+ current *= currentLSB;
|
|
|
+ current += 500;
|
|
|
+ current /= 1000;
|
|
|
|
|
|
- return current;
|
|
|
+ return (uint16_t)current;
|
|
|
}
|
|
|
|
|
|
/** */
|
|
|
uint32_t readBusPower(void) {
|
|
|
uint16_t power;
|
|
|
+ uint32_t tmp;
|
|
|
+
|
|
|
i2c_rd_reg(INA219_ADDRESS, INA219_REG_POWER, &power);
|
|
|
- return (((power * powerLSB) + 500) / 1000);
|
|
|
+ tmp = power;
|
|
|
+ tmp *= powerLSB;
|
|
|
+ tmp += 500;
|
|
|
+ tmp /= 1000;
|
|
|
+ return (uint16_t)tmp;
|
|
|
}
|
|
|
|
|
|
/**
|