Hi Mark,
Sorry for delayed update.
Your information is helpful. thanks.
I tried to measure the current via Hall sensor, but I failed. Probably something wrong with my code. Anyway I give up because this sensor has a low accuracy. So i removed the sensor on the VDD line.
However, I found there is no processing overrun any more. I ran my code for about 5 minutes, and I did a statistics as below, i.e., when a bit in SYS_E_FLAG is set (bit 8 & 9 is careless), the corresponding counter increase by 1.
for (i=0; i<16; i++) | ||||||
{ | ||||||
if (arrOriginalSensorData[0]&(1 << i)) | ||||||
ui32SysEFlagCntr[i]++; | ||||||
} |
the result is as below,
ui32SysEFlagCntr[4] = 193, ui32SysEFlagCntr[10] = 6296, ui32SysEFlagCntr[13] = 4593, other counters are 0.
If the device is still, no counter in increasing. Even I move the device gently, ui32SysEFlagCntr[10] and ui32SysEFlagCntr[13] would increase.
My questions,
1. I don't understand acc_distb_thr, what is the foluma to calculate the disturbance? And when SYS_E_FLAG[10] is set, does this mean X_ACCL_OUT/X_ACCL_LOW (or y axis, z axis) disturbance exceed acc_distb_thr?
2. What caused EKF divergence even I move the device gently?
3. In addition, when SYS_E_FLAG[13] is set, I did nothing(means no manual EKF reset) but keep reading Euler, Gyro and SYS_E_FLAG (about 2KHz). But it seems EKF is running OK because I see the euler output is OK. Is this normal? Why?
PS:
1. All settings is default (factory).