新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2017-7-16
- 在线时间
- 0 小时
|
1金钱
刚开始用mpu6050,用的是mini板和原子做的mpu6050,代码也是给的例程。今天测试的时候发现初始化有时候一直失败,动一动又好了,查了很多资料,原子对这种问题经常说初始化的时候摆平,我试了一下,确实摆平之后成功率很高,但我不明白为什么。。。我竖直摆的时候mpu_run_self_test这个函数返回的值是1 所以下面这个函数
u8 run_self_test(void)
{
int result;
//char test_packet[4] = {0};
long gyro[3], accel[3];
result = mpu_run_self_test(gyro, accel);
if (result == 0x3)
{
/* Test passed. We can trust the gyro data here, so let's push it down
* to the DMP.
*/
float sens;
unsigned short accel_sens;
mpu_get_gyro_sens(&sens);
gyro[0] = (long)(gyro[0] * sens);
gyro[1] = (long)(gyro[1] * sens);
gyro[2] = (long)(gyro[2] * sens);
dmp_set_gyro_bias(gyro);
mpu_get_accel_sens(&accel_sens);
//accel_sens=0;//---------------------------------------------------------------关闭自校准
accel[0] *= accel_sens;
accel[1] *= accel_sens;
accel[2] *= accel_sens;
dmp_set_accel_bias(accel);
return 0;
}else return 1;
}
就一直不能进入if (result == 0x3) 返回值也就一直不对了 经测试 竖着放时 mpu_run_self_test 返回1 也就是这个函数的if (!accel_result) result |= 0x02; 未被执行 理由不明 求教啊 各位
|
|