Browse Source

ina228: fix sign error on CURRENT reading (#19296)

v1.13.0-BW
Jacob Dahl 3 years ago committed by GitHub
parent
commit
3e21efb721
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      src/drivers/power_monitor/ina228/ina228.cpp

7
src/drivers/power_monitor/ina228/ina228.cpp

@ -124,7 +124,12 @@ int INA228::read(uint8_t address, int32_t &data)
const int ret = transfer(&address, 1, (uint8_t *)&received_bytes, sizeof(received_bytes) - 1); const int ret = transfer(&address, 1, (uint8_t *)&received_bytes, sizeof(received_bytes) - 1);
if (ret == PX4_OK) { if (ret == PX4_OK) {
data = swap32(received_bytes) >> ((32 - 24) + 4); data = swap32(received_bytes) >> ((32 - 24) + 4); // Convert to 20bit value
// Handle negative 20bit twos complement
if (data & 0x80000) {
data = -((0x000FFFFF & ~data) + 1);
}
} else { } else {
perf_count(_comms_errors); perf_count(_comms_errors);

Loading…
Cancel
Save