请教一个毫秒级计时的方式问题
想做一个计时器,用于机器人巡线竞赛。以前看过用于轮滑50米速滑的硬件,不过那个因为距离比较远,用了无线,我只要做个有线的就行了。
硬件方案是这样的:
触发就用激光发射,接收,镜子(这个是直道,起点和终点大概5米的样子。如果是环道,就直接发射和接收就行了)
显示是用4位数码管,显示精确到0.01秒就可以了。
用四片595,可以节省一点端口。如果考虑显示速度的话,可以整数用两片,小数用两片,毕竟整数更新得不快。
代码方案的话,就不是太清楚的了。
1、delay肯定不准吧。delayMicroseconds虽然是微秒级的,应该也是不准吧。
我觉得写595的时间要去掉。
如果是delay(1),写595刷新显示……应该是显示的时间会比实际的时间要短吧。
2、Millis(),和if的组合
3、用PulseIn()
4、用外中断
不知道哪个更好一些。
还有就是刷新数码管的显示,是直接用millis(),还是用if和millis组合好呢,还是用计时器中断呢? 用中断会精确一些,中断结合mills应该是可以的,另外,4位数码管,两片595就可以啊。delay都是软件延时,计时最好就是定时器,可以单独开个定时器也可以。 164335413 发表于 2016-10-8 09:20
用中断会精确一些,中断结合mills应该是可以的,另外,4位数码管,两片595就可以啊。delay都是软件延时,计 ...
记得谁说过,中断的时候计时器是停止工作的。也就是说不管delay,millis,如果期间有过中断,那结果都是不准的。
那么问题来了,如果我又要使用中断,又要精确计时,该怎么办呢? pumpitup 发表于 2016-10-8 18:53
记得谁说过,中断的时候计时器是停止工作的。也就是说不管delay,millis,如果期间有过中断,那结果都是不 ...
第一 毫秒级的要求,中断中只要没有delay或者较长的程序,对你没有影响,中断的执行都在毫秒级以下。
就算是340线的码盘在马达上旋转引起的中断,也不会影响太多。何况你的中断一点都不频繁。 164335413 发表于 2016-10-9 17:40
第一 毫秒级的要求,中断中只要没有delay或者较长的程序,对你没有影响,中断的执行都在毫秒级以下。
就 ...
http://v.youku.com/v_show/id_XMTQwODcxMzQyOA==.html
好的,谢谢 。
其实我要做的是这个东东! pumpitup 发表于 2016-10-11 23:14
http://v.youku.com/v_show/id_XMTQwODcxMzQyOA==.html
好的,谢谢 。
小车做的不错,小巧。如果单纯的计时,完全可以用定时器,精度10ms的 mills也可以。一般外部中断对计时的影响不会超过ms。
页:
[1]