sparkfun / SparkFun_ICM-20948_ArduinoLibrary

Arduino support for ICM_20948 w/ portable C backbone
Other
160 stars 69 forks source link

Accuracy in data.Quat9.Data.Accuracy always 0 #112

Open tomwcourtney opened 1 year ago

tomwcourtney commented 1 year ago

I've ported the ICM to work with an STM32 however I have obviously made a mistake as the accuracy of the 9DoF DMP is always 0 in the Quat9 portion of the icm_20948_DMP_data_t packet whenever I read from 'Example6_DMP_Quat9_Orientation'.

From the example, the critical configurations are:

success &= (myICM.enableDMPSensor(INV_ICM20948_SENSOR_ORIENTATION) == ICM_20948_Stat_Ok);
success &= (myICM.setDMPODRrate(DMP_ODR_Reg_Quat9, 0) == ICM_20948_Stat_Ok); 

And I acquire data from the IMU

icm_20948_DMP_data_t data; 
myICM.readDMPdataFromFIFO(&data);
SERIAL_PORT.println(data.Quat9.Data.Accuracy);

The only time accuracy is non-zero is if the header returned from the IMU does not match the Quat9 bit mask.

if ((data.header & DMP_header_bitmap_Quat9) > 0)

I was hoping someone could give a clue as to where to look in the IMUs setup. The IMU readings are otherwise good it's just that accuracy being 0 that's missing.