你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
不确定性理论 发表于 2015-1-22 21:05 不如干脆不用定时捕捉了。下面的建议你可以看看。 1,配置定时器定时溢出,时间你定。 2,在定时器溢出处理 ...
holts1 发表于 2015-1-22 21:56 这样计算出来有偏差
妮妮的萨芬的 发表于 2015-1-22 21:49 是高电平脉冲,那我细化一下,你看看 1,配置定时器定时溢出,暂设为50000 2,在定时器溢出处理中,对某 ...
不确定性理论 发表于 2015-1-23 20:03 定时器5000是什么意思? 我一般是设置一个定时器,让他1ms溢出一次,那么全局变量就是每1ms加1. 那么一个 ...
1,配置定时器定时溢出,时间你定。
2,在定时器溢出处理中,对某一个全局变量加1.
3,测量脉冲的引脚设置上升沿或者下降沿触发中断,或者干脆测量电平。
4,当高电平或者上升沿来时,对2的全局变量清零。
5,当第一个低电平或者下降沿来时,读取2的全局变量值。
6,那么全局变量值*定时溢出的时间=脉冲的高电平宽度。
是高电平脉冲,那我细化一下,你看看
1,配置定时器定时溢出,暂设为50000
2,在定时器溢出处理中,对某一个全局变量(M)加1.
3,设置上升沿中断,上升沿中断处理:清零M、记下定时器的值(C1)、变更引脚为下降沿中断
4,下降沿中断处理:记下定时器的值(C2)、如果M大于零,脉冲宽度=50000-C1+C2+50000*M、变更引脚为上升沿中断
这样计算出来有偏差
有中断方式好些
定时器5000是什么意思?
我一般是设置一个定时器,让他1ms溢出一次,那么全局变量就是每1ms加1.
那么一个高脉冲时间就是全局变量值*1ms就行了。
我没有在程序运行中改变中断触发方式,你的变成下降沿触发我不知道行不行。
此外关于误差,我认为误差一直是存在的,指令还需要时间呢,关键是误差能不能忽略。这看你实际了。
目的是要更精确,如果有一个脉冲小于一个溢出周期