#define MFX_STR_LENG 35
#define ENABLE_6X 1
float LastTime;
[…]
/*** Initialization ***/
char lib_version[MFX_STR_LENG];
MFX_knobs_t iKnobs;
/* Sensor Fusion API initialization function */
MotionFX_initialize();
/* Optional: Get version */
MotionFX_GetLibVersion(lib_version);
MotionFX_getKnobs(&iKnobs);
/* Modify knobs settings & set the knobs */
MotionFX_setKnobs(&iKnobs);
/* Enable 9-axis sensor fusion */
If (ENABLE_6X == 1)
{
MotionFX_enable_6X(MFX_ENGINE_ENABLE);
}
Else
{
MotionFX_enable_9X(MFX_ENGINE_ENABLE);
}
[…]
/*** Using Sensor Fusion algorithm ***/
Timer_OR_DataRate_Interrupt_Handler()
{
MFX_input_t data_in;
MFX_output_t data_out;
float dT;
float *q; /* Quaternion pointer to either to Game Rotation or Rotation vector (4 length) */
/* Get acceleration X/Y/Z in g */
MEMS_Read_AccValue(data_in.acc[0], data_in.acc[1], data_in.acc[2]);
/* Get angular rate X/Y/Z in dps */
MEMS_Read_GyroValue(data_in.gyro[0], data_in.gyro[1], data_in.gyro[2]);
dT = CurrentTime - LastTime; /* In seconds */
LastTime = CurrentTime;
/* Get magnetic field X/Y/Z in uT/50 */
MEMS_Read_MagValue(data_in.mag[0], data_in.mag[1], &data_in.mag[2]);
UM2220
MotionFX library
UM2220 - Rev 7
page 13/24