summaryrefslogtreecommitdiff
path: root/src/drivers/ao_mpu6000.h
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-02-04 09:51:30 -0800
committerKeith Packard <keithp@keithp.com>2013-02-04 09:51:30 -0800
commit9aca92a20343a2cf7e05abc7b100852d81f86c0d (patch)
treeb824186b281a8420521689771e7692c61764c90e /src/drivers/ao_mpu6000.h
parent809eb5b1252a75d489e3ad2fd2a4af701fa0aa52 (diff)
altos: Document which MPU6000 revs have broken accel values
From Tridge -- MPU6000 rev C4 and C5 are broken, having accelerometer values in the wrong range. This commit just adds comments which note this; experimentation will be required to actually sort out what's going on. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/drivers/ao_mpu6000.h')
-rw-r--r--src/drivers/ao_mpu6000.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/drivers/ao_mpu6000.h b/src/drivers/ao_mpu6000.h
index 6aada9a9..f01e9e83 100644
--- a/src/drivers/ao_mpu6000.h
+++ b/src/drivers/ao_mpu6000.h
@@ -21,6 +21,27 @@
#define MPU6000_ADDR_WRITE 0xd0
#define MPU6000_ADDR_READ 0xd1
+/* From Tridge */
+#define MPUREG_XG_OFFS_TC 0x00
+#define MPUREG_YG_OFFS_TC 0x01
+#define MPUREG_ZG_OFFS_TC 0x02
+#define MPUREG_X_FINE_GAIN 0x03
+#define MPUREG_Y_FINE_GAIN 0x04
+#define MPUREG_Z_FINE_GAIN 0x05
+#define MPUREG_XA_OFFS_H 0x06 // X axis accelerometer offset (high byte)
+#define MPUREG_XA_OFFS_L 0x07 // X axis accelerometer offset (low byte)
+#define MPUREG_YA_OFFS_H 0x08 // Y axis accelerometer offset (high byte)
+#define MPUREG_YA_OFFS_L 0x09 // Y axis accelerometer offset (low byte)
+#define MPUREG_ZA_OFFS_H 0x0A // Z axis accelerometer offset (high byte)
+#define MPUREG_ZA_OFFS_L 0x0B // Z axis accelerometer offset (low byte)
+#define MPUREG_PRODUCT_ID 0x0C // Product ID Register
+#define MPUREG_XG_OFFS_USRH 0x13 // X axis gyro offset (high byte)
+#define MPUREG_XG_OFFS_USRL 0x14 // X axis gyro offset (low byte)
+#define MPUREG_YG_OFFS_USRH 0x15 // Y axis gyro offset (high byte)
+#define MPUREG_YG_OFFS_USRL 0x16 // Y axis gyro offset (low byte)
+#define MPUREG_ZG_OFFS_USRH 0x17 // Z axis gyro offset (high byte)
+#define MPUREG_ZG_OFFS_USRL 0x18 // Z axis gyro offset (low byte)
+
#define MPU6000_SMPRT_DIV 0x19
#define MPU6000_CONFIG 0x1a
@@ -163,4 +184,20 @@ extern struct ao_mpu6000_sample ao_mpu6000_current;
void
ao_mpu6000_init(void);
+/* Product ID Description for MPU6000
+ * high 4 bits low 4 bits
+ * Product Name Product Revision
+ */
+#define MPU6000ES_REV_C4 0x14 /* 0001 0100 */
+#define MPU6000ES_REV_C5 0x15 /* 0001 0101 */
+#define MPU6000ES_REV_D6 0x16 /* 0001 0110 */
+#define MPU6000ES_REV_D7 0x17 /* 0001 0111 */
+#define MPU6000ES_REV_D8 0x18 /* 0001 1000 */
+#define MPU6000_REV_C4 0x54 /* 0101 0100 */
+#define MPU6000_REV_C5 0x55 /* 0101 0101 */
+#define MPU6000_REV_D6 0x56 /* 0101 0110 */
+#define MPU6000_REV_D7 0x57 /* 0101 0111 */
+#define MPU6000_REV_D8 0x58 /* 0101 1000 */
+#define MPU6000_REV_D9 0x59 /* 0101 1001 */
+
#endif /* _AO_MPU6000_H_ */