OpenEdv-开源电子网

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

MPU6050运动检测配置

[复制链接]

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-10-8
在线时间
6 小时
发表于 2019-1-18 11:51:36 | 显示全部楼层 |阅读模式
用MPU6050做运动检测。检测到运动了就产生中断唤醒MPU。。。测试程序利用原子的MPU6050的例程改的。
1{55NMY)TRZW0WVEY36]6Z8.png
相比于原来的例程,多了初始化中断。。。看原理图可以知道6050的INT中断脚连接到了PC0,在KEY初始化函数配置下PC0脚,把该脚连接到中断0.
void EXTI0_IRQHandler(void)
{
        //u8 r;
        //r=MPU_Read_Byte(MPU_INT_STA_REG);
        //printf("0X%02x\n",r);

         LED0=0;
         EXTI_ClearITPendingBit(EXTI_Line0);
}       

中断里让灯亮,主函数灯灭。这样就知道板子动没动了。
以下是我自己加的配置。
void MPU6050_Config()
{
    delay_ms(200);
    MPU_Write_Byte(MPU_MOTION_DET_REG, 0X03);//运动检测阀值, 相当于灵敏度吧
    MPU_Write_Byte(0x20,0x01);//配置检测时间
    MPU_Write_Byte(MPU_INT_EN_REG,0x40);//只使能INT中断,屏蔽其他中断
}


这样就可以做运动检测开发一些防盗的项目。。。
但现在有个问题就是, EXTI0_IRQHandler中断服务函数里头, 产生了中断就读 6050 中断标志寄存器, ,手册说读了该寄存器就会清零。。但都了之后就一直以10ms的周期产生中断,周期与mpu_dmp_init()里的res=dmp_set_fifo_rate(DEFAULT_MPU_HZ);          。。DEFAULT_MPU_HZ这个参数有关。。。。
所以我不去读中断状态寄存器,  就判断引脚中断有动就好了。。。 现在在试把DEFAULT_MPU_HZ改成0.

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

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-1-12
在线时间
4 小时
发表于 2019-1-18 14:59:33 | 显示全部楼层
楼主和我有一样的想法,不过我是在STC上实现的,简单的用数值变化还检测运动条件
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 09:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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