本帖最后由 丁香花 于 2012-5-11 18:10 编辑
通过I/O模块、PWM模块大家可以接收赛道信息、控制舵机打角、电机速度了。做完这些,大家可以研究一下定时器和周期性中断这块了。这块既能将前面说的模块提升一下(因为这里涉及定时中断,大家可以考虑一下多长时间做一次控制?),也可以将此应用到测速中。
测速实际上就是对单位时间内的信号源(由光电编码器或光电码盘返回)产生的脉冲进行计数(上升沿/下降沿),这里先上传输入捕捉和输出比较两个例程。
输入捕捉的原理:
这里用到十字交叉法(输入信号频率/系统时钟频率=1个脉冲/系统时钟脉冲个数)。系统时钟计数器对系统时钟信号不断记录,测量输入信号两个上升沿出现之间的时间内系统时钟计数器计数差值被总线时钟除,所得到的商即为输入信号频率。
输出比较原理:
测量信号频率需要1s的采样(对信号的上升沿或下降沿计数即可)。通过输出比较产生1ms定时中断(总线8MHZ,1ms中断即8000个上升沿/下降沿,TCNT不断对时钟信号计数,当达到TCn寄存器值时进入中断,所以TCn的值要不断刷新。)?OC0Cnt计数器记录进入中断次数,1000次即为1s,此时再将临时存放的频率赋给采样频率变量。采样频率获得。
为了方便测试,两个例程中都包含信号源(PWM4端口产生),大家将PWM4端口的输出接入相应的定时器模块端口即可进行采样了(也就是TIM模块采集当前PWM输出信号),为了更方便说明,我把PWM模块例程也传上来,一个是不级联通道的,一个是级联通道的。供大家参考。
|