diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2013-01-26 01:04:58 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2013-01-26 01:04:58 +0100 |
commit | 81601ad9dc9aecb87412c5cde47414f1258b6c35 (patch) | |
tree | 75fa207061ab16eb70c7ae302037310f81997756 /apps/drivers | |
parent | beb45222985f1eb9fbe21b22b95c30ab8ca5bbac (diff) | |
download | px4-firmware-81601ad9dc9aecb87412c5cde47414f1258b6c35.tar.gz px4-firmware-81601ad9dc9aecb87412c5cde47414f1258b6c35.tar.bz2 px4-firmware-81601ad9dc9aecb87412c5cde47414f1258b6c35.zip |
Fixed byte readout order and signed value 16 to 14 bit value conversion
Diffstat (limited to 'apps/drivers')
-rw-r--r-- | apps/drivers/bma180/bma180.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/apps/drivers/bma180/bma180.cpp b/apps/drivers/bma180/bma180.cpp index bc4d4b3bf..32eb5333e 100644 --- a/apps/drivers/bma180/bma180.cpp +++ b/apps/drivers/bma180/bma180.cpp @@ -714,14 +714,17 @@ BMA180::measure() * perform only the axis assignment here. * Two non-value bits are discarded directly */ - report->y_raw = (((int16_t)read_reg(ADDR_ACC_X_LSB + 1)) << 8) | (read_reg(ADDR_ACC_X_LSB)); // XXX PX4DEV raw_report.x; - report->x_raw = (((int16_t)read_reg(ADDR_ACC_X_LSB + 3)) << 8) | (read_reg(ADDR_ACC_X_LSB + 2)); // XXX PX4DEV raw_report.y; - report->z_raw = (((int16_t)read_reg(ADDR_ACC_X_LSB + 5)) << 8) | (read_reg(ADDR_ACC_X_LSB + 4)); // XXX PX4DEV raw_report.z; + report->y_raw = read_reg(ADDR_ACC_X_LSB + 0); + report->y_raw |= read_reg(ADDR_ACC_X_LSB + 1) << 8; + report->x_raw = read_reg(ADDR_ACC_X_LSB + 2); + report->x_raw |= read_reg(ADDR_ACC_X_LSB + 3) << 8; + report->z_raw = read_reg(ADDR_ACC_X_LSB + 4); + report->z_raw |= read_reg(ADDR_ACC_X_LSB + 5) << 8; /* discard two non-value bits in the 16 bit measurement */ - report->x_raw = (report->x_raw >> 2); - report->y_raw = (report->y_raw >> 2); - report->z_raw = (report->z_raw >> 2); + report->x_raw = (report->x_raw / 4); + report->y_raw = (report->y_raw / 4); + report->z_raw = (report->z_raw / 4); /* invert y axis, due to 14 bit data no overflow can occur in the negation */ report->y_raw = -report->y_raw; |