大侠救命!!!MPU6050与ATmega16通信读数不刷新
如图,xyz pyr读数一直固定在这个读数,每次断电再弄也是这样,我怀疑是不是寄存器中一直是这个读数,6050根本没有刷新他的寄存器,不知道为什么。忙活半天做了个命令行上位机,结果读数不变,真是不容易,请大侠帮忙看看。我的初始化这样
IO_init();
usart_init();
i2c_init();
_delay_ms(1000);//Wait for power up and monitor connection
i2c_write(MPU6050_RA_PWR_MGMT_1 , 0x00);//取消休眠
i2c_write(MPU6050_RA_SMPLRT_DIV , 0x07);//陀螺仪采样率,典型值:0x07(125Hz)
i2c_write(MPU6050_RA_CONFIG , 0x06);//低通滤波频率,典型值:0x06(5Hz)
i2c_write(MPU6050_RA_ACCEL_CONFIG, 0x01);//加速计自检、测量范围及高通滤波频
i2c_write(MPU6050_RA_GYRO_CONFIG , 0x18);//陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s) 你的I2C_Add对不对哦......... 1,确定传感器是否工作 正常;可以测测电流之类的;
2,确定I2C是不是波形正常;传感器有没有反馈波形,如果OK,读读传感器的常量寄存位。
paul_guo 发表于 2013-6-21 10:14 static/image/common/back.gif
1,确定传感器是否工作 正常;可以测测电流之类的;
2,确定I2C是不是波形正常;传感器有没有反馈波形,如果 ...
反馈波形测哪里啊,sda scl?电流的话我不知道正常是多少啊,既然能有读数,说明结果寄存器是有东西的 是的,测通信引脚的波形。。
电流可以查手册正常电流是多少的 问题搞定,害的我又买了一块6050
排除过程:
既然读数都读到了,而且每次都是固定的值,那么有两种情况
1.mpu6050有问题,只读到寄存器里面的值,而不会更新(不至于每次都一样啊,用串口工具读出来的数据都是固定的说明可能是I2C通信的问题)
2.I2C通信的问题,可能开始的时候读了一次默认,后续的就读不到了,由于我的上位机也写的有问题,综合起来导致数据不刷新
处理方案:
修改上位机,将显示更新函数附近的语句做了一定调整
修改单片机程序,将I2C速率等初始化语句进行了修改
搞定 楼主啊,可否把你的源程序,上位机共享一下呢{:loveliness:} 救命啊,现在已经搞定读取原始数据了,但是就是搞不出DMP,请有经验的大侠救救 可以分享一下MPU6050和ATmega16通信的源码吗?谢过前辈。
页:
[1]