summaryrefslogtreecommitdiff
path: root/sensorlib/hw_mpu9150.h
diff options
context:
space:
mode:
Diffstat (limited to 'sensorlib/hw_mpu9150.h')
-rw-r--r--sensorlib/hw_mpu9150.h1454
1 files changed, 1454 insertions, 0 deletions
diff --git a/sensorlib/hw_mpu9150.h b/sensorlib/hw_mpu9150.h
new file mode 100644
index 0000000..b586d1b
--- /dev/null
+++ b/sensorlib/hw_mpu9150.h
@@ -0,0 +1,1454 @@
+//*****************************************************************************
+//
+// hw_mpu9150.h - Macros used when accessing the Invensense MPU9150
+// accelerometer/gyroscope/magnetometer.
+//
+// Copyright (c) 2013-2014 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 2.1.0.12573 of the Tiva Firmware Development Package.
+//
+//*****************************************************************************
+
+#ifndef __SENSORLIB_HW_MPU9150_H__
+#define __SENSORLIB_HW_MPU9150_H__
+
+//*****************************************************************************
+//
+// The following are defines for the MPU9150 register addresses.
+//
+//*****************************************************************************
+#define MPU9150_O_SELF_TEST_X 0x0D // Self test X register
+#define MPU9150_O_SELF_TEST_Y 0x0E // Self test Y register
+#define MPU9150_O_SELF_TEST_Z 0x0F // Self test Z register
+#define MPU9150_O_SELF_TEST_A 0x10 // Self test A register
+#define MPU9150_O_SMPLRT_DIV 0x19 // Sample rate divider register
+#define MPU9150_O_CONFIG 0x1A // Configuration register
+#define MPU9150_O_GYRO_CONFIG 0x1B // Gyro configuration register
+#define MPU9150_O_ACCEL_CONFIG 0x1C // Accelerometer configuration
+ // register
+#define MPU9150_O_FF_THR 0x1D // Free-fall threshold register
+#define MPU9150_O_FF_DUR 0x1E // Free-fall duration register
+#define MPU9150_O_MOT_THR 0x1F // Motion detection threshold
+ // register
+#define MPU9150_O_MOT_DUR 0x20 // Motion detection duration
+ // register
+#define MPU9150_O_ZRMOT_THR 0x21 // Zero motion detection threshold
+ // register
+#define MPU9150_O_ZRMOT_DUR 0x22 // Zero motion detection duration
+ // register
+#define MPU9150_O_FIFO_EN 0x23 // FIFO enable register
+#define MPU9150_O_I2C_MST_CTRL 0x24 // I2C master control register
+#define MPU9150_O_I2C_SLV0_ADDR 0x25 // I2C slave 0 address register
+#define MPU9150_O_I2C_SLV0_REG 0x26 // I2C slave 0 register number
+ // register
+#define MPU9150_O_I2C_SLV0_CTRL 0x27 // I2C slave 0 control register
+#define MPU9150_O_I2C_SLV1_ADDR 0x28 // I2C slave 1 address register
+#define MPU9150_O_I2C_SLV1_REG 0x29 // I2C slave 1 register number
+ // register
+#define MPU9150_O_I2C_SLV1_CTRL 0x2A // I2C slave 1 control register
+#define MPU9150_O_I2C_SLV2_ADDR 0x2B // I2C slave 2 address register
+#define MPU9150_O_I2C_SLV2_REG 0x2C // I2C slave 2 register number
+ // register
+#define MPU9150_O_I2C_SLV2_CTRL 0x2D // I2C slave 2 control register
+#define MPU9150_O_I2C_SLV3_ADDR 0x2E // I2C slave 3 address register
+#define MPU9150_O_I2C_SLV3_REG 0x2F // I2C slave 3 register number
+ // register
+#define MPU9150_O_I2C_SLV3_CTRL 0x30 // I2C slave 3 control register
+#define MPU9150_O_I2C_SLV4_ADDR 0x31 // I2C slave 4 address register
+#define MPU9150_O_I2C_SLV4_REG 0x32 // I2C slave 4 register number
+ // register
+#define MPU9150_O_I2C_SLV4_DO 0x33 // I2C slave 4 output data register
+#define MPU9150_O_I2C_SLV4_CTRL 0x34 // I2C slave 4 control register
+#define MPU9150_O_I2C_SLV4_DI 0x35 // I2C slave 4 input data register
+#define MPU9150_O_I2C_MST_STATUS \
+ 0x36 // I2C master status register
+#define MPU9150_O_INT_PIN_CFG 0x37 // INT pin configuration register
+#define MPU9150_O_INT_ENABLE 0x38 // Interrupt enable register
+#define MPU9150_O_INT_STATUS 0x3A // Interrupt status register
+#define MPU9150_O_ACCEL_XOUT_H 0x3B // X-axis acceleration data MSB
+ // register
+#define MPU9150_O_ACCEL_XOUT_L 0x3C // X-axis acceleration data LSB
+ // register
+#define MPU9150_O_ACCEL_YOUT_H 0x3D // Y-axis acceleration data MSB
+ // register
+#define MPU9150_O_ACCEL_YOUT_L 0x3E // Y-axis accelearation data LSB
+ // register
+#define MPU9150_O_ACCEL_ZOUT_H 0x3F // Z-axis acceleration data MSB
+ // register
+#define MPU9150_O_ACCEL_ZOUT_L 0x40 // Z-axis acceleration data LSB
+ // register
+#define MPU9150_O_TEMP_OUT_H 0x41 // Temperature data MSB register
+#define MPU9150_O_TEMP_OUT_L 0x42 // Temperature data LSB register
+#define MPU9150_O_GYRO_XOUT_H 0x43 // X-axis gyro data MSB register
+#define MPU9150_O_GYRO_XOUT_L 0x44 // X-axis gyro data LSB register
+#define MPU9150_O_GYRO_YOUT_H 0x45 // Y-axis gyro data MSB register
+#define MPU9150_O_GYRO_YOUT_L 0x46 // Y-axis gyro data LSB register
+#define MPU9150_O_GYRO_ZOUT_H 0x47 // Z-axis gyro data MSB register
+#define MPU9150_O_GYRO_ZOUT_L 0x48 // Z-axis gyro data LSB register
+#define MPU9150_O_EXT_SENS_DATA_00 \
+ 0x49 // External sensor data 0 register
+#define MPU9150_O_EXT_SENS_DATA_01 \
+ 0x4A // External sensor data 1 register
+#define MPU9150_O_EXT_SENS_DATA_02 \
+ 0x4B // External sensor data 2 register
+#define MPU9150_O_EXT_SENS_DATA_03 \
+ 0x4C // External sensor data 3 register
+#define MPU9150_O_EXT_SENS_DATA_04 \
+ 0x4D // External sensor data 4 register
+#define MPU9150_O_EXT_SENS_DATA_05 \
+ 0x4E // External sensor data 5 register
+#define MPU9150_O_EXT_SENS_DATA_06 \
+ 0x4F // External sensor data 6 register
+#define MPU9150_O_EXT_SENS_DATA_07 \
+ 0x50 // External sensor data 7 register
+#define MPU9150_O_EXT_SENS_DATA_08 \
+ 0x51 // External sensor data 8 register
+#define MPU9150_O_EXT_SENS_DATA_09 \
+ 0x52 // External sensor data 9 register
+#define MPU9150_O_EXT_SENS_DATA_10 \
+ 0x53 // External sensor data 10 register
+#define MPU9150_O_EXT_SENS_DATA_11 \
+ 0x54 // External sensor data 11 register
+#define MPU9150_O_EXT_SENS_DATA_12 \
+ 0x55 // External sensor data 12 register
+#define MPU9150_O_EXT_SENS_DATA_13 \
+ 0x56 // External sensor data 13 register
+#define MPU9150_O_EXT_SENS_DATA_14 \
+ 0x57 // External sensor data 14 register
+#define MPU9150_O_EXT_SENS_DATA_15 \
+ 0x58 // External sensor data 15 register
+#define MPU9150_O_EXT_SENS_DATA_16 \
+ 0x59 // External sensor data 16 register
+#define MPU9150_O_EXT_SENS_DATA_17 \
+ 0x5A // External sensor data 17 register
+#define MPU9150_O_EXT_SENS_DATA_18 \
+ 0x5B // External sensor data 18 register
+#define MPU9150_O_EXT_SENS_DATA_19 \
+ 0x5C // External sensor data 19 register
+#define MPU9150_O_EXT_SENS_DATA_20 \
+ 0x5D // External sensor data 20 register
+#define MPU9150_O_EXT_SENS_DATA_21 \
+ 0x5E // External sensor data 21 register
+#define MPU9150_O_EXT_SENS_DATA_22 \
+ 0x5F // External sensor data 22 register
+#define MPU9150_O_EXT_SENS_DATA_23 \
+ 0x60 // External sensor data 23 register
+#define MPU9150_O_MOT_DETECT_STATUS \
+ 0x61 // Motion detection status register
+#define MPU9150_O_I2C_SLV0_DO 0x63 // I2C slave 0 output data register
+#define MPU9150_O_I2C_SLV1_DO 0x64 // I2C slave 1 output data register
+#define MPU9150_O_I2C_SLV2_DO 0x65 // I2C slave 2 output data register
+#define MPU9150_O_I2C_SLV3_DO 0x66 // I2C slave 3 output data register
+#define MPU9150_O_I2C_MST_DELAY_CTRL \
+ 0x67 // I2C master delay control
+ // register
+#define MPU9150_O_SIGNAL_PATH_RESET \
+ 0x68 // Signal path reset register
+#define MPU9150_O_MOT_DETECT_CTRL \
+ 0x69 // Motion detection control
+ // register
+#define MPU9150_O_USER_CTRL 0x6A // User control register
+#define MPU9150_O_PWR_MGMT_1 0x6B // Power management 1 register
+#define MPU9150_O_PWR_MGMT_2 0x6C // Power management 2 register
+#define MPU9150_O_FIFO_COUNTH 0x72 // FIFO count MSB register
+#define MPU9150_O_FIFO_COUNTL 0x73 // FIFO count LSB register
+#define MPU9150_O_FIFO_R_W 0x74 // FIFO read write register
+#define MPU9150_O_WHO_AM_I 0x75 // Who am I register
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_SELF_TEST_X
+// register.
+//
+//*****************************************************************************
+#define MPU9150_SELF_TEST_X_XA_TEST_M \
+ 0xE0 // Accelerometer XA_TEST[4:2]
+#define MPU9150_SELF_TEST_X_XG_TEST_M \
+ 0x1F // Gyro XG_TEST[4:0]
+#define MPU9150_SELF_TEST_X_XA_TEST_S \
+ 5
+#define MPU9150_SELF_TEST_X_XG_TEST_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_SELF_TEST_Y
+// register.
+//
+//*****************************************************************************
+#define MPU9150_SELF_TEST_Y_YA_TEST_M \
+ 0xE0 // Accelerometer YA_TEST[4:2]
+#define MPU9150_SELF_TEST_Y_YG_TEST_M \
+ 0x1F // Gyro YG_TEST[4:0]
+#define MPU9150_SELF_TEST_Y_YA_TEST_S \
+ 5
+#define MPU9150_SELF_TEST_Y_YG_TEST_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_SELF_TEST_Z
+// register.
+//
+//*****************************************************************************
+#define MPU9150_SELF_TEST_Z_ZA_TEST_M \
+ 0xE0 // Accelerometer ZA_TEST[4:2]
+#define MPU9150_SELF_TEST_Z_ZG_TEST_M \
+ 0x1F // Gyro ZG_TEST[4:0]
+#define MPU9150_SELF_TEST_Z_ZA_TEST_S \
+ 5
+#define MPU9150_SELF_TEST_Z_ZG_TEST_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_SELF_TEST_A
+// register.
+//
+//*****************************************************************************
+#define MPU9150_SELF_TEST_A_XA_TEST_M \
+ 0x30 // Accelerometer XA_TEST[1:0]
+#define MPU9150_SELF_TEST_A_YA_TEST_M \
+ 0x0C // Accelerometer YA_TEST[1:0]
+#define MPU9150_SELF_TEST_A_ZA_TEST_M \
+ 0x03 // Accelerometer ZA_TEST[1:0]
+#define MPU9150_SELF_TEST_A_XA_TEST_S \
+ 4
+#define MPU9150_SELF_TEST_A_YA_TEST_S \
+ 2
+#define MPU9150_SELF_TEST_A_ZA_TEST_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_SMPLRT_DIV
+// register.
+//
+//*****************************************************************************
+#define MPU9150_SMPLRT_DIV_M 0xFF // Gyro output rate divider
+#define MPU9150_SMPLRT_DIV_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_CONFIG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_CONFIG_EXT_SYNC_SET_M \
+ 0x38 // FSYNC pin sample location
+#define MPU9150_CONFIG_EXT_SYNC_SET_DIS \
+ 0x00 // FSYNC input disabled
+#define MPU9150_CONFIG_EXT_SYNC_SET_TEMP_OUT_L \
+ 0x08 // FSYNC on TEMP_OUT_L[0]
+#define MPU9150_CONFIG_EXT_SYNC_SET_GYRO_XOUT_L \
+ 0x10 // FSYNC on GYRO_XOUT_L[0]
+#define MPU9150_CONFIG_EXT_SYNC_SET_GYRO_YOUT_L \
+ 0x18 // FSYNC on GYRO_YOUT_L[0]
+#define MPU9150_CONFIG_EXT_SYNC_SET_GYRO_ZOUT_L \
+ 0x20 // FSYNC on GYRO_ZOUT_L[0]
+#define MPU9150_CONFIG_EXT_SYNC_SET_ACCEL_XOUT_L \
+ 0x28 // FSYNC on ACCEL_XOUT_L[0]
+#define MPU9150_CONFIG_EXT_SYNC_SET_ACCEL_YOUT_L \
+ 0x30 // FSYNC on ACCEL_YOUT_L[0]
+#define MPU9150_CONFIG_EXT_SYNC_SET_ACCEL_ZOUT_L \
+ 0x38 // FSYNC on ACCEL_ZOUT_L[0]
+#define MPU9150_CONFIG_DLPF_CFG_M \
+ 0x07 // Digital low-pass filter
+ // configuration
+#define MPU9150_CONFIG_DLPF_CFG_260_256 \
+ 0x00 // 260 Hz accelerometer bandwidth,
+ // 256 Hz gyro bandwidth
+#define MPU9150_CONFIG_DLPF_CFG_184_188 \
+ 0x01 // 184 Hz accelerometer bandwidth,
+ // 188 Hz gyro bandwidth
+#define MPU9150_CONFIG_DLPF_CFG_94_98 \
+ 0x02 // 94 Hz accelerometer bandwidth,
+ // 98 Hz gyro bandwidth
+#define MPU9150_CONFIG_DLPF_CFG_44_42 \
+ 0x03 // 44 Hz accelerometer bandwidth,
+ // 42 Hz gyro bandwidth
+#define MPU9150_CONFIG_DLPF_CFG_21_20 \
+ 0x04 // 21 Hz accelerometer bandwidth,
+ // 20 Hz gyro bandwidth
+#define MPU9150_CONFIG_DLPF_CFG_10_10 \
+ 0x05 // 10 Hz accelerometer bandwidth,
+ // 10 Hz gyro bandwidth
+#define MPU9150_CONFIG_DLPF_CFG_5_5 \
+ 0x06 // 5 Hz accelerometer bandwidth, 5
+ // Hz gyro bandwidth
+#define MPU9150_CONFIG_EXT_SYNC_SET_S \
+ 3
+#define MPU9150_CONFIG_DLPF_CFG_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_GYRO_CONFIG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_GYRO_CONFIG_XG_ST \
+ 0x80 // X-axis gyro self-test enable
+#define MPU9150_GYRO_CONFIG_YG_ST \
+ 0x40 // Y-axis gyro self-test enable
+#define MPU9150_GYRO_CONFIG_ZG_ST \
+ 0x20 // Z-axis gyro self-test enable
+#define MPU9150_GYRO_CONFIG_FS_SEL_M \
+ 0x18 // Gyro full-scale range
+#define MPU9150_GYRO_CONFIG_FS_SEL_250 \
+ 0x00 // Gyro full-scale range +/- 250
+ // degrees/sec
+#define MPU9150_GYRO_CONFIG_FS_SEL_500 \
+ 0x08 // Gyro full-scale range +/- 500
+ // degrees/sec
+#define MPU9150_GYRO_CONFIG_FS_SEL_1000 \
+ 0x10 // Gyro full-scale range +/- 1000
+ // degrees/sec
+#define MPU9150_GYRO_CONFIG_FS_SEL_2000 \
+ 0x18 // Gyro full-scale range +/- 2000
+ // degrees/sec
+#define MPU9150_GYRO_CONFIG_FS_SEL_S \
+ 3
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ACCEL_CONFIG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_CONFIG_XA_ST \
+ 0x80 // X-axis accelerometer self-test
+ // enable
+#define MPU9150_ACCEL_CONFIG_YA_ST \
+ 0x40 // Y-axis accelerometer self-test
+ // enable
+#define MPU9150_ACCEL_CONFIG_ZA_ST \
+ 0x20 // Z-axis accelerometer self-test
+ // enable
+#define MPU9150_ACCEL_CONFIG_AFS_SEL_M \
+ 0x18 // Accelerometer full-scale range
+#define MPU9150_ACCEL_CONFIG_AFS_SEL_2G \
+ 0x00 // Accelerometer full-scale range 2
+ // g
+#define MPU9150_ACCEL_CONFIG_AFS_SEL_4G \
+ 0x08 // Accelerometer full-scale range 4
+ // g
+#define MPU9150_ACCEL_CONFIG_AFS_SEL_8G \
+ 0x10 // Accelerometer full-scale range 8
+ // g
+#define MPU9150_ACCEL_CONFIG_AFS_SEL_16G \
+ 0x18 // Accelerometer full-scale range
+ // 16 g
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_M \
+ 0x07 // High-pass filter setting
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_RESET \
+ 0x00 // High-pass filter reset
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_5HZ \
+ 0x01 // High-pass filter at 5 Hz
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_2_5HZ \
+ 0x02 // High-pass filter at 2.5 Hz
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_1_25HZ \
+ 0x03 // High-pass filter at 1.25 Hz
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_0_63HZ \
+ 0x04 // High-pass filter at 0.63 Hz
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_HOLD \
+ 0x07 // High-pass filter hold
+#define MPU9150_ACCEL_CONFIG_AFS_SEL_S \
+ 3
+#define MPU9150_ACCEL_CONFIG_ACCEL_HPF_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_FF_THR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_FF_THR_M 0xFF // Free-fall threshold value
+#define MPU9150_FF_THR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_FF_DUR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_FF_DUR_M 0xFF // Free-fall duration value
+#define MPU9150_FF_DUR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_MOT_THR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_MOT_THR_M 0xFF // Motion detection threshold value
+#define MPU9150_MOT_THR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_MOT_DUR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_MOT_DUR_M 0xFF // Motion detection duration value
+#define MPU9150_MOT_DUR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ZRMOT_THR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ZRMOT_THR_M 0xFF // Zero motion detection threshold
+ // value
+#define MPU9150_ZRMOT_THR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ZRMOT_DUR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ZRMOT_DUR_M 0xFF // Zero motion detection duration
+ // value
+#define MPU9150_ZRMOT_DUR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_FIFO_EN
+// register.
+//
+//*****************************************************************************
+#define MPU9150_FIFO_EN_TEMP 0x80 // Temperature sensor FIFO enable
+#define MPU9150_FIFO_EN_XG 0x40 // X-axis gyro FIFO enable
+#define MPU9150_FIFO_EN_YG 0x20 // Y-axis gyro FIFO enable
+#define MPU9150_FIFO_EN_ZG 0x10 // Z-axis gyro FIFO enable
+#define MPU9150_FIFO_EN_ACCEL 0x08 // Accelerometer FIFO enable
+#define MPU9150_FIFO_EN_SLV2 0x04 // Slave 2 FIFO enable
+#define MPU9150_FIFO_EN_SLV1 0x02 // Slave 1 FIFO enable
+#define MPU9150_FIFO_EN_SLV0 0x01 // Slave 0 FIFO enable
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_MST_CTRL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_MST_CTRL_MULT_MST_EN \
+ 0x80 // Multi-master enable
+#define MPU9150_I2C_MST_CTRL_WAIT_FOR_ES \
+ 0x40 // Wait for external sensor data
+#define MPU9150_I2C_MST_CTRL_SLV3_FIFO_EN \
+ 0x20 // Slave 3 FIFO enable
+#define MPU9150_I2C_MST_CTRL_I2C_MST_P_NSR \
+ 0x10 // No repeated start conditions
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_M \
+ 0x0F // I2C master clock speed
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_348 \
+ 0x00 // 348 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_333 \
+ 0x01 // 333 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_320 \
+ 0x02 // 320 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_308 \
+ 0x03 // 308 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_296 \
+ 0x04 // 296 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_286 \
+ 0x05 // 286 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_276 \
+ 0x06 // 276 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_267 \
+ 0x07 // 267 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_258 \
+ 0x08 // 258 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_500 \
+ 0x09 // 500 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_471 \
+ 0x0A // 471 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_444 \
+ 0x0B // 444 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_421 \
+ 0x0C // 421 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_400 \
+ 0x0D // 400 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_381 \
+ 0x0E // 381 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_364 \
+ 0x0F // 364 kHz I2C master clock
+#define MPU9150_I2C_MST_CTRL_I2C_MST_CLK_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV0_ADDR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV0_ADDR_RW \
+ 0x80 // Read/not write
+#define MPU9150_I2C_SLV0_ADDR_M 0x7F // Slave address
+#define MPU9150_I2C_SLV0_ADDR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV0_REG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV0_REG_M 0xFF // Slave register number
+#define MPU9150_I2C_SLV0_REG_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV0_CTRL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV0_CTRL_EN \
+ 0x80 // Enable slave
+#define MPU9150_I2C_SLV0_CTRL_BYTE_SW \
+ 0x40 // Byte-swap word pairs
+#define MPU9150_I2C_SLV0_CTRL_REG_DIS \
+ 0x20 // Disable register number transfer
+#define MPU9150_I2C_SLV0_CTRL_GRP \
+ 0x10 // Word pair grouping
+#define MPU9150_I2C_SLV0_CTRL_LEN_M \
+ 0x0F // Number of bytes to transfer
+#define MPU9150_I2C_SLV0_CTRL_LEN_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV1_ADDR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV1_ADDR_RW \
+ 0x80 // Read/not write
+#define MPU9150_I2C_SLV1_ADDR_M 0x7F // Slave address
+#define MPU9150_I2C_SLV1_ADDR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV1_REG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV1_REG_M 0xFF // Slave register number
+#define MPU9150_I2C_SLV1_REG_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV1_CTRL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV1_CTRL_EN \
+ 0x80 // Enable slave
+#define MPU9150_I2C_SLV1_CTRL_BYTE_SW \
+ 0x40 // Byte-swap word pairs
+#define MPU9150_I2C_SLV1_CTRL_REG_DIS \
+ 0x20 // Disable register number transfer
+#define MPU9150_I2C_SLV1_CTRL_GRP \
+ 0x10 // Word pair grouping
+#define MPU9150_I2C_SLV1_CTRL_LEN_M \
+ 0x0F // Number of bytes to transfer
+#define MPU9150_I2C_SLV1_CTRL_LEN_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV2_ADDR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV2_ADDR_RW \
+ 0x80 // Read/not write
+#define MPU9150_I2C_SLV2_ADDR_M 0x7F // Slave address
+#define MPU9150_I2C_SLV2_ADDR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV2_REG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV2_REG_M 0xFF // Slave register number
+#define MPU9150_I2C_SLV2_REG_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV2_CTRL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV2_CTRL_EN \
+ 0x80 // Enable slave
+#define MPU9150_I2C_SLV2_CTRL_BYTE_SW \
+ 0x40 // Byte-swap word pairs
+#define MPU9150_I2C_SLV2_CTRL_REG_DIS \
+ 0x20 // Disable register number transfer
+#define MPU9150_I2C_SLV2_CTRL_GRP \
+ 0x10 // Word pair grouping
+#define MPU9150_I2C_SLV2_CTRL_LEN_M \
+ 0x0F // Number of bytes to transfer
+#define MPU9150_I2C_SLV2_CTRL_LEN_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV3_ADDR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV3_ADDR_RW \
+ 0x80 // Read/not write
+#define MPU9150_I2C_SLV3_ADDR_M 0x7F // Slave address
+#define MPU9150_I2C_SLV3_ADDR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV3_REG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV3_REG_M 0xFF // Slave register number
+#define MPU9150_I2C_SLV3_REG_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV3_CTRL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV3_CTRL_EN \
+ 0x80 // Enable slave
+#define MPU9150_I2C_SLV3_CTRL_BYTE_SW \
+ 0x40 // Byte-swap word pairs
+#define MPU9150_I2C_SLV3_CTRL_REG_DIS \
+ 0x20 // Disable register number transfer
+#define MPU9150_I2C_SLV3_CTRL_GRP \
+ 0x10 // Word pair grouping
+#define MPU9150_I2C_SLV3_CTRL_LEN_M \
+ 0x0F // Number of bytes to transfer
+#define MPU9150_I2C_SLV3_CTRL_LEN_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV4_ADDR
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV4_ADDR_RW \
+ 0x80 // Read/not write
+#define MPU9150_I2C_SLV4_ADDR_M 0x7F // Slave address
+#define MPU9150_I2C_SLV4_ADDR_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV4_REG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV4_REG_M 0xFF // Slave register number
+#define MPU9150_I2C_SLV4_REG_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV4_CTRL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV4_CTRL_EN \
+ 0x80 // Enable slave
+#define MPU9150_I2C_SLV4_CTRL_INT_EN \
+ 0x40 // Interrupt enable
+#define MPU9150_I2C_SLV4_CTRL_REG_DIS \
+ 0x20 // Disable register number transfer
+#define MPU9150_I2C_SLV4_CTRL_I2C_MST_DLY_M \
+ 0x1F // Slave access delay
+#define MPU9150_I2C_SLV4_CTRL_I2C_MST_DLY_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV4_DI
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV4_DI_M 0xFF // Input data
+#define MPU9150_I2C_SLV4_DI_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_MST_STATUS
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_MST_STATUS_PASS_THROUGH \
+ 0x80 // Pass through FSYNC interrupt
+ // status
+#define MPU9150_I2C_MST_STATUS_I2C_SLV4_DONE \
+ 0x40 // I2C slave 4 completion status
+#define MPU9150_I2C_MST_STATUS_I2C_LOST_ARB \
+ 0x20 // I2C arbitration lost status
+#define MPU9150_I2C_MST_STATUS_I2C_SLV4_NACK \
+ 0x10 // I2C slave 4 NACK status
+#define MPU9150_I2C_MST_STATUS_I2C_SLV3_NACK \
+ 0x08 // I2C slave 3 NACK status
+#define MPU9150_I2C_MST_STATUS_I2C_SLV2_NACK \
+ 0x04 // I2C slave 2 NACK status
+#define MPU9150_I2C_MST_STATUS_I2C_SLV1_NACK \
+ 0x02 // I2C slave 1 NACK status
+#define MPU9150_I2C_MST_STATUS_I2C_SLV0_NACK \
+ 0x01 // I2C slave 0 NACK status
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_INT_PIN_CFG
+// register.
+//
+//*****************************************************************************
+#define MPU9150_INT_PIN_CFG_INT_LEVEL \
+ 0x80 // INT pin active low
+#define MPU9150_INT_PIN_CFG_INT_OPEN \
+ 0x40 // INT pin open-drain
+#define MPU9150_INT_PIN_CFG_LATCH_INT_EN \
+ 0x20 // Latch INT pin output
+#define MPU9150_INT_PIN_CFG_INT_RD_CLEAR \
+ 0x10 // Interrupt clear on any read
+#define MPU9150_INT_PIN_CFG_FSYNC_INT_LEVEL \
+ 0x08 // FSYNC pin active low
+#define MPU9150_INT_PIN_CFG_FSYNC_INT_EN \
+ 0x04 // FSYNC pin interrupt enable
+#define MPU9150_INT_PIN_CFG_I2C_BYPASS_EN \
+ 0x02 // I2C bypass enable
+#define MPU9150_INT_PIN_CFG_CLKOUT_EN \
+ 0x01 // CLKOUT enable
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_INT_ENABLE
+// register.
+//
+//*****************************************************************************
+#define MPU9150_INT_ENABLE_FF_EN \
+ 0x80 // Free-fall interrupt enable
+#define MPU9150_INT_ENABLE_MOT_EN \
+ 0x40 // Motion detection interrupt
+ // enable
+#define MPU9150_INT_ENABLE_ZMOT_EN \
+ 0x20 // Zero motion interrupt enable
+#define MPU9150_INT_ENABLE_FIFO_OFLOW_EN \
+ 0x10 // FIFO overflow interrupt enable
+#define MPU9150_INT_ENABLE_I2C_MST_INT_EN \
+ 0x08 // I2C master interrupt enable
+#define MPU9150_INT_ENABLE_DATA_RDY_EN \
+ 0x01 // Data ready interrupt enable
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_INT_STATUS
+// register.
+//
+//*****************************************************************************
+#define MPU9150_INT_STATUS_FF_INT \
+ 0x80 // Free-fall interrupt status
+#define MPU9150_INT_STATUS_MOT_INT \
+ 0x40 // Motion detection interrupt
+ // status
+#define MPU9150_INT_STATUS_ZMOT_INT \
+ 0x20 // Zero motion interrupt status
+#define MPU9150_INT_STATUS_FIFO_OFLOW_INT \
+ 0x10 // FIFO overflow interrupt status
+#define MPU9150_INT_STATUS_I2C_MST_INT \
+ 0x08 // I2C master interrupt status
+#define MPU9150_INT_STATUS_DATA_RDY_INT \
+ 0x01 // Data ready interrupt status
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ACCEL_XOUT_H
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_XOUT_H_M 0xFF // Bits [15:8] of X-axis
+ // acceleration data
+#define MPU9150_ACCEL_XOUT_H_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ACCEL_XOUT_L
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_XOUT_L_M 0xFF // Bits [7:0] of X-axis
+ // acceleration data
+#define MPU9150_ACCEL_XOUT_L_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ACCEL_YOUT_H
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_YOUT_H_M 0xFF // Bits [15:8] of Y-axis
+ // acceleration data
+#define MPU9150_ACCEL_YOUT_H_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ACCEL_YOUT_L
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_YOUT_L_M 0xFF // Bits [7:0] of Y-axis
+ // acceleration data
+#define MPU9150_ACCEL_YOUT_L_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ACCEL_ZOUT_H
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_ZOUT_H_M 0xFF // Bits [15:8] of Z-axis
+ // acceleration data
+#define MPU9150_ACCEL_ZOUT_H_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_ACCEL_ZOUT_L
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_ZOUT_L_M 0xFF // Bits [7:0] of Z-axis
+ // acceleration data
+#define MPU9150_ACCEL_ZOUT_L_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_TEMP_OUT_H
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_TEMP_OUT_H_M \
+ 0xFF // Bits [15:8] of temperature data
+#define MPU9150_ACCEL_TEMP_OUT_H_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_TEMP_OUT_L
+// register.
+//
+//*****************************************************************************
+#define MPU9150_ACCEL_TEMP_OUT_L_M \
+ 0xFF // Bits [7:0] of temperature data
+#define MPU9150_ACCEL_TEMP_OUT_L_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_GYRO_XOUT_H
+// register.
+//
+//*****************************************************************************
+#define MPU9150_GYRO_XOUT_H_M 0xFF // Bits [15:8] of X-axis gyro data
+#define MPU9150_GYRO_XOUT_H_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_GYRO_XOUT_L
+// register.
+//
+//*****************************************************************************
+#define MPU9150_GYRO_XOUT_L_M 0xFF // Bits [7:0] of X-axis gyro data
+#define MPU9150_GYRO_XOUT_L_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_GYRO_YOUT_H
+// register.
+//
+//*****************************************************************************
+#define MPU9150_GYRO_YOUT_H_M 0xFF // Bits [15:8] of Y-axis gyro data
+#define MPU9150_GYRO_YOUT_H_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_GYRO_YOUT_L
+// register.
+//
+//*****************************************************************************
+#define MPU9150_GYRO_YOUT_L_M 0xFF // Bits [7:0] of Y-axis gyro data
+#define MPU9150_GYRO_YOUT_L_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_GYRO_ZOUT_H
+// register.
+//
+//*****************************************************************************
+#define MPU9150_GYRO_ZOUT_H_M 0xFF // Bits [15:8] of Z-axis gyro data
+#define MPU9150_GYRO_ZOUT_H_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_GYRO_ZOUT_L
+// register.
+//
+//*****************************************************************************
+#define MPU9150_GYRO_ZOUT_L_M 0xFF // Bits [7:0] of Z-axis gyro data
+#define MPU9150_GYRO_ZOUT_L_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_00 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_00_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_00_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_01 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_01_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_01_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_02 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_02_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_02_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_03 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_03_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_03_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_04 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_04_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_04_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_05 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_05_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_05_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_06 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_06_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_06_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_07 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_07_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_07_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_08 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_08_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_08_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_09 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_09_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_09_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_10 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_10_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_10_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_11 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_11_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_11_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_12 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_12_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_12_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_13 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_13_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_13_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_14 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_14_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_14_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_15 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_15_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_15_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_16 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_16_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_16_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_17 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_17_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_17_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_18 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_18_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_18_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_19 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_19_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_19_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_20 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_20_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_20_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_21 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_21_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_21_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_22 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_22_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_22_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_EXT_SENS_DATA_23 register.
+//
+//*****************************************************************************
+#define MPU9150_EXT_SENS_DATA_23_M \
+ 0xFF // External sensor data
+#define MPU9150_EXT_SENS_DATA_23_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_MOT_DETECT_STATUS register.
+//
+//*****************************************************************************
+#define MPU9150_MOT_DETECT_STATUS_MOT_XNEG \
+ 0x80 // Negative X-axis motion detect
+ // status
+#define MPU9150_MOT_DETECT_STATUS_MOT_XPOS \
+ 0x40 // Positive X-axis motion detect
+ // status
+#define MPU9150_MOT_DETECT_STATUS_MOT_YNEG \
+ 0x20 // Negative Y-axis motion detect
+ // status
+#define MPU9150_MOT_DETECT_STATUS_MOT_YPOS \
+ 0x10 // Positive Y-axis motion detect
+ // status
+#define MPU9150_MOT_DETECT_STATUS_MOT_ZNEG \
+ 0x08 // Negative Z-axis motion detect
+ // status
+#define MPU9150_MOT_DETECT_STATUS_MOT_ZPOS \
+ 0x04 // Positive Z-axis motion detect
+ // status
+#define MPU9150_MOT_DETECT_STATUS_MOT_ZRMOT \
+ 0x01 // Zero motion detect status
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV0_DO
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV0_DO_M 0xFF // Output data
+#define MPU9150_I2C_SLV0_DO_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV1_DO
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV1_DO_M 0xFF // Output data
+#define MPU9150_I2C_SLV1_DO_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV2_DO
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV2_DO_M 0xFF // Output data
+#define MPU9150_I2C_SLV2_DO_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_I2C_SLV3_DO
+// register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_SLV3_DO_M 0xFF // Output data
+#define MPU9150_I2C_SLV3_DO_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_I2C_MST_DELAY_CTRL register.
+//
+//*****************************************************************************
+#define MPU9150_I2C_MST_DELAY_CTRL_DELAY_ES_SHADOW \
+ 0x80 // Delay external sensor data
+#define MPU9150_I2C_MST_DELAY_CTRL_I2C_SLV4_DLY_EN \
+ 0x10 // I2C slave 4 delay enable
+#define MPU9150_I2C_MST_DELAY_CTRL_I2C_SLV3_DLY_EN \
+ 0x08 // I2C slave 3 delay enable
+#define MPU9150_I2C_MST_DELAY_CTRL_I2C_SLV2_DLY_EN \
+ 0x04 // I2C slave 2 delay enable
+#define MPU9150_I2C_MST_DELAY_CTRL_I2C_SLV1_DLY_EN \
+ 0x02 // I2C slave 1 delay enable
+#define MPU9150_I2C_MST_DELAY_CTRL_I2C_SLV0_DLY_EN \
+ 0x01 // I2C slave 0 delay enable
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_SIGNAL_PATH_RESET register.
+//
+//*****************************************************************************
+#define MPU9150_SIGNAL_PATH_RESET_GYRO \
+ 0x04 // Reset gyro
+#define MPU9150_SIGNAL_PATH_RESET_ACCEL \
+ 0x02 // Reset accelerometer
+#define MPU9150_SIGNAL_PATH_RESET_TEMP \
+ 0x01 // Reset temperature sensor
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the
+// MPU9150_O_MOT_DETECT_CTRL register.
+//
+//*****************************************************************************
+#define MPU9150_MOT_DETECT_CTRL_ACCEL_ON_DELAY_M \
+ 0x30 // Accelerometer wake-up delay
+#define MPU9150_MOT_DETECT_CTRL_ACCEL_ON_DELAY_4MS \
+ 0x00 // Delay 4 ms
+#define MPU9150_MOT_DETECT_CTRL_ACCEL_ON_DELAY_5MS \
+ 0x10 // Delay 5 ms
+#define MPU9150_MOT_DETECT_CTRL_ACCEL_ON_DELAY_6MS \
+ 0x20 // Delay 6 ms
+#define MPU9150_MOT_DETECT_CTRL_ACCEL_ON_DELAY_7MS \
+ 0x30 // Delay 7 ms
+#define MPU9150_MOT_DETECT_CTRL_FF_COUNT_M \
+ 0x0C // Free-fall counter decrement rate
+#define MPU9150_MOT_DETECT_CTRL_FF_COUNT_RESET \
+ 0x00 // Reset counter
+#define MPU9150_MOT_DETECT_CTRL_FF_COUNT_1 \
+ 0x04 // Decrement by 1
+#define MPU9150_MOT_DETECT_CTRL_FF_COUNT_2 \
+ 0x08 // Decrement by 2
+#define MPU9150_MOT_DETECT_CTRL_FF_COUNT_4 \
+ 0x0C // Decrement by 4
+#define MPU9150_MOT_DETECT_CTRL_MOT_COUNT_M \
+ 0x03 // Motion detect counter decrement
+ // rate
+#define MPU9150_MOT_DETECT_CTRL_MOT_COUNT_RESET \
+ 0x00 // Reset counter
+#define MPU9150_MOT_DETECT_CTRL_MOT_COUNT_1 \
+ 0x04 // Decrement by 1
+#define MPU9150_MOT_DETECT_CTRL_MOT_COUNT_2 \
+ 0x08 // Decrement by 2
+#define MPU9150_MOT_DETECT_CTRL_MOT_COUNT_4 \
+ 0x0C // Decrement by 4
+#define MPU9150_MOT_DETECT_CTRL_ACCEL_ON_DELAY_S \
+ 4
+#define MPU9150_MOT_DETECT_CTRL_FF_COUNT_S \
+ 2
+#define MPU9150_MOT_DETECT_CTRL_MOT_COUNT_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_USER_CTRL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_USER_CTRL_FIFO_EN \
+ 0x40 // FIFO enable
+#define MPU9150_USER_CTRL_I2C_MST_EN \
+ 0x20 // I2C master mode enable
+#define MPU9150_USER_CTRL_I2C_IF_DIS \
+ 0x10 // Write as zero
+#define MPU9150_USER_CTRL_FIFO_RESET \
+ 0x04 // Reset FIFO buffer
+#define MPU9150_USER_CTRL_I2C_MST_RESET \
+ 0x02 // Reset I2C master
+#define MPU9150_USER_CTRL_SIG_COND_RESET \
+ 0x01 // Reset all sensors
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_PWR_MGMT_1
+// register.
+//
+//*****************************************************************************
+#define MPU9150_PWR_MGMT_1_DEVICE_RESET \
+ 0x80 // Device reset
+#define MPU9150_PWR_MGMT_1_SLEEP \
+ 0x40 // Enter sleep mode
+#define MPU9150_PWR_MGMT_1_CYCLE \
+ 0x20 // Enable automatic sleep
+#define MPU9150_PWR_MGMT_1_TEMP_DIS \
+ 0x08 // Disable temperature sensor
+#define MPU9150_PWR_MGMT_1_CLKSEL_M \
+ 0x07 // Clock source select
+#define MPU9150_PWR_MGMT_1_CLKSEL_INT \
+ 0x00 // Internal 8 MHz oscillator
+#define MPU9150_PWR_MGMT_1_CLKSEL_XG \
+ 0x01 // PLL with X-axis gyro reference
+#define MPU9150_PWR_MGMT_1_CLKSEL_YG \
+ 0x02 // PLL with Y-axis gyro reference
+#define MPU9150_PWR_MGMT_1_CLKSEL_ZG \
+ 0x03 // PLL with Z-axis gyro reference
+#define MPU9150_PWR_MGMT_1_CLKSEL_EXT32K \
+ 0x04 // PLL with external 32.768 kHz
+ // reference
+#define MPU9150_PWR_MGMT_1_CLKSEL_EXT19M \
+ 0x05 // PLL with external 19.2 MHz
+ // reference
+#define MPU9150_PWR_MGMT_1_CLKSEL_STOP \
+ 0x07 // Clock disable
+#define MPU9150_PWR_MGMT_1_CLKSEL_S \
+ 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_PWR_MGMT_2
+// register.
+//
+//*****************************************************************************
+#define MPU9150_PWR_MGMT_2_LP_WAKE_CTRL_M \
+ 0xC0 // Wake-up frequency
+#define MPU9150_PWR_MGMT_2_LP_WAKE_CTRL_1_25 \
+ 0x00 // Wake-up at 1.25 Hz
+#define MPU9150_PWR_MGMT_2_LP_WAKE_CTRL_5 \
+ 0x40 // Wake-up at 5 Hz
+#define MPU9150_PWR_MGMT_2_LP_WAKE_CTRL_20 \
+ 0x80 // Wake-up at 20 Hz
+#define MPU9150_PWR_MGMT_2_LP_WAKE_CTRL_40 \
+ 0xC0 // Wake-up at 40 Hz
+#define MPU9150_PWR_MGMT_2_STBY_XA \
+ 0x20 // Put X-axis accelerometer into
+ // standby mode
+#define MPU9150_PWR_MGMT_2_STBY_YA \
+ 0x10 // Put Y-axis accelerometer into
+ // standby mode
+#define MPU9150_PWR_MGMT_2_STBY_ZA \
+ 0x08 // Put Z-axis accelerometer into
+ // standby mode
+#define MPU9150_PWR_MGMT_2_STBY_XG \
+ 0x04 // Put X-axis gyro into standby
+ // mode
+#define MPU9150_PWR_MGMT_2_STBY_YG \
+ 0x02 // Put Y-axis gyro into standby
+ // mode
+#define MPU9150_PWR_MGMT_2_STBY_ZG \
+ 0x01 // Put Z-axis gyro into standby
+ // mode
+#define MPU9150_PWR_MGMT_2_LP_WAKE_CTRL_S \
+ 6
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_FIFO_COUNTH
+// register.
+//
+//*****************************************************************************
+#define MPU9150_FIFO_COUNTH_M 0x07 // FIFO count [10:8]
+#define MPU9150_FIFO_COUNTH_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_FIFO_COUNTL
+// register.
+//
+//*****************************************************************************
+#define MPU9150_FIFO_COUNTL_M 0xFF // FIFO count [7:0]
+#define MPU9150_FIFO_COUNTL_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_FIFO_R_W
+// register.
+//
+//*****************************************************************************
+#define MPU9150_FIFO_R_W_M 0xFF // FIFO data
+#define MPU9150_FIFO_R_W_S 0
+
+//*****************************************************************************
+//
+// The following are defines for the bit fields in the MPU9150_O_WHO_AM_I
+// register.
+//
+//*****************************************************************************
+#define MPU9150_WHO_AM_I_M 0x7E // I2C address
+#define MPU9150_WHO_AM_I_MPU9150 \
+ 0x68 // MPU9150
+#define MPU9150_WHO_AM_I_S 1
+
+#endif // __SENSORLIB_HW_MPU9150_H__