import code from Fabrice's repository
[protos/imu.git] / mpu6050.h
1
2 #ifndef _MPU6050_H_
3 #define _MPU6050_H_
4
5
6 #define MPU6050_RA_XG_OFFS_TC 0x00 //[7] PWR_MODE, [6:1] XG_OFFS_TC, [0] OTP_BNK_VLD
7 #define MPU6050_RA_YG_OFFS_TC 0x01 //[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD
8 #define MPU6050_RA_ZG_OFFS_TC 0x02 //[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD
9 #define MPU6050_RA_X_FINE_GAIN 0x03 //[7:0] X_FINE_GAIN
10 #define MPU6050_RA_Y_FINE_GAIN 0x04 //[7:0] Y_FINE_GAIN
11 #define MPU6050_RA_Z_FINE_GAIN 0x05 //[7:0] Z_FINE_GAIN
12 #define MPU6050_RA_XA_OFFS_H 0x06 //[15:0] XA_OFFS
13 #define MPU6050_RA_XA_OFFS_L_TC 0x07
14 #define MPU6050_RA_YA_OFFS_H 0x08 //[15:0] YA_OFFS
15 #define MPU6050_RA_YA_OFFS_L_TC 0x09
16 #define MPU6050_RA_ZA_OFFS_H 0x0A //[15:0] ZA_OFFS
17 #define MPU6050_RA_ZA_OFFS_L_TC 0x0B
18 #define MPU6050_RA_XG_OFFS_USRH 0x13 //[15:0] XG_OFFS_USR
19 #define MPU6050_RA_XG_OFFS_USRL 0x14
20 #define MPU6050_RA_YG_OFFS_USRH 0x15 //[15:0] YG_OFFS_USR
21 #define MPU6050_RA_YG_OFFS_USRL 0x16
22 #define MPU6050_RA_ZG_OFFS_USRH 0x17 //[15:0] ZG_OFFS_USR
23 #define MPU6050_RA_ZG_OFFS_USRL 0x18
24 #define MPU6050_RA_SMPLRT_DIV 0x19
25 #define MPU6050_RA_CONFIG 0x1A
26 #define MPU6050_RA_GYRO_CONFIG 0x1B
27 #define MPU6050_RA_ACCEL_CONFIG 0x1C
28 #define MPU6050_RA_FF_THR 0x1D
29 #define MPU6050_RA_FF_DUR 0x1E
30 #define MPU6050_RA_MOT_THR 0x1F
31 #define MPU6050_RA_MOT_DUR 0x20
32 #define MPU6050_RA_ZRMOT_THR 0x21
33 #define MPU6050_RA_ZRMOT_DUR 0x22
34 #define MPU6050_RA_FIFO_EN 0x23
35 #define MPU6050_RA_I2C_MST_CTRL 0x24
36 #define MPU6050_RA_I2C_SLV0_ADDR 0x25
37 #define MPU6050_RA_I2C_SLV0_REG 0x26
38 #define MPU6050_RA_I2C_SLV0_CTRL 0x27
39 #define MPU6050_RA_I2C_SLV1_ADDR 0x28
40 #define MPU6050_RA_I2C_SLV1_REG 0x29
41 #define MPU6050_RA_I2C_SLV1_CTRL 0x2A
42 #define MPU6050_RA_I2C_SLV2_ADDR 0x2B
43 #define MPU6050_RA_I2C_SLV2_REG 0x2C
44 #define MPU6050_RA_I2C_SLV2_CTRL 0x2D
45 #define MPU6050_RA_I2C_SLV3_ADDR 0x2E
46 #define MPU6050_RA_I2C_SLV3_REG 0x2F
47 #define MPU6050_RA_I2C_SLV3_CTRL 0x30
48 #define MPU6050_RA_I2C_SLV4_ADDR 0x31
49 #define MPU6050_RA_I2C_SLV4_REG 0x32
50 #define MPU6050_RA_I2C_SLV4_DO 0x33
51 #define MPU6050_RA_I2C_SLV4_CTRL 0x34
52 #define MPU6050_RA_I2C_SLV4_DI 0x35
53 #define MPU6050_RA_I2C_MST_STATUS 0x36
54 #define MPU6050_RA_INT_PIN_CFG 0x37
55 #define MPU6050_RA_INT_ENABLE 0x38
56 #define MPU6050_RA_DMP_INT_STATUS 0x39
57 #define MPU6050_RA_INT_STATUS 0x3A
58 #define MPU6050_RA_ACCEL_XOUT_H 0x3B
59 #define MPU6050_RA_ACCEL_XOUT_L 0x3C
60 #define MPU6050_RA_ACCEL_YOUT_H 0x3D
61 #define MPU6050_RA_ACCEL_YOUT_L 0x3E
62 #define MPU6050_RA_ACCEL_ZOUT_H 0x3F
63 #define MPU6050_RA_ACCEL_ZOUT_L 0x40
64 #define MPU6050_RA_TEMP_OUT_H 0x41
65 #define MPU6050_RA_TEMP_OUT_L 0x42
66 #define MPU6050_RA_GYRO_XOUT_H 0x43
67 #define MPU6050_RA_GYRO_XOUT_L 0x44
68 #define MPU6050_RA_GYRO_YOUT_H 0x45
69 #define MPU6050_RA_GYRO_YOUT_L 0x46
70 #define MPU6050_RA_GYRO_ZOUT_H 0x47
71 #define MPU6050_RA_GYRO_ZOUT_L 0x48
72 #define MPU6050_RA_EXT_SENS_DATA_00 0x49
73 #define MPU6050_RA_EXT_SENS_DATA_01 0x4A
74 #define MPU6050_RA_EXT_SENS_DATA_02 0x4B
75 #define MPU6050_RA_EXT_SENS_DATA_03 0x4C
76 #define MPU6050_RA_EXT_SENS_DATA_04 0x4D
77 #define MPU6050_RA_EXT_SENS_DATA_05 0x4E
78 #define MPU6050_RA_EXT_SENS_DATA_06 0x4F
79 #define MPU6050_RA_EXT_SENS_DATA_07 0x50
80 #define MPU6050_RA_EXT_SENS_DATA_08 0x51
81 #define MPU6050_RA_EXT_SENS_DATA_09 0x52
82 #define MPU6050_RA_EXT_SENS_DATA_10 0x53
83 #define MPU6050_RA_EXT_SENS_DATA_11 0x54
84 #define MPU6050_RA_EXT_SENS_DATA_12 0x55
85 #define MPU6050_RA_EXT_SENS_DATA_13 0x56
86 #define MPU6050_RA_EXT_SENS_DATA_14 0x57
87 #define MPU6050_RA_EXT_SENS_DATA_15 0x58
88 #define MPU6050_RA_EXT_SENS_DATA_16 0x59
89 #define MPU6050_RA_EXT_SENS_DATA_17 0x5A
90 #define MPU6050_RA_EXT_SENS_DATA_18 0x5B
91 #define MPU6050_RA_EXT_SENS_DATA_19 0x5C
92 #define MPU6050_RA_EXT_SENS_DATA_20 0x5D
93 #define MPU6050_RA_EXT_SENS_DATA_21 0x5E
94 #define MPU6050_RA_EXT_SENS_DATA_22 0x5F
95 #define MPU6050_RA_EXT_SENS_DATA_23 0x60
96 #define MPU6050_RA_MOT_DETECT_STATUS 0x61
97 #define MPU6050_RA_I2C_SLV0_DO 0x63
98 #define MPU6050_RA_I2C_SLV1_DO 0x64
99 #define MPU6050_RA_I2C_SLV2_DO 0x65
100 #define MPU6050_RA_I2C_SLV3_DO 0x66
101 #define MPU6050_RA_I2C_MST_DELAY_CTRL 0x67
102 #define MPU6050_RA_SIGNAL_PATH_RESET 0x68
103 #define MPU6050_RA_MOT_DETECT_CTRL 0x69
104 #define MPU6050_RA_USER_CTRL 0x6A
105 #define MPU6050_RA_PWR_MGMT_1 0x6B
106 #define MPU6050_RA_PWR_MGMT_2 0x6C
107 #define MPU6050_RA_BANK_SEL 0x6D
108 #define MPU6050_RA_MEM_START_ADDR 0x6E
109 #define MPU6050_RA_MEM_R_W 0x6F
110 #define MPU6050_RA_DMP_CFG_1 0x70
111 #define MPU6050_RA_DMP_CFG_2 0x71
112 #define MPU6050_RA_FIFO_COUNTH 0x72
113 #define MPU6050_RA_FIFO_COUNTL 0x73
114 #define MPU6050_RA_FIFO_R_W 0x74
115 #define MPU6050_RA_WHO_AM_I 0x75
116
117
118 uint8_t mpu6050_init(void);
119 uint8_t mpu6050_read_all_axes(int16_t *values);
120
121
122 extern float mpu6050_gx;
123 extern float mpu6050_gy;
124 extern float mpu6050_gz;
125
126 extern float mpu6050_ax;
127 extern float mpu6050_ay;
128 extern float mpu6050_az;
129
130
131 extern float mpu6050_mx;
132 extern float mpu6050_my;
133 extern float mpu6050_mz;
134
135 extern float mpu6050_temp;
136
137 #endif // _MPU6050_H_