MPU6050运动检测配置

2019-07-20 04:08发布

用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 ",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.

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。