OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4625|回复: 8

探索者F4中的MPU6050六轴传感器实验疑问

[复制链接]

20

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2011-7-5
在线时间
43 小时
发表于 2016-9-8 09:07:33 | 显示全部楼层 |阅读模式
1金钱
在MPU6050六轴传感器实验中,原代码一直在主循环中读取相关数据比较费时间,所以想定时读取,比如0.5秒钟读一次,主循环中加入延时500ms,结果就没法读出数据了,请问可能是什么原因?
                delay_ms(500);
                if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
                {

                    ...省略原代码
               }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2016-3-16
在线时间
166 小时
发表于 2016-9-8 09:14:44 | 显示全部楼层
我之前也遇到过,500ms读一次的话可能dmp的FIFO就溢出了,所以每次去读的话就返回非0值,你可以调试然后进入函数看看是不是跟我遇到的情况一样~~
然后还有定时跟延时还是不一样的
回复

使用道具 举报

14

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2016-5-7
在线时间
34 小时
发表于 2016-9-8 09:19:25 | 显示全部楼层
0.5s不就是500ms?   都延时了  程序怎么执行   再说  你0.5s 读取一次数据时间太长了
回复

使用道具 举报

5

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2016-5-7
在线时间
63 小时
发表于 2016-9-8 09:34:27 | 显示全部楼层
不会每次都读不出数据吧,定时读取的表示没有问题啊,检查延时函数有没有问题,或者延时函数有没有初始化。
回复

使用道具 举报

20

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2011-7-5
在线时间
43 小时
 楼主| 发表于 2016-9-8 13:15:25 | 显示全部楼层
本帖最后由 hehelloook 于 2016-9-8 13:18 编辑

所有的代码都是原子的,就加了一个500ms的延时,因为实际使用中MCU还有别的工作需要时间,所以想定时一段时间再去读取。不是没法读取,而是定时读取时每次就返回非0值,如何解决?
回复

使用道具 举报

20

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2011-7-5
在线时间
43 小时
 楼主| 发表于 2016-9-8 13:18:23 | 显示全部楼层
本帖最后由 hehelloook 于 2016-9-8 13:28 编辑
旦丁中号 发表于 2016-9-8 09:14
我之前也遇到过,500ms读一次的话可能dmp的FIFO就溢出了,所以每次去读的话就返回非0值,你可以调试然后进 ...

所有的代码都是原子的,就加了一个500ms的延时,因为实际使用中MCU还有别的工作需要时间,所以想定时一段时间再去读取。
不是没法读取,而是定时读取时每次就返回非0值,如何解决?

确实是dmp的FIFO就溢出了:
  if (fifo_count > (st.hw->max_fifo >> 1)) {
    /* FIFO is 50% full, better check overflow bit. */
    if (i2c_read(st.hw->addr, st.reg->int_status, 1, tmp))
      return -1;
    if (tmp[0] & BIT_FIFO_OVERFLOW) {
      mpu_reset_fifo();
      return -2;
    }
  }

回复

使用道具 举报

6

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2016-3-16
在线时间
166 小时
发表于 2016-9-8 13:58:29 | 显示全部楼层
hehelloook 发表于 2016-9-8 13:18
所有的代码都是原子的,就加了一个500ms的延时,因为实际使用中MCU还有别的工作需要时间,所以想定时一段 ...

所以你的读取速度要跟dmp的尽量保持一致
回复

使用道具 举报

20

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2011-7-5
在线时间
43 小时
 楼主| 发表于 2016-9-8 14:02:46 | 显示全部楼层
旦丁中号 发表于 2016-9-8 13:58
所以你的读取速度要跟dmp的尽量保持一致

应用中MCU还有别的工作,如果读取速度跟dmp的尽量保持一致的话会影响别的工作,特别是CAN通信。
回复

使用道具 举报

6

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2016-3-16
在线时间
166 小时
发表于 2016-9-8 14:49:14 | 显示全部楼层
hehelloook 发表于 2016-9-8 14:02
应用中MCU还有别的工作,如果读取速度跟dmp的尽量保持一致的话会影响别的工作,特别是CAN通信。

你可以降低dmp的速度~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 12:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表