zouyf12 发表于 2013-5-3 19:30:07

对MPU6050的采集周期及中断的想法

      看了蛮多前辈的程序,都会用单片机的定时器去计时,已获得采集陀螺仪的采样时间,但是我发现MPU6050DATASHEET上面说,MPU6050配置低通滤波器以后采样时间是1KHZ,   而对中断引脚的描述是通过配置以后每当采集完成更新寄存器后就会在中断脚上输出一个低电平。那我想是不是可以读MPU6050中断脚,发现低电平以后读取各种参数,然后做姿态解算,而采集的间隔就是MPU6050的采集间隔1ms,这样就不需要单片机再用定时器或者其他的去获得采集时间了

nnnkey 发表于 2013-5-3 22:08:34

可以,只是可能时间上不会太准确。

zouyf12 发表于 2013-5-3 22:28:02

nnnkey 发表于 2013-5-3 22:08 static/image/common/back.gif
可以,只是可能时间上不会太准确。

不过刚才我实际测了一下,不知为何采集中断出现只有125HZ,只有标称的8分之一。

nnnkey 发表于 2013-5-4 00:48:38

是不是有一个寄存器你赋的是7

zouyf12 发表于 2013-5-4 09:00:26

nnnkey 发表于 2013-5-4 00:48 static/image/common/back.gif
是不是有一个寄存器你赋的是7

确实是,太谢谢你了!!!{:handshake:}   自己移植程序的时候没注意改这里晕死,{:shy:}

wscjun 发表于 2013-5-4 22:04:07

你干嘛要去读取中断的引脚状态,中断来了会通知你的啊,在中断里再进行数据处理

zouyf12 发表于 2013-5-4 23:19:24

wscjun 发表于 2013-5-4 22:04 static/image/common/back.gif
你干嘛要去读取中断的引脚状态,中断来了会通知你的啊,在中断里再进行数据处理 ...

额。。 读只是一个大概的意思,单片机这边用中断处理还是查询都可根据实际来,   由于我的程序流程里,单片机除了采集处理以外就不干其他事情了, 直接查询就可以, 所以表达上就直接用“读|”这个词了

lukefan2008 发表于 2013-11-2 22:01:48

zouyf12 发表于 2013-5-4 09:00 static/image/common/back.gif
确实是,太谢谢你了!!!   自己移植程序的时候没注意改这里晕死,...

仁兄能给我说一下么,是指哪个寄存器的值写7了?我现在也在做这个MPU6050的数据,另外我看数据手册上,好像加计和陀螺的低通滤波频率只能是固定的,可不可以加计的用5Hz,而陀螺的是42Hz呢?

wingerchen 发表于 2013-11-8 19:30:24

lukefan2008 发表于 2013-11-2 22:01 static/image/common/back.gif
仁兄能给我说一下么,是指哪个寄存器的值写7了?我现在也在做这个MPU6050的数据,另外我看数据手册上,好 ...

在圆点博士那里找到一段代码,看看对你是否有用:
    const uint8_t param[] =
    {
      // {寄存器地址,寄存器值},
      {0x6B,1   }, // 退出睡眠模式,设取样时钟为陀螺X轴。
      {0x19,4   }, // 取样时钟4分频,1k/4,取样率为25Hz。
      {0x1A,2   }, // 低通滤波,截止频率100Hz左右。
      {0x1B,3<<3}, // 陀螺量程,2000dps。
      {0x1C,2<<3}, // 加速度计量程,8g。
      {0x37,0x32}, // 中断信号为高电平,推挽输出,直到有读取操作才消失,直通辅助I2C。
      {0x38,1   }, // 使用“数据准备好”中断。
      {0x6A,0x00}, // 不使用辅助I2C。
    };

木君之上 发表于 2013-11-11 13:00:08

这个我最近也在想,再能读取数据之后就只怎么安排操作时序的问题了,真头疼

FASHAOYIHAOAMO 发表于 2014-4-26 16:23:20

敢问楼主,中断的值域是怎么 计算的啊????

FASHAOYIHAOAMO 发表于 2014-4-26 16:27:46

这个寄存器的值是怎么计算呢?如果我都写入 0x01   那么阈值是多少呢??

Daniel_Lau 发表于 2014-4-27 23:40:54

计算运行时间主要是用来在AHRS算法中进行数据修正的

zouyf12 发表于 2014-4-28 18:37:04

FASHAOYIHAOAMO 发表于 2014-4-26 16:27
这个寄存器的值是怎么计算呢?如果我都写入 0x01   那么阈值是多少呢?? ...

好像我没有用到这个寄存器

weiqifa 发表于 2016-5-3 19:01:18

我也遇到个问题,就是我想动一下就让6050产生中断,但是这个功能还是没有实现。不知道是怎么回事。

gslzslhj 发表于 2016-7-15 10:37:55

weiqifa 发表于 2016-5-3 19:01
我也遇到个问题,就是我想动一下就让6050产生中断,但是这个功能还是没有实现。不知道是怎么回事。 ...

我用MPU6500可以运一下产生中断,MPU6500        MPU_Write_Byte(MPU_MDETECT_CTRL_REG,0x80);//使能运动检测逻辑电路,但是6050好像没有这个控制位#define MPU_MDETECT_CTRL_REG        0X69        // 我加上
页: [1]
查看完整版本: 对MPU6050的采集周期及中断的想法