|
楼主 |
发表于 2013-8-9 14:47:02
|
显示全部楼层
本帖最后由 zksniper 于 2013-8-9 14:48 编辑
还有,这个mpu9150的DMP的一个蛋疼的bug:
代码如下:
dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);
if(sensors & INV_XYZ_GYRO)
{
init_gx=(float)(gyro[0] / (Gyro_500_Scale_Factor * 57.3)); //单位转化成:弧度/s
init_gy=(float)(gyro[1] / (Gyro_500_Scale_Factor * 57.3));
init_gz=(float)(gyro[2] / (Gyro_500_Scale_Factor * 57.3));
}
if(sensors & INV_XYZ_ACCEL)
{
init_ax=(float)accel[0];
init_ay=(float)accel[1];
init_az=(float)accel[2];
}
各位有没有发现,再第一次执行这个代码时,sensors & INV_XYZ_GYRO和sensors & INV_XYZ_ACCEL是等于0的,以至于读取不出陀螺仪和加速度计的数值,
还有更扯淡的第二部分,这个语句是放在while(1)循环里的,经过楼主实测,每过一段不定期的时间,sensors & INV_XYZ_GYRO和sensors & INV_XYZ_ACCEL都会咪涨的等于0一次。。。。。。。。。
不过这个问题的第二部分楼主已经解决了,我也不知道怎么解决的,只不过是把读取磁力计的代码放到了if(sensors & INV_XYZ_ACCEL)下而已。。 |
|