Jump to content
I2Cdevlib Forums

A few MPU6050 questions and issues


Recommended Posts

Hi lads,

I managed to do the mpu6050 DMP initialization via a PIC24F device using my own

straightforward IIC routines.

The excercise was based on Jeff Rowberg's MPU6050_6Axis_MotionApps20.h document

and the original I2C analysis spreadsheet produced I believe by Noah Zerkin,

which I had downloaded back in 2011 i think it was. Many thanks to JR and NZ for their work.

I read the 16 bit quaternion data from the FIFO and divide by 16384, to obtain the normalized

quaternion (float data type) from which I extract the YPR angles using  arctan2() functions for yaw and roll,

and an arcsin() function to obtain pitch.

 The three calculations  (2 x arctan2 and 1 x arcsin funcs) involve around  12836 instruction cycles which with

my PIC24 running at 16 MIPS take  12836 * 1/16 us = 802.25us ~ .8 ms   


I have a few questions:


1) Does anybody know if the DMP can output the YPR angles directly as it does with Quat data?

2) What is the significance of the three OTP (one time programmable?) flags?

 

I am referring to the OTP_BNK_VLD bit (bit 0) in registers XG_OFFS_TC (0x00),YG_OFFS_TC (0x01), ZG_OFFS_TC (0x02).

I downloaded the MPU HW Offset Registers 1.1.pdf AppNote which makes it clear how to configure your own

Gyro and Accel offset values but am not sure how it all ties with the OTP flags.

I left the offset registers as is and got quite good YPR angles.

3) Why 32 bit Gyro and Accel data in FIFO when the raw data is available as 16 bit values in the sensor registers?


A couple of observations:


a) Note that  line 298: "0x00,   0x00,   0x00,   0x01, // SET INT_ENABLE at i=22, SPECIAL INSTRUCTION"

in MPU6050_6Axis_MotionApps20.h contains 0x00 in the payload field when it should be 0x01.

Not a big deal but can mess up your indexing if you use a single function to do the writes.


B) Memory update 6 of 7 is actually a read and not a write. This is reflected in MPU6050_6Axis_MotionApps20.h

and in the IIC analyzer file. Nevertheless in my procedure I just wrote the corresponding values as in the rest of the updates.

It seems to work OK.

Sorry if I posed questions that have been answered elsewhere. I have made an effort to read this and the Invensense forum.

If anybody is interested I can make available my code and procedure in the "Other Platforms" section of the forum.

Cheers

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...