I am using MMA8452Q Accelerometer with imx6ULL for my project and programming it using linux platform.
I am trying to get the motion detection of accelerometer, for achieving this I have done below register settings in user space:
Step 1: Put the device into Standby Mode: Register 0x2A CTRL_REG1
IIC_RegWrite(0x2A, 0x18); //Set the device in 100 Hz ODR, Standby
Step 2: Set Configuration Register for Motion Detection by setting the “OR” condition OAE = 1, enabling
X, Y, and the latch
Step 3: Threshold Setting Value for the Motion detection of > 3g
Note: The step count is 0.063g/ count
• 3g/0.063g = 47.6; //Round up to 48
Step 4: Set the debounce counter to eliminate false readings for 100 Hz sample rate with a requirement
of 100 ms timer.
Note: 100 ms/10 ms (steps) = 10 counts
Step 7: Put the device in Active Mode
and then I am continuously reading the Register 0x16 (FF_MT_SRC) and ( INT_SOURCE) for detecting the motion. I am trying to check 7th bit of this register which is EA bit. This bit should set when there is motion event occurs.
But my test results are as below:
Getting Read value from register as 0x1 - when the accelerometer is stable and not moving.
and Read value from register as 0x0 - when any little movement in accelerometer is there.
But this is not the expected output as my EA bit is never getting set and the value I am reading from FF_MT_SRC register is 0x1 or 0x0, no value change except these two.
And read value of INT_SOURCE register is 0x0 always.
Please let me know, what changes needs to be done to get correct value
Thanks in advance.