模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762
49---6轴数据更新周期测量实验:
硬件需求:PC机,PCM模块一个,microUSB线,6轴传感器MPU6050,导线若干;
软件需求:PCM编译软件,电脑端串口调试助手;
供电方式:USB线接PC机供电;
连接电路:如图70(6轴传感器实验)
6轴数据更新周期测量实验是为了验证6轴传感器的数据更新周期是不是4ms,即250
次/秒。实验在6轴数据中断程序中添加一个加1指令,然后使用定时器0,定时时间为
1S,即每秒输出一次累加计数,然后清零寄存器。
实验程序如下:
1 intpro imu6int
2 fusion f0 f10 //姿态融合,输入ax=f0,ay=f1,az=f2,gx=f3,gy=f4,gz=f5,输出
//ROLL,PITCH,YAW角度分别到f10,f11,f12
3 inc d0 //计数加1
4 endint
5 intpro timeint //定时器0中断程序
6 prints "times/s:%d\r\n" d0 //输出每秒次数
7 mov 0 d0 //清零计数
8 endint
9 main
10 mov 0 d0
11 intinit s2 timeint //初始化定时中断
12 time 0 0 s2 //初始化定时器0,周期定时,定时到置位S2
13 timestart 0 0 1000000 //启动定时器0,周期定时,定时时间为1000000us,
//即1S
14 iic 0 400000 //初始化IIC0接口,速度为400000HZ
15 intinit s0 imu6int //开启中断
16 imuinit 0 f0 s0 //参数1为0,启动6轴测量,ax,ay,az,gx,gy,gz分别保存到
//f0,f1,f2,f3,f4,f5;更新周期0.004S,输出后中断
17 while 1 //无限循环
18 endwhile
19 endmain
程序中第1-4行,为6轴数据输出中断程序,程序中使用inc指令对中断次数进行累
加;
第5-8行,为定时器0定时中断程序,中断周期为1S,程序中通过串口输出6轴数据
中断次数,输出后清零计数;
第9-19行为主程序,主程序中使用定时器0作为周期定时,定时时间1S,并开启中
断,定时时间到后会执行中断程序,在中断程序中输出每秒传感器的中断次数;
用PCM编译软件编译以上程序,并下载到模块,电脑端使用串口调试助手接收数
据,下图75为6轴数据更新周期测量输出的值。显示的次数为250次/秒,表明更新周期是
4ms。
图75 6轴数据更新周期测量实验