aboutsummaryrefslogtreecommitdiff
path: root/apps/drivers
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2013-01-26 01:04:58 +0100
committerLorenz Meier <lm@inf.ethz.ch>2013-01-26 01:04:58 +0100
commit81601ad9dc9aecb87412c5cde47414f1258b6c35 (patch)
tree75fa207061ab16eb70c7ae302037310f81997756 /apps/drivers
parentbeb45222985f1eb9fbe21b22b95c30ab8ca5bbac (diff)
downloadpx4-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.cpp15
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;