Go to the documentation of this file.
36 #include <Libraries/I2Cdev/I2Cdev.h>
38 #define MPU6050_ADDRESS_AD0_LOW 0x68 // address pin low (GND), default for InvenSense evaluation board
39 #define MPU6050_ADDRESS_AD0_HIGH 0x69 // address pin high (VCC)
40 #define MPU6050_DEFAULT_ADDRESS MPU6050_ADDRESS_AD0_LOW
42 #define MPU6050_RA_XG_OFFS_TC 0x00 //[7] PWR_MODE, [6:1] XG_OFFS_TC, [0] OTP_BNK_VLD
43 #define MPU6050_RA_YG_OFFS_TC 0x01 //[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD
44 #define MPU6050_RA_ZG_OFFS_TC 0x02 //[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD
45 #define MPU6050_RA_X_FINE_GAIN 0x03 //[7:0] X_FINE_GAIN
46 #define MPU6050_RA_Y_FINE_GAIN 0x04 //[7:0] Y_FINE_GAIN
47 #define MPU6050_RA_Z_FINE_GAIN 0x05 //[7:0] Z_FINE_GAIN
48 #define MPU6050_RA_XA_OFFS_H 0x06 //[15:0] XA_OFFS
49 #define MPU6050_RA_XA_OFFS_L_TC 0x07
50 #define MPU6050_RA_YA_OFFS_H 0x08 //[15:0] YA_OFFS
51 #define MPU6050_RA_YA_OFFS_L_TC 0x09
52 #define MPU6050_RA_ZA_OFFS_H 0x0A //[15:0] ZA_OFFS
53 #define MPU6050_RA_ZA_OFFS_L_TC 0x0B
54 #define MPU6050_RA_SELF_TEST_X 0x0D //[7:5] XA_TEST[4-2], [4:0] XG_TEST[4-0]
55 #define MPU6050_RA_SELF_TEST_Y 0x0E //[7:5] YA_TEST[4-2], [4:0] YG_TEST[4-0]
56 #define MPU6050_RA_SELF_TEST_Z 0x0F //[7:5] ZA_TEST[4-2], [4:0] ZG_TEST[4-0]
57 #define MPU6050_RA_SELF_TEST_A 0x10 //[5:4] XA_TEST[1-0], [3:2] YA_TEST[1-0], [1:0] ZA_TEST[1-0]
58 #define MPU6050_RA_XG_OFFS_USRH 0x13 //[15:0] XG_OFFS_USR
59 #define MPU6050_RA_XG_OFFS_USRL 0x14
60 #define MPU6050_RA_YG_OFFS_USRH 0x15 //[15:0] YG_OFFS_USR
61 #define MPU6050_RA_YG_OFFS_USRL 0x16
62 #define MPU6050_RA_ZG_OFFS_USRH 0x17 //[15:0] ZG_OFFS_USR
63 #define MPU6050_RA_ZG_OFFS_USRL 0x18
64 #define MPU6050_RA_SMPLRT_DIV 0x19
65 #define MPU6050_RA_CONFIG 0x1A
66 #define MPU6050_RA_GYRO_CONFIG 0x1B
67 #define MPU6050_RA_ACCEL_CONFIG 0x1C
68 #define MPU6050_RA_FF_THR 0x1D
69 #define MPU6050_RA_FF_DUR 0x1E
70 #define MPU6050_RA_MOT_THR 0x1F
71 #define MPU6050_RA_MOT_DUR 0x20
72 #define MPU6050_RA_ZRMOT_THR 0x21
73 #define MPU6050_RA_ZRMOT_DUR 0x22
74 #define MPU6050_RA_FIFO_EN 0x23
75 #define MPU6050_RA_I2C_MST_CTRL 0x24
76 #define MPU6050_RA_I2C_SLV0_ADDR 0x25
77 #define MPU6050_RA_I2C_SLV0_REG 0x26
78 #define MPU6050_RA_I2C_SLV0_CTRL 0x27
79 #define MPU6050_RA_I2C_SLV1_ADDR 0x28
80 #define MPU6050_RA_I2C_SLV1_REG 0x29
81 #define MPU6050_RA_I2C_SLV1_CTRL 0x2A
82 #define MPU6050_RA_I2C_SLV2_ADDR 0x2B
83 #define MPU6050_RA_I2C_SLV2_REG 0x2C
84 #define MPU6050_RA_I2C_SLV2_CTRL 0x2D
85 #define MPU6050_RA_I2C_SLV3_ADDR 0x2E
86 #define MPU6050_RA_I2C_SLV3_REG 0x2F
87 #define MPU6050_RA_I2C_SLV3_CTRL 0x30
88 #define MPU6050_RA_I2C_SLV4_ADDR 0x31
89 #define MPU6050_RA_I2C_SLV4_REG 0x32
90 #define MPU6050_RA_I2C_SLV4_DO 0x33
91 #define MPU6050_RA_I2C_SLV4_CTRL 0x34
92 #define MPU6050_RA_I2C_SLV4_DI 0x35
93 #define MPU6050_RA_I2C_MST_STATUS 0x36
94 #define MPU6050_RA_INT_PIN_CFG 0x37
95 #define MPU6050_RA_INT_ENABLE 0x38
96 #define MPU6050_RA_DMP_INT_STATUS 0x39
97 #define MPU6050_RA_INT_STATUS 0x3A
98 #define MPU6050_RA_ACCEL_XOUT_H 0x3B
99 #define MPU6050_RA_ACCEL_XOUT_L 0x3C
100 #define MPU6050_RA_ACCEL_YOUT_H 0x3D
101 #define MPU6050_RA_ACCEL_YOUT_L 0x3E
102 #define MPU6050_RA_ACCEL_ZOUT_H 0x3F
103 #define MPU6050_RA_ACCEL_ZOUT_L 0x40
104 #define MPU6050_RA_TEMP_OUT_H 0x41
105 #define MPU6050_RA_TEMP_OUT_L 0x42
106 #define MPU6050_RA_GYRO_XOUT_H 0x43
107 #define MPU6050_RA_GYRO_XOUT_L 0x44
108 #define MPU6050_RA_GYRO_YOUT_H 0x45
109 #define MPU6050_RA_GYRO_YOUT_L 0x46
110 #define MPU6050_RA_GYRO_ZOUT_H 0x47
111 #define MPU6050_RA_GYRO_ZOUT_L 0x48
112 #define MPU6050_RA_EXT_SENS_DATA_00 0x49
113 #define MPU6050_RA_EXT_SENS_DATA_01 0x4A
114 #define MPU6050_RA_EXT_SENS_DATA_02 0x4B
115 #define MPU6050_RA_EXT_SENS_DATA_03 0x4C
116 #define MPU6050_RA_EXT_SENS_DATA_04 0x4D
117 #define MPU6050_RA_EXT_SENS_DATA_05 0x4E
118 #define MPU6050_RA_EXT_SENS_DATA_06 0x4F
119 #define MPU6050_RA_EXT_SENS_DATA_07 0x50
120 #define MPU6050_RA_EXT_SENS_DATA_08 0x51
121 #define MPU6050_RA_EXT_SENS_DATA_09 0x52
122 #define MPU6050_RA_EXT_SENS_DATA_10 0x53
123 #define MPU6050_RA_EXT_SENS_DATA_11 0x54
124 #define MPU6050_RA_EXT_SENS_DATA_12 0x55
125 #define MPU6050_RA_EXT_SENS_DATA_13 0x56
126 #define MPU6050_RA_EXT_SENS_DATA_14 0x57
127 #define MPU6050_RA_EXT_SENS_DATA_15 0x58
128 #define MPU6050_RA_EXT_SENS_DATA_16 0x59
129 #define MPU6050_RA_EXT_SENS_DATA_17 0x5A
130 #define MPU6050_RA_EXT_SENS_DATA_18 0x5B
131 #define MPU6050_RA_EXT_SENS_DATA_19 0x5C
132 #define MPU6050_RA_EXT_SENS_DATA_20 0x5D
133 #define MPU6050_RA_EXT_SENS_DATA_21 0x5E
134 #define MPU6050_RA_EXT_SENS_DATA_22 0x5F
135 #define MPU6050_RA_EXT_SENS_DATA_23 0x60
136 #define MPU6050_RA_MOT_DETECT_STATUS 0x61
137 #define MPU6050_RA_I2C_SLV0_DO 0x63
138 #define MPU6050_RA_I2C_SLV1_DO 0x64
139 #define MPU6050_RA_I2C_SLV2_DO 0x65
140 #define MPU6050_RA_I2C_SLV3_DO 0x66
141 #define MPU6050_RA_I2C_MST_DELAY_CTRL 0x67
142 #define MPU6050_RA_SIGNAL_PATH_RESET 0x68
143 #define MPU6050_RA_MOT_DETECT_CTRL 0x69
144 #define MPU6050_RA_USER_CTRL 0x6A
145 #define MPU6050_RA_PWR_MGMT_1 0x6B
146 #define MPU6050_RA_PWR_MGMT_2 0x6C
147 #define MPU6050_RA_BANK_SEL 0x6D
148 #define MPU6050_RA_MEM_START_ADDR 0x6E
149 #define MPU6050_RA_MEM_R_W 0x6F
150 #define MPU6050_RA_DMP_CFG_1 0x70
151 #define MPU6050_RA_DMP_CFG_2 0x71
152 #define MPU6050_RA_FIFO_COUNTH 0x72
153 #define MPU6050_RA_FIFO_COUNTL 0x73
154 #define MPU6050_RA_FIFO_R_W 0x74
155 #define MPU6050_RA_WHO_AM_I 0x75
157 #define MPU6050_SELF_TEST_XA_1_BIT 0x07
158 #define MPU6050_SELF_TEST_XA_1_LENGTH 0x03
159 #define MPU6050_SELF_TEST_XA_2_BIT 0x05
160 #define MPU6050_SELF_TEST_XA_2_LENGTH 0x02
161 #define MPU6050_SELF_TEST_YA_1_BIT 0x07
162 #define MPU6050_SELF_TEST_YA_1_LENGTH 0x03
163 #define MPU6050_SELF_TEST_YA_2_BIT 0x03
164 #define MPU6050_SELF_TEST_YA_2_LENGTH 0x02
165 #define MPU6050_SELF_TEST_ZA_1_BIT 0x07
166 #define MPU6050_SELF_TEST_ZA_1_LENGTH 0x03
167 #define MPU6050_SELF_TEST_ZA_2_BIT 0x01
168 #define MPU6050_SELF_TEST_ZA_2_LENGTH 0x02
170 #define MPU6050_SELF_TEST_XG_1_BIT 0x04
171 #define MPU6050_SELF_TEST_XG_1_LENGTH 0x05
172 #define MPU6050_SELF_TEST_YG_1_BIT 0x04
173 #define MPU6050_SELF_TEST_YG_1_LENGTH 0x05
174 #define MPU6050_SELF_TEST_ZG_1_BIT 0x04
175 #define MPU6050_SELF_TEST_ZG_1_LENGTH 0x05
177 #define MPU6050_TC_PWR_MODE_BIT 7
178 #define MPU6050_TC_OFFSET_BIT 6
179 #define MPU6050_TC_OFFSET_LENGTH 6
180 #define MPU6050_TC_OTP_BNK_VLD_BIT 0
182 #define MPU6050_VDDIO_LEVEL_VLOGIC 0
183 #define MPU6050_VDDIO_LEVEL_VDD 1
185 #define MPU6050_CFG_EXT_SYNC_SET_BIT 5
186 #define MPU6050_CFG_EXT_SYNC_SET_LENGTH 3
187 #define MPU6050_CFG_DLPF_CFG_BIT 2
188 #define MPU6050_CFG_DLPF_CFG_LENGTH 3
190 #define MPU6050_EXT_SYNC_DISABLED 0x0
191 #define MPU6050_EXT_SYNC_TEMP_OUT_L 0x1
192 #define MPU6050_EXT_SYNC_GYRO_XOUT_L 0x2
193 #define MPU6050_EXT_SYNC_GYRO_YOUT_L 0x3
194 #define MPU6050_EXT_SYNC_GYRO_ZOUT_L 0x4
195 #define MPU6050_EXT_SYNC_ACCEL_XOUT_L 0x5
196 #define MPU6050_EXT_SYNC_ACCEL_YOUT_L 0x6
197 #define MPU6050_EXT_SYNC_ACCEL_ZOUT_L 0x7
199 #define MPU6050_DLPF_BW_256 0x00
200 #define MPU6050_DLPF_BW_188 0x01
201 #define MPU6050_DLPF_BW_98 0x02
202 #define MPU6050_DLPF_BW_42 0x03
203 #define MPU6050_DLPF_BW_20 0x04
204 #define MPU6050_DLPF_BW_10 0x05
205 #define MPU6050_DLPF_BW_5 0x06
207 #define MPU6050_GCONFIG_FS_SEL_BIT 4
208 #define MPU6050_GCONFIG_FS_SEL_LENGTH 2
210 #define MPU6050_GYRO_FS_250 0x00
211 #define MPU6050_GYRO_FS_500 0x01
212 #define MPU6050_GYRO_FS_1000 0x02
213 #define MPU6050_GYRO_FS_2000 0x03
215 #define MPU6050_ACONFIG_XA_ST_BIT 7
216 #define MPU6050_ACONFIG_YA_ST_BIT 6
217 #define MPU6050_ACONFIG_ZA_ST_BIT 5
218 #define MPU6050_ACONFIG_AFS_SEL_BIT 4
219 #define MPU6050_ACONFIG_AFS_SEL_LENGTH 2
220 #define MPU6050_ACONFIG_ACCEL_HPF_BIT 2
221 #define MPU6050_ACONFIG_ACCEL_HPF_LENGTH 3
223 #define MPU6050_ACCEL_FS_2 0x00
224 #define MPU6050_ACCEL_FS_4 0x01
225 #define MPU6050_ACCEL_FS_8 0x02
226 #define MPU6050_ACCEL_FS_16 0x03
228 #define MPU6050_DHPF_RESET 0x00
229 #define MPU6050_DHPF_5 0x01
230 #define MPU6050_DHPF_2P5 0x02
231 #define MPU6050_DHPF_1P25 0x03
232 #define MPU6050_DHPF_0P63 0x04
233 #define MPU6050_DHPF_HOLD 0x07
235 #define MPU6050_TEMP_FIFO_EN_BIT 7
236 #define MPU6050_XG_FIFO_EN_BIT 6
237 #define MPU6050_YG_FIFO_EN_BIT 5
238 #define MPU6050_ZG_FIFO_EN_BIT 4
239 #define MPU6050_ACCEL_FIFO_EN_BIT 3
240 #define MPU6050_SLV2_FIFO_EN_BIT 2
241 #define MPU6050_SLV1_FIFO_EN_BIT 1
242 #define MPU6050_SLV0_FIFO_EN_BIT 0
244 #define MPU6050_MULT_MST_EN_BIT 7
245 #define MPU6050_WAIT_FOR_ES_BIT 6
246 #define MPU6050_SLV_3_FIFO_EN_BIT 5
247 #define MPU6050_I2C_MST_P_NSR_BIT 4
248 #define MPU6050_I2C_MST_CLK_BIT 3
249 #define MPU6050_I2C_MST_CLK_LENGTH 4
251 #define MPU6050_CLOCK_DIV_348 0x0
252 #define MPU6050_CLOCK_DIV_333 0x1
253 #define MPU6050_CLOCK_DIV_320 0x2
254 #define MPU6050_CLOCK_DIV_308 0x3
255 #define MPU6050_CLOCK_DIV_296 0x4
256 #define MPU6050_CLOCK_DIV_286 0x5
257 #define MPU6050_CLOCK_DIV_276 0x6
258 #define MPU6050_CLOCK_DIV_267 0x7
259 #define MPU6050_CLOCK_DIV_258 0x8
260 #define MPU6050_CLOCK_DIV_500 0x9
261 #define MPU6050_CLOCK_DIV_471 0xA
262 #define MPU6050_CLOCK_DIV_444 0xB
263 #define MPU6050_CLOCK_DIV_421 0xC
264 #define MPU6050_CLOCK_DIV_400 0xD
265 #define MPU6050_CLOCK_DIV_381 0xE
266 #define MPU6050_CLOCK_DIV_364 0xF
268 #define MPU6050_I2C_SLV_RW_BIT 7
269 #define MPU6050_I2C_SLV_ADDR_BIT 6
270 #define MPU6050_I2C_SLV_ADDR_LENGTH 7
271 #define MPU6050_I2C_SLV_EN_BIT 7
272 #define MPU6050_I2C_SLV_BYTE_SW_BIT 6
273 #define MPU6050_I2C_SLV_REG_DIS_BIT 5
274 #define MPU6050_I2C_SLV_GRP_BIT 4
275 #define MPU6050_I2C_SLV_LEN_BIT 3
276 #define MPU6050_I2C_SLV_LEN_LENGTH 4
278 #define MPU6050_I2C_SLV4_RW_BIT 7
279 #define MPU6050_I2C_SLV4_ADDR_BIT 6
280 #define MPU6050_I2C_SLV4_ADDR_LENGTH 7
281 #define MPU6050_I2C_SLV4_EN_BIT 7
282 #define MPU6050_I2C_SLV4_INT_EN_BIT 6
283 #define MPU6050_I2C_SLV4_REG_DIS_BIT 5
284 #define MPU6050_I2C_SLV4_MST_DLY_BIT 4
285 #define MPU6050_I2C_SLV4_MST_DLY_LENGTH 5
287 #define MPU6050_MST_PASS_THROUGH_BIT 7
288 #define MPU6050_MST_I2C_SLV4_DONE_BIT 6
289 #define MPU6050_MST_I2C_LOST_ARB_BIT 5
290 #define MPU6050_MST_I2C_SLV4_NACK_BIT 4
291 #define MPU6050_MST_I2C_SLV3_NACK_BIT 3
292 #define MPU6050_MST_I2C_SLV2_NACK_BIT 2
293 #define MPU6050_MST_I2C_SLV1_NACK_BIT 1
294 #define MPU6050_MST_I2C_SLV0_NACK_BIT 0
296 #define MPU6050_INTCFG_INT_LEVEL_BIT 7
297 #define MPU6050_INTCFG_INT_OPEN_BIT 6
298 #define MPU6050_INTCFG_LATCH_INT_EN_BIT 5
299 #define MPU6050_INTCFG_INT_RD_CLEAR_BIT 4
300 #define MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT 3
301 #define MPU6050_INTCFG_FSYNC_INT_EN_BIT 2
302 #define MPU6050_INTCFG_I2C_BYPASS_EN_BIT 1
303 #define MPU6050_INTCFG_CLKOUT_EN_BIT 0
305 #define MPU6050_INTMODE_ACTIVEHIGH 0x00
306 #define MPU6050_INTMODE_ACTIVELOW 0x01
308 #define MPU6050_INTDRV_PUSHPULL 0x00
309 #define MPU6050_INTDRV_OPENDRAIN 0x01
311 #define MPU6050_INTLATCH_50USPULSE 0x00
312 #define MPU6050_INTLATCH_WAITCLEAR 0x01
314 #define MPU6050_INTCLEAR_STATUSREAD 0x00
315 #define MPU6050_INTCLEAR_ANYREAD 0x01
317 #define MPU6050_INTERRUPT_FF_BIT 7
318 #define MPU6050_INTERRUPT_MOT_BIT 6
319 #define MPU6050_INTERRUPT_ZMOT_BIT 5
320 #define MPU6050_INTERRUPT_FIFO_OFLOW_BIT 4
321 #define MPU6050_INTERRUPT_I2C_MST_INT_BIT 3
322 #define MPU6050_INTERRUPT_PLL_RDY_INT_BIT 2
323 #define MPU6050_INTERRUPT_DMP_INT_BIT 1
324 #define MPU6050_INTERRUPT_DATA_RDY_BIT 0
328 #define MPU6050_DMPINT_5_BIT 5
329 #define MPU6050_DMPINT_4_BIT 4
330 #define MPU6050_DMPINT_3_BIT 3
331 #define MPU6050_DMPINT_2_BIT 2
332 #define MPU6050_DMPINT_1_BIT 1
333 #define MPU6050_DMPINT_0_BIT 0
335 #define MPU6050_MOTION_MOT_XNEG_BIT 7
336 #define MPU6050_MOTION_MOT_XPOS_BIT 6
337 #define MPU6050_MOTION_MOT_YNEG_BIT 5
338 #define MPU6050_MOTION_MOT_YPOS_BIT 4
339 #define MPU6050_MOTION_MOT_ZNEG_BIT 3
340 #define MPU6050_MOTION_MOT_ZPOS_BIT 2
341 #define MPU6050_MOTION_MOT_ZRMOT_BIT 0
343 #define MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT 7
344 #define MPU6050_DELAYCTRL_I2C_SLV4_DLY_EN_BIT 4
345 #define MPU6050_DELAYCTRL_I2C_SLV3_DLY_EN_BIT 3
346 #define MPU6050_DELAYCTRL_I2C_SLV2_DLY_EN_BIT 2
347 #define MPU6050_DELAYCTRL_I2C_SLV1_DLY_EN_BIT 1
348 #define MPU6050_DELAYCTRL_I2C_SLV0_DLY_EN_BIT 0
350 #define MPU6050_PATHRESET_GYRO_RESET_BIT 2
351 #define MPU6050_PATHRESET_ACCEL_RESET_BIT 1
352 #define MPU6050_PATHRESET_TEMP_RESET_BIT 0
354 #define MPU6050_DETECT_ACCEL_ON_DELAY_BIT 5
355 #define MPU6050_DETECT_ACCEL_ON_DELAY_LENGTH 2
356 #define MPU6050_DETECT_FF_COUNT_BIT 3
357 #define MPU6050_DETECT_FF_COUNT_LENGTH 2
358 #define MPU6050_DETECT_MOT_COUNT_BIT 1
359 #define MPU6050_DETECT_MOT_COUNT_LENGTH 2
361 #define MPU6050_DETECT_DECREMENT_RESET 0x0
362 #define MPU6050_DETECT_DECREMENT_1 0x1
363 #define MPU6050_DETECT_DECREMENT_2 0x2
364 #define MPU6050_DETECT_DECREMENT_4 0x3
366 #define MPU6050_USERCTRL_DMP_EN_BIT 7
367 #define MPU6050_USERCTRL_FIFO_EN_BIT 6
368 #define MPU6050_USERCTRL_I2C_MST_EN_BIT 5
369 #define MPU6050_USERCTRL_I2C_IF_DIS_BIT 4
370 #define MPU6050_USERCTRL_DMP_RESET_BIT 3
371 #define MPU6050_USERCTRL_FIFO_RESET_BIT 2
372 #define MPU6050_USERCTRL_I2C_MST_RESET_BIT 1
373 #define MPU6050_USERCTRL_SIG_COND_RESET_BIT 0
375 #define MPU6050_PWR1_DEVICE_RESET_BIT 7
376 #define MPU6050_PWR1_SLEEP_BIT 6
377 #define MPU6050_PWR1_CYCLE_BIT 5
378 #define MPU6050_PWR1_TEMP_DIS_BIT 3
379 #define MPU6050_PWR1_CLKSEL_BIT 2
380 #define MPU6050_PWR1_CLKSEL_LENGTH 3
382 #define MPU6050_CLOCK_INTERNAL 0x00
383 #define MPU6050_CLOCK_PLL_XGYRO 0x01
384 #define MPU6050_CLOCK_PLL_YGYRO 0x02
385 #define MPU6050_CLOCK_PLL_ZGYRO 0x03
386 #define MPU6050_CLOCK_PLL_EXT32K 0x04
387 #define MPU6050_CLOCK_PLL_EXT19M 0x05
388 #define MPU6050_CLOCK_KEEP_RESET 0x07
390 #define MPU6050_PWR2_LP_WAKE_CTRL_BIT 7
391 #define MPU6050_PWR2_LP_WAKE_CTRL_LENGTH 2
392 #define MPU6050_PWR2_STBY_XA_BIT 5
393 #define MPU6050_PWR2_STBY_YA_BIT 4
394 #define MPU6050_PWR2_STBY_ZA_BIT 3
395 #define MPU6050_PWR2_STBY_XG_BIT 2
396 #define MPU6050_PWR2_STBY_YG_BIT 1
397 #define MPU6050_PWR2_STBY_ZG_BIT 0
399 #define MPU6050_WAKE_FREQ_1P25 0x0
400 #define MPU6050_WAKE_FREQ_2P5 0x1
401 #define MPU6050_WAKE_FREQ_5 0x2
402 #define MPU6050_WAKE_FREQ_10 0x3
404 #define MPU6050_BANKSEL_PRFTCH_EN_BIT 6
405 #define MPU6050_BANKSEL_CFG_USER_BANK_BIT 5
406 #define MPU6050_BANKSEL_MEM_SEL_BIT 4
407 #define MPU6050_BANKSEL_MEM_SEL_LENGTH 5
409 #define MPU6050_WHO_AM_I_BIT 6
410 #define MPU6050_WHO_AM_I_LENGTH 6
412 #define MPU6050_DMP_MEMORY_BANKS 8
413 #define MPU6050_DMP_MEMORY_BANK_SIZE 256
414 #define MPU6050_DMP_MEMORY_CHUNK_SIZE 16
3097 return (((
uint16_t)buffer[0]) << 8) | buffer[1];
3419 template <
typename T> T readReg(
uint8_t regAddr);
3424 template <
typename T> T MPU6050::readReg(
uint8_t regAddr)
3426 static_assert(std::is_fundamental<T>::value,
"T must be an fundamental type.");
3428 const auto sz =
sizeof(T);
3431 I2Cdev::readBytes(devAddr, regAddr, sz, buffer);
3434 for(
size_t i{0}; i < sz; ++i) {
3435 result |=
static_cast<T
>(buffer[i]) << (8 * (sz - i - 1));
3444 return (
static_cast<T
>(bits_15_8) << 8) | bits_7_0;
#define MPU6050_DETECT_FF_COUNT_LENGTH
Definition: MPU6050.h:357
#define MPU6050_ACONFIG_ACCEL_HPF_BIT
Definition: MPU6050.h:220
#define MPU6050_DMPINT_0_BIT
Definition: MPU6050.h:333
void setSlave4Register(uint8_t reg)
Definition: MPU6050.h:1530
void setInterruptLatchClear(bool clear)
Definition: MPU6050.h:1821
#define MPU6050_I2C_MST_P_NSR_BIT
Definition: MPU6050.h:247
void setZAccelOffset(int16_t offset)
Definition: MPU6050.h:3265
void setTempSensorEnabled(bool enabled)
Definition: MPU6050.h:2873
uint8_t getZeroMotionDetectionDuration()
Definition: MPU6050.h:1013
#define MPU6050_USERCTRL_SIG_COND_RESET_BIT
Definition: MPU6050.h:373
void setFSyncInterruptLevel(bool level)
Definition: MPU6050.h:1841
void setOTPBankValid(bool enabled)
Definition: MPU6050.h:3181
#define MPU6050_MST_I2C_SLV3_NACK_BIT
Definition: MPU6050.h:291
bool getSlave2FIFOEnabled()
Definition: MPU6050.h:1132
bool getIntDataReadyEnabled()
Definition: MPU6050.h:2055
#define MPU6050_MST_PASS_THROUGH_BIT
Definition: MPU6050.h:287
#define MPU6050_ACONFIG_XA_ST_BIT
Definition: MPU6050.h:215
#define MPU6050_RA_GYRO_YOUT_H
Definition: MPU6050.h:108
void setAccelerometerPowerOnDelay(uint8_t delay)
Definition: MPU6050.h:2611
#define MPU6050_PWR1_CLKSEL_LENGTH
Definition: MPU6050.h:380
size_t printTo(Print &p) const
#define MPU6050_TC_OFFSET_BIT
Definition: MPU6050.h:178
bool getAccelYSelfTest()
Definition: MPU6050.h:712
int16_t getAngularRateY()
Definition: MPU6050.h:2291
void resetI2CMaster()
Definition: MPU6050.h:2769
#define MPU6050_RA_FIFO_COUNTH
Definition: MPU6050.h:152
void setSlave4Address(uint8_t address)
Definition: MPU6050.h:1510
#define MPU6050_TC_OTP_BNK_VLD_BIT
Definition: MPU6050.h:180
#define MPU6050_RA_DMP_CFG_2
Definition: MPU6050.h:151
void setSlaveAddress(SlaveId slaveId, uint8_t address)
#define MPU6050_I2C_SLV4_MST_DLY_BIT
Definition: MPU6050.h:284
uint16_t getExternalSensorWord(int position)
Definition: MPU6050.h:2395
void setFreefallDetectionCounterDecrement(uint8_t decrement)
Definition: MPU6050.h:2652
void setStandbyYAccelEnabled(bool enabled)
Definition: MPU6050.h:2999
void setFullScaleGyroRange(uint8_t range)
Definition: MPU6050.h:647
uint8_t getGyroXSelfTestFactoryTrim()
#define MPU6050_INTERRUPT_DATA_RDY_BIT
Definition: MPU6050.h:324
void setSlave3FIFOEnabled(bool enabled)
Definition: MPU6050.h:1253
#define MPU6050_RA_FF_DUR
Definition: MPU6050.h:69
bool getTempSensorEnabled()
Definition: MPU6050.h:2859
bool getInterruptMode()
Definition: MPU6050.h:1751
#define MPU6050_PWR2_STBY_XG_BIT
Definition: MPU6050.h:395
#define MPU6050_USERCTRL_FIFO_RESET_BIT
Definition: MPU6050.h:371
bool getFSyncInterruptEnabled()
Definition: MPU6050.h:1851
#define MPU6050_INTERRUPT_DMP_INT_BIT
Definition: MPU6050.h:323
uint8_t getAccelerometerPowerOnDelay()
Definition: MPU6050.h:2600
bool getSlaveDelayEnabled(SlaveId slaveId)
bool getDMPInt5Status()
Definition: MPU6050.h:3320
#define MPU6050_GCONFIG_FS_SEL_LENGTH
Definition: MPU6050.h:208
bool getDMPEnabled()
Definition: MPU6050.h:3358
int16_t x
Definition: MPU6050.h:422
void setWakeFrequency(uint8_t frequency)
Definition: MPU6050.h:2957
uint8_t getMasterClockSpeed()
Definition: MPU6050.h:1309
void setXGyroOffset(int16_t offset)
Definition: MPU6050.h:3275
#define MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT
Definition: MPU6050.h:343
void setRate(uint8_t rate)
Definition: MPU6050.h:523
uint8_t getDeviceID()
Definition: MPU6050.h:3155
#define MPU6050_DETECT_MOT_COUNT_BIT
Definition: MPU6050.h:358
void setStandbyXAccelEnabled(bool enabled)
Definition: MPU6050.h:2979
#define MPU6050_RA_YA_OFFS_H
Definition: MPU6050.h:50
void setSlaveDelayEnabled(SlaveId slaveId, bool enabled)
Definition: MPU6050.h:2546
uint8_t getSlaveAddress(SlaveId slaveId)
uint8_t getAccelYSelfTestFactoryTrim()
Definition: MPU6050.h:416
uint8_t SlaveId
Definition: MPU6050.h:419
void setI2CBypassEnabled(bool enabled)
Definition: MPU6050.h:1891
bool getIntZeroMotionStatus()
Definition: MPU6050.h:2113
#define MPU6050_DETECT_ACCEL_ON_DELAY_BIT
Definition: MPU6050.h:354
bool getSlaveReadWriteTransitionEnabled()
Definition: MPU6050.h:1267
#define MPU6050_MOTION_MOT_XNEG_BIT
Definition: MPU6050.h:335
#define MPU6050_RA_TEMP_OUT_H
Definition: MPU6050.h:104
bool getAccelFIFOEnabled()
Definition: MPU6050.h:1113
#define MPU6050_SLV0_FIFO_EN_BIT
Definition: MPU6050.h:242
void setClockOutputEnabled(bool enabled)
Definition: MPU6050.h:1917
void setSlave4MasterDelay(uint8_t delay)
Definition: MPU6050.h:1633
#define MPU6050_I2C_MST_CLK_BIT
Definition: MPU6050.h:248
uint8_t getZeroMotionDetectionThreshold()
Definition: MPU6050.h:980
void setIntI2CMasterEnabled(bool enabled)
Definition: MPU6050.h:2044
void setSlaveWordByteSwap(SlaveId slaveId, bool enabled)
uint8_t getAccelZSelfTestFactoryTrim()
#define MPU6050_INTCFG_INT_RD_CLEAR_BIT
Definition: MPU6050.h:299
#define MPU6050_INTCFG_INT_LEVEL_BIT
Definition: MPU6050.h:296
uint8_t getFreefallDetectionCounterDecrement()
Definition: MPU6050.h:2642
#define MPU6050_PATHRESET_ACCEL_RESET_BIT
Definition: MPU6050.h:351
MPU6050(uint8_t address)
Definition: MPU6050.h:446
#define MPU6050_RA_ZG_OFFS_TC
Definition: MPU6050.h:44
#define MPU6050_PWR2_STBY_YA_BIT
Definition: MPU6050.h:393
Definition: MPU6050.h:428
bool getIntZeroMotionEnabled()
Definition: MPU6050.h:1993
void setInterruptMode(bool mode)
Definition: MPU6050.h:1761
#define MPU6050_INTERRUPT_FIFO_OFLOW_BIT
Definition: MPU6050.h:320
bool getDMPInt2Status()
Definition: MPU6050.h:3332
bool getSlaveWriteMode(SlaveId slaveId)
int16_t getZAccelOffset()
#define MPU6050_MST_I2C_SLV1_NACK_BIT
Definition: MPU6050.h:293
int16_t getAccelerationZ()
Definition: MPU6050.h:2227
bool getInterruptLatch()
Definition: MPU6050.h:1791
#define MPU6050_RA_XG_OFFS_USRH
Definition: MPU6050.h:58
#define MPU6050_INTCFG_FSYNC_INT_EN_BIT
Definition: MPU6050.h:301
bool getFIFOEnabled()
Definition: MPU6050.h:2706
uint8_t getSlave4MasterDelay()
Definition: MPU6050.h:1624
int16_t getAccelerationX()
Definition: MPU6050.h:2209
bool getStandbyZAccelEnabled()
Definition: MPU6050.h:3009
#define MPU6050_MOTION_MOT_ZPOS_BIT
Definition: MPU6050.h:340
#define MPU6050_DMPINT_4_BIT
Definition: MPU6050.h:329
bool getStandbyYGyroEnabled()
Definition: MPU6050.h:3049
void setZGyroOffsetTC(int8_t offset)
Definition: MPU6050.h:3211
bool getSlaveWordByteSwap(SlaveId slaveId)
#define MPU6050_PWR2_STBY_XA_BIT
Definition: MPU6050.h:392
void resetFIFO()
Definition: MPU6050.h:2759
#define MPU6050_INTCFG_I2C_BYPASS_EN_BIT
Definition: MPU6050.h:302
#define MPU6050_RA_ZRMOT_DUR
Definition: MPU6050.h:73
#define MPU6050_RA_I2C_MST_CTRL
Definition: MPU6050.h:75
#define MPU6050_RA_INT_ENABLE
Definition: MPU6050.h:95
void setZGyroFIFOEnabled(bool enabled)
Definition: MPU6050.h:1102
#define MPU6050_RA_ACCEL_ZOUT_H
Definition: MPU6050.h:102
bool getIntMotionStatus()
Definition: MPU6050.h:2101
void setSlave1FIFOEnabled(bool enabled)
Definition: MPU6050.h:1160
int16_t getAccelerationY()
Definition: MPU6050.h:2218
bool getYNegMotionDetected()
Definition: MPU6050.h:2442
bool getYGyroFIFOEnabled()
Definition: MPU6050.h:1074
void switchSPIEnabled(bool enabled)
Definition: MPU6050.h:2749
#define MPU6050_MST_I2C_SLV2_NACK_BIT
Definition: MPU6050.h:292
bool getDMPInt4Status()
Definition: MPU6050.h:3324
#define MPU6050_RA_FIFO_R_W
Definition: MPU6050.h:154
#define MPU6050_RA_ACCEL_XOUT_H
Definition: MPU6050.h:98
Definition: MPU6050.h:3440
bool getStandbyXGyroEnabled()
Definition: MPU6050.h:3029
#define MPU6050_USERCTRL_DMP_EN_BIT
Definition: MPU6050.h:366
void setAccelXSelfTest(bool enabled)
Definition: MPU6050.h:704
#define MPU6050_DETECT_MOT_COUNT_LENGTH
Definition: MPU6050.h:359
Motion3 getAcceleration()
#define MPU6050_RA_FF_THR
Definition: MPU6050.h:68
#define MPU6050_MST_I2C_SLV4_DONE_BIT
Definition: MPU6050.h:288
void setMotionDetectionThreshold(uint8_t threshold)
Definition: MPU6050.h:916
bool getSlave4IsDone()
Definition: MPU6050.h:1672
void setExternalShadowDelayEnabled(bool enabled)
Definition: MPU6050.h:2514
uint8_t getIntStatus()
Definition: MPU6050.h:2079
void setMemoryBank(uint8_t bank, bool prefetchEnabled=false, bool userBank=false)
uint8_t getFIFOByte()
Definition: MPU6050.h:3127
#define MPU6050_RA_USER_CTRL
Definition: MPU6050.h:144
void resetTemperaturePath()
Definition: MPU6050.h:2579
int16_t getTemperature()
Definition: MPU6050.h:2238
bool getIntFIFOBufferOverflowEnabled()
Definition: MPU6050.h:2013
uint8_t getMotionStatus()
Definition: MPU6050.h:2415
void setInterruptLatch(bool latch)
Definition: MPU6050.h:1801
#define MPU6050_MULT_MST_EN_BIT
Definition: MPU6050.h:244
uint8_t getMotionDetectionThreshold()
Definition: MPU6050.h:906
void setSlave0FIFOEnabled(bool enabled)
Definition: MPU6050.h:1179
void setZeroMotionDetectionThreshold(uint8_t threshold)
Definition: MPU6050.h:990
#define MPU6050_RA_SIGNAL_PATH_RESET
Definition: MPU6050.h:142
#define MPU6050_PWR2_STBY_ZA_BIT
Definition: MPU6050.h:394
#define MPU6050_DMPINT_2_BIT
Definition: MPU6050.h:331
Motion3 gyro
Definition: MPU6050.h:430
void setFIFOByte(uint8_t data)
Definition: MPU6050.h:3136
#define MPU6050_WHO_AM_I_LENGTH
Definition: MPU6050.h:410
#define MPU6050_ZG_FIFO_EN_BIT
Definition: MPU6050.h:238
bool getSlave4Enabled()
Definition: MPU6050.h:1550
int16_t getYAccelOffset()
bool getZGyroFIFOEnabled()
Definition: MPU6050.h:1093
bool getI2CBypassEnabled()
Definition: MPU6050.h:1876
bool getIntI2CMasterEnabled()
Definition: MPU6050.h:2034
bool getYPosMotionDetected()
Definition: MPU6050.h:2451
uint8_t getGyroZSelfTestFactoryTrim()
bool getIntPLLReadyStatus()
Definition: MPU6050.h:3347
#define MPU6050_INTERRUPT_ZMOT_BIT
Definition: MPU6050.h:319
void setYAccelOffset(int16_t offset)
Definition: MPU6050.h:3258
void setSlaveRegister(SlaveId slaveId, uint8_t reg)
void resetGyroscopePath()
Definition: MPU6050.h:2559
#define MPU6050_RA_PWR_MGMT_2
Definition: MPU6050.h:146
#define MPU6050_RA_PWR_MGMT_1
Definition: MPU6050.h:145
#define MPU6050_ACONFIG_AFS_SEL_BIT
Definition: MPU6050.h:218
#define MPU6050_RA_Z_FINE_GAIN
Definition: MPU6050.h:47
int8_t getZFineGain()
Definition: MPU6050.h:3240
#define MPU6050_RA_INT_PIN_CFG
Definition: MPU6050.h:94
#define MPU6050_RA_GYRO_XOUT_H
Definition: MPU6050.h:106
#define MPU6050_RA_MOT_THR
Definition: MPU6050.h:70
void setClockSource(uint8_t source)
Definition: MPU6050.h:2919
#define MPU6050_WAIT_FOR_ES_BIT
Definition: MPU6050.h:245
#define MPU6050_DMPINT_5_BIT
Definition: MPU6050.h:328
#define MPU6050_DMPINT_1_BIT
Definition: MPU6050.h:332
uint8_t getFullScaleAccelRange()
Definition: MPU6050.h:757
int8_t getXGyroOffsetTC()
Definition: MPU6050.h:3185
#define MPU6050_ACONFIG_ZA_ST_BIT
Definition: MPU6050.h:217
uint8_t getAccelXSelfTestFactoryTrim()
#define MPU6050_RA_GYRO_CONFIG
Definition: MPU6050.h:66
#define MPU6050_RA_I2C_MST_STATUS
Definition: MPU6050.h:93
#define MPU6050_PATHRESET_TEMP_RESET_BIT
Definition: MPU6050.h:352
#define MPU6050_PWR2_STBY_YG_BIT
Definition: MPU6050.h:396
bool getIntMotionEnabled()
Definition: MPU6050.h:1973
#define MPU6050_PATHRESET_GYRO_RESET_BIT
Definition: MPU6050.h:350
#define MPU6050_PWR1_SLEEP_BIT
Definition: MPU6050.h:376
void setWaitForExternalSensorEnabled(bool enabled)
Definition: MPU6050.h:1234
#define MPU6050_RA_FIFO_EN
Definition: MPU6050.h:74
uint8_t getFullScaleGyroRange()
Definition: MPU6050.h:634
void setIntPLLReadyEnabled(bool enabled)
Definition: MPU6050.h:3306
uint8_t getRate()
Definition: MPU6050.h:513
void setXGyroOffsetTC(int8_t offset)
Definition: MPU6050.h:3189
#define MPU6050_XG_FIFO_EN_BIT
Definition: MPU6050.h:236
void setTempFIFOEnabled(bool enabled)
Definition: MPU6050.h:1045
uint8_t getSlate4InputByte()
Definition: MPU6050.h:1644
void delay(uint32_t milliseconds)
Pause execution.
bool getXGyroFIFOEnabled()
Definition: MPU6050.h:1055
void setInterruptDrive(bool drive)
Definition: MPU6050.h:1781
#define MPU6050_RA_MEM_R_W
Definition: MPU6050.h:149
#define MPU6050_SLV_3_FIFO_EN_BIT
Definition: MPU6050.h:246
#define MPU6050_RA_WHO_AM_I
Definition: MPU6050.h:155
void setIntFreefallEnabled(bool enabled)
Definition: MPU6050.h:1963
void setXAccelOffset(int16_t offset)
Definition: MPU6050.h:3251
uint8_t getMotionDetectionDuration()
Definition: MPU6050.h:938
#define MPU6050_USERCTRL_DMP_RESET_BIT
Definition: MPU6050.h:370
#define MPU6050_CFG_DLPF_CFG_BIT
Definition: MPU6050.h:187
uint8_t getGyroYSelfTestFactoryTrim()
void setSlaveReadWriteTransitionEnabled(bool enabled)
Definition: MPU6050.h:1276
#define MPU6050_RA_I2C_SLV4_CTRL
Definition: MPU6050.h:91
uint8_t getDLPFMode()
Definition: MPU6050.h:599
bool getTempFIFOEnabled()
Definition: MPU6050.h:1036
bool getLostArbitration()
Definition: MPU6050.h:1683
int16_t getAngularRateX()
Definition: MPU6050.h:2282
int16_t getAngularRateZ2()
Definition: MPU6050.h:2305
void setStandbyXGyroEnabled(bool enabled)
Definition: MPU6050.h:3039
#define MPU6050_TC_OFFSET_LENGTH
Definition: MPU6050.h:179
void setXGyroFIFOEnabled(bool enabled)
Definition: MPU6050.h:1064
int16_t y
Definition: MPU6050.h:423
bool getDMPInt3Status()
Definition: MPU6050.h:3328
#define MPU6050_PWR2_LP_WAKE_CTRL_BIT
Definition: MPU6050.h:390
void setFullScaleAccelRange(uint8_t range)
Definition: MPU6050.h:765
#define MPU6050_RA_X_FINE_GAIN
Definition: MPU6050.h:45
bool getPassthroughStatus()
Definition: MPU6050.h:1660
void setYGyroOffset(int16_t offset)
Definition: MPU6050.h:3285
#define MPU6050_RA_MEM_START_ADDR
Definition: MPU6050.h:148
int8_t getYGyroOffsetTC()
Definition: MPU6050.h:3196
void setSlaveDataLength(SlaveId slaveId, uint8_t length)
Definition: MPU6050.h:421
#define MPU6050_I2C_SLV4_MST_DLY_LENGTH
Definition: MPU6050.h:285
#define MPU6050_YG_FIFO_EN_BIT
Definition: MPU6050.h:237
void setSleepEnabled(bool enabled)
Definition: MPU6050.h:2822
void setWakeCycleEnabled(bool enabled)
Definition: MPU6050.h:2844
void setIntZeroMotionEnabled(bool enabled)
Definition: MPU6050.h:2003
void setMultiMasterEnabled(bool enabled)
Definition: MPU6050.h:1210
bool getWaitForExternalSensorEnabled()
Definition: MPU6050.h:1225
void setYFineGain(int8_t gain)
Definition: MPU6050.h:3233
void setDLPFMode(uint8_t mode)
Definition: MPU6050.h:611
void setExternalFrameSync(uint8_t sync)
Definition: MPU6050.h:566
bool getAccelXSelfTest()
Definition: MPU6050.h:696
bool getZeroMotionDetected()
Definition: MPU6050.h:2478
#define MPU6050_DETECT_FF_COUNT_BIT
Definition: MPU6050.h:356
#define MPU6050_USERCTRL_I2C_IF_DIS_BIT
Definition: MPU6050.h:369
#define MPU6050_MOTION_MOT_YNEG_BIT
Definition: MPU6050.h:337
void setYGyroOffsetTC(int8_t offset)
Definition: MPU6050.h:3200
#define MPU6050_RA_ZA_OFFS_H
Definition: MPU6050.h:52
uint8_t getDHPFMode()
Definition: MPU6050.h:805
int8_t getYFineGain()
Definition: MPU6050.h:3229
uint8_t getClockSource()
Definition: MPU6050.h:2884
#define MPU6050_RA_MOT_DUR
Definition: MPU6050.h:71
bool getAccelZSelfTest()
Definition: MPU6050.h:728
uint8_t getDMPConfig2()
Definition: MPU6050.h:3403
void setSlave4OutputByte(uint8_t data)
Definition: MPU6050.h:1540
void setDeviceID(uint8_t id)
Definition: MPU6050.h:3168
void reset()
Definition: MPU6050.h:2797
bool getSlave4WriteMode()
Definition: MPU6050.h:1595
#define MPU6050_RA_ACCEL_YOUT_H
Definition: MPU6050.h:100
bool getStandbyYAccelEnabled()
Definition: MPU6050.h:2989
#define MPU6050_RA_YG_OFFS_USRH
Definition: MPU6050.h:60
uint16_t getFIFOCount()
Definition: MPU6050.h:3093
void setSlave4Enabled(bool enabled)
Definition: MPU6050.h:1559
uint8_t getDMPConfig1()
Definition: MPU6050.h:3392
#define MPU6050_DMPINT_3_BIT
Definition: MPU6050.h:330
#define MPU6050_CFG_DLPF_CFG_LENGTH
Definition: MPU6050.h:188
bool getIntDMPStatus()
Definition: MPU6050.h:3351
bool getXNegMotionDetected()
Definition: MPU6050.h:2424
void setZGyroOffset(int16_t offset)
Definition: MPU6050.h:3296
void setFreefallDetectionThreshold(uint8_t threshold)
Definition: MPU6050.h:847
void getFIFOBytes(uint8_t *data, uint8_t length)
Definition: MPU6050.h:3141
#define MPU6050_RA_SMPLRT_DIV
Definition: MPU6050.h:64
#define MPU6050_RA_CONFIG
Definition: MPU6050.h:65
void writeMemoryByte(uint8_t data)
Definition: MPU6050.h:3386
#define MPU6050_CFG_EXT_SYNC_SET_BIT
Definition: MPU6050.h:185
bool getSlaveEnabled(SlaveId slaveId)
int8_t getXFineGain()
Definition: MPU6050.h:3218
bool getIntI2CMasterStatus()
Definition: MPU6050.h:2138
bool getDMPInt0Status()
Definition: MPU6050.h:3340
bool getStandbyZGyroEnabled()
Definition: MPU6050.h:3069
void setIntDataReadyEnabled(bool enabled)
Definition: MPU6050.h:2065
void setSlave2FIFOEnabled(bool enabled)
Definition: MPU6050.h:1141
#define MPU6050_RA_MOT_DETECT_STATUS
Definition: MPU6050.h:136
uint32_t getExternalSensorDWord(int position)
Definition: MPU6050.h:2404
bool getSlave1FIFOEnabled()
Definition: MPU6050.h:1151
int16_t getZGyroOffset()
Definition: MPU6050.h:3291
bool getSlaveWordGroupOffset(SlaveId slaveId)
void setStandbyYGyroEnabled(bool enabled)
Definition: MPU6050.h:3059
bool getClockOutputEnabled()
Definition: MPU6050.h:1904
void setXFineGain(int8_t gain)
Definition: MPU6050.h:3222
#define MPU6050_MST_I2C_SLV0_NACK_BIT
Definition: MPU6050.h:294
#define MPU6050_RA_XG_OFFS_TC
Definition: MPU6050.h:42
bool getWakeCycleEnabled()
Definition: MPU6050.h:2834
#define MPU6050_PWR1_CLKSEL_BIT
Definition: MPU6050.h:379
#define MPU6050_MOTION_MOT_ZRMOT_BIT
Definition: MPU6050.h:341
#define MPU6050_CFG_EXT_SYNC_SET_LENGTH
Definition: MPU6050.h:186
uint8_t getIntEnabled()
Definition: MPU6050.h:1931
#define MPU6050_RA_ZRMOT_THR
Definition: MPU6050.h:72
#define MPU6050_I2C_SLV4_EN_BIT
Definition: MPU6050.h:281
#define MPU6050_RA_Y_FINE_GAIN
Definition: MPU6050.h:46
void setSlaveOutputByte(SlaveId slaveId, uint8_t data)
bool getZNegMotionDetected()
Definition: MPU6050.h:2460
bool getSlave4Nack()
Definition: MPU6050.h:1694
#define MPU6050_RA_YG_OFFS_TC
Definition: MPU6050.h:43
void setZeroMotionDetectionDuration(uint8_t duration)
Definition: MPU6050.h:1023
#define MPU6050_RA_ZG_OFFS_USRH
Definition: MPU6050.h:62
#define MPU6050_MOTION_MOT_YPOS_BIT
Definition: MPU6050.h:338
Provides formatted output to stream.
Definition: Print.h:36
bool getMultiMasterEnabled()
Definition: MPU6050.h:1201
int16_t getXGyroOffset()
Definition: MPU6050.h:3271
#define MPU6050_RA_DMP_CFG_1
Definition: MPU6050.h:150
bool getInterruptLatchClear()
Definition: MPU6050.h:1811
void setSlave4InterruptEnabled(bool enabled)
Definition: MPU6050.h:1581
#define MPU6050_RA_MOT_DETECT_CTRL
Definition: MPU6050.h:143
bool getZPosMotionDetected()
Definition: MPU6050.h:2469
void setSlaveWordGroupOffset(SlaveId slaveId, bool enabled)
#define MPU6050_RA_EXT_SENS_DATA_00
Definition: MPU6050.h:112
void setIntEnabled(uint8_t enabled)
Definition: MPU6050.h:1943
int16_t getXAccelOffset()
uint8_t getAuxVDDIOLevel()
Definition: MPU6050.h:475
#define MPU6050_RA_DMP_INT_STATUS
Definition: MPU6050.h:96
bool getSlave0Nack()
Definition: MPU6050.h:1738
#define MPU6050_USERCTRL_FIFO_EN_BIT
Definition: MPU6050.h:367
size_t printTo(Print &p) const
int16_t getYGyroOffset()
Definition: MPU6050.h:3280
void setIntMotionEnabled(bool enabled)
Definition: MPU6050.h:1983
#define MPU6050_RA_ACCEL_CONFIG
Definition: MPU6050.h:67
#define MPU6050_I2C_SLV4_REG_DIS_BIT
Definition: MPU6050.h:283
#define MPU6050_I2C_SLV4_INT_EN_BIT
Definition: MPU6050.h:282
void setIntFIFOBufferOverflowEnabled(bool enabled)
Definition: MPU6050.h:2023
#define MPU6050_GCONFIG_FS_SEL_BIT
Definition: MPU6050.h:207
void setAccelYSelfTest(bool enabled)
Definition: MPU6050.h:720
uint8_t readMemoryByte()
Definition: MPU6050.h:3381
bool testConnection()
Definition: MPU6050.h:463
void setFIFOEnabled(bool enabled)
Definition: MPU6050.h:2716
uint8_t getExternalSensorByte(int position)
Definition: MPU6050.h:2386
void setMemoryStartAddress(uint8_t address)
Definition: MPU6050.h:3375
#define MPU6050_RA_I2C_MST_DELAY_CTRL
Definition: MPU6050.h:141
uint8_t getFreefallDetectionThreshold()
Definition: MPU6050.h:838
void setAccelZSelfTest(bool enabled)
Definition: MPU6050.h:736
uint8_t getSlave4Register()
Definition: MPU6050.h:1521
void setIntDMPEnabled(bool enabled)
Definition: MPU6050.h:3314
#define MPU6050_RA_GYRO_ZOUT_H
Definition: MPU6050.h:110
#define MPU6050_WHO_AM_I_BIT
Definition: MPU6050.h:409
#define MPU6050_RA_I2C_SLV4_DO
Definition: MPU6050.h:90
bool getSlave3Nack()
Definition: MPU6050.h:1705
#define MPU6050_USERCTRL_I2C_MST_EN_BIT
Definition: MPU6050.h:368
bool getSlave4InterruptEnabled()
Definition: MPU6050.h:1572
bool getSlave1Nack()
Definition: MPU6050.h:1727
bool getFSyncInterruptLevel()
Definition: MPU6050.h:1831
bool getIntPLLReadyEnabled()
Definition: MPU6050.h:3302
#define MPU6050_INTCFG_INT_OPEN_BIT
Definition: MPU6050.h:297
bool getIntDMPEnabled()
Definition: MPU6050.h:3310
uint8_t getWakeFrequency()
Definition: MPU6050.h:2949
void setMotionDetectionCounterDecrement(uint8_t decrement)
Definition: MPU6050.h:2690
void setDMPConfig1(uint8_t config)
Definition: MPU6050.h:3397
#define MPU6050_USERCTRL_I2C_MST_RESET_BIT
Definition: MPU6050.h:372
bool getInterruptDrive()
Definition: MPU6050.h:1771
void setI2CMasterModeEnabled(bool enabled)
Definition: MPU6050.h:2741
void resetDMP()
Definition: MPU6050.h:3366
bool getExternalShadowDelayEnabled()
Definition: MPU6050.h:2504
#define MPU6050_INTERRUPT_I2C_MST_INT_BIT
Definition: MPU6050.h:321
bool getSleepEnabled()
Definition: MPU6050.h:2812
void resetAccelerometerPath()
Definition: MPU6050.h:2569
#define MPU6050_RA_INT_STATUS
Definition: MPU6050.h:97
#define MPU6050_SLV1_FIFO_EN_BIT
Definition: MPU6050.h:241
bool getIntDataReadyStatus()
Definition: MPU6050.h:2150
#define MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT
Definition: MPU6050.h:300
#define MPU6050_MST_I2C_LOST_ARB_BIT
Definition: MPU6050.h:289
int16_t z
Definition: MPU6050.h:424
#define MPU6050_ACONFIG_YA_ST_BIT
Definition: MPU6050.h:216
uint8_t getFreefallDetectionDuration()
Definition: MPU6050.h:871
void setMasterClockSpeed(uint8_t speed)
Definition: MPU6050.h:1317
#define MPU6050_RA_I2C_SLV4_REG
Definition: MPU6050.h:89
#define MPU6050_PWR1_DEVICE_RESET_BIT
Definition: MPU6050.h:375
void setFSyncInterruptEnabled(bool enabled)
Definition: MPU6050.h:1861
void setSlaveWriteMode(SlaveId slaveId, bool mode)
void setStandbyZGyroEnabled(bool enabled)
Definition: MPU6050.h:3079
bool getXPosMotionDetected()
Definition: MPU6050.h:2433
uint8_t getSlave4Address()
Definition: MPU6050.h:1501
#define MPU6050_INTERRUPT_MOT_BIT
Definition: MPU6050.h:318
#define MPU6050_MOTION_MOT_ZNEG_BIT
Definition: MPU6050.h:339
#define MPU6050_MOTION_MOT_XPOS_BIT
Definition: MPU6050.h:336
#define MPU6050_ACONFIG_ACCEL_HPF_LENGTH
Definition: MPU6050.h:221
void setAuxVDDIOLevel(uint8_t level)
Definition: MPU6050.h:486
void setFreefallDetectionDuration(uint8_t duration)
Definition: MPU6050.h:880
void setDMPEnabled(bool enabled)
Definition: MPU6050.h:3362
#define MPU6050_DEFAULT_ADDRESS
Definition: MPU6050.h:40
void setZFineGain(int8_t gain)
Definition: MPU6050.h:3244
void setDHPFMode(uint8_t bandwidth)
Definition: MPU6050.h:815
#define MPU6050_PWR2_LP_WAKE_CTRL_LENGTH
Definition: MPU6050.h:391
MPU6050()
Definition: MPU6050.h:436
uint8_t getSlaveDataLength(SlaveId slaveId)
void setSlave4WriteMode(bool mode)
Definition: MPU6050.h:1605
#define MPU6050_RA_XA_OFFS_H
Definition: MPU6050.h:48
void resetSensors()
Definition: MPU6050.h:2785
#define MPU6050_ACCEL_FIFO_EN_BIT
Definition: MPU6050.h:239
bool getIntFIFOBufferOverflowStatus()
Definition: MPU6050.h:2125
void setSlaveEnabled(SlaveId slaveId, bool enabled)
#define MPU6050_MST_I2C_SLV4_NACK_BIT
Definition: MPU6050.h:290
void setMotionDetectionDuration(uint8_t duration)
Definition: MPU6050.h:947
uint8_t getExternalFrameSync()
Definition: MPU6050.h:557
bool getSlave0FIFOEnabled()
Definition: MPU6050.h:1170
uint8_t getSlaveRegister(SlaveId slaveId)
#define MPU6050_RA_I2C_SLV4_DI
Definition: MPU6050.h:92
#define MPU6050_INTCFG_CLKOUT_EN_BIT
Definition: MPU6050.h:303
#define MPU6050_INTERRUPT_PLL_RDY_INT_BIT
Definition: MPU6050.h:322
int16_t getAngularRateZ()
Definition: MPU6050.h:2300
#define MPU6050_SLV2_FIFO_EN_BIT
Definition: MPU6050.h:240
#define MPU6050_I2C_MST_CLK_LENGTH
Definition: MPU6050.h:249
bool getDMPInt1Status()
Definition: MPU6050.h:3336
bool getSlave2Nack()
Definition: MPU6050.h:1716
bool getSlave3FIFOEnabled()
Definition: MPU6050.h:1244
#define MPU6050_PWR1_TEMP_DIS_BIT
Definition: MPU6050.h:378
#define MPU6050_PWR2_STBY_ZG_BIT
Definition: MPU6050.h:397
#define MPU6050_RA_I2C_SLV4_ADDR
Definition: MPU6050.h:88
#define MPU6050_ACONFIG_AFS_SEL_LENGTH
Definition: MPU6050.h:219
#define MPU6050_INTCFG_LATCH_INT_EN_BIT
Definition: MPU6050.h:298
Motion3 accel
Definition: MPU6050.h:429
void setDMPConfig2(uint8_t config)
Definition: MPU6050.h:3408
bool getIntFreefallEnabled()
Definition: MPU6050.h:1953
#define MPU6050_PWR1_CYCLE_BIT
Definition: MPU6050.h:377
void setYGyroFIFOEnabled(bool enabled)
Definition: MPU6050.h:1083
#define MPU6050_DETECT_ACCEL_ON_DELAY_LENGTH
Definition: MPU6050.h:355
T concat(uint8_t bits_15_8, uint8_t bits_7_0)
Definition: MPU6050.h:3442
int8_t getZGyroOffsetTC()
Definition: MPU6050.h:3207
bool getI2CMasterModeEnabled()
Definition: MPU6050.h:2731
#define MPU6050_TEMP_FIFO_EN_BIT
Definition: MPU6050.h:235
bool getStandbyXAccelEnabled()
Definition: MPU6050.h:2969
#define MPU6050_INTERRUPT_FF_BIT
Definition: MPU6050.h:317
void setAccelFIFOEnabled(bool enabled)
Definition: MPU6050.h:1122
uint8_t getMotionDetectionCounterDecrement()
Definition: MPU6050.h:2680
void setStandbyZAccelEnabled(bool enabled)
Definition: MPU6050.h:3019
#define MPU6050_TC_PWR_MODE_BIT
Definition: MPU6050.h:177
bool getIntFreefallStatus()
Definition: MPU6050.h:2090
uint8_t getOTPBankValid()
Definition: MPU6050.h:3177