请教一问题:如何在程序中主动判断某一中断是否消失?

[复制链接]
2547|8
 楼主| WalkerOne 发表于 2008-9-18 19:53 | 显示全部楼层 |阅读模式
最近在做一款仪表,用霍尔信号产生中断到单片机的捕捉模块,通过计算信号的频率来计算车速,但车子停下来后速度显示就一直停在停的时候的那个值了,可以用什么方法来判断这个速度信号已经消失了,从而来判断车子已经停了?谁有有效的解决方法吗?
NE5532 发表于 2008-9-18 20:00 | 显示全部楼层

对检测速度设置一个下限。

lyjian 发表于 2008-9-18 20:01 | 显示全部楼层

加个超时判断就行了

在一定时间内如果没有中断发生,就可以判断车子已经停了。
 楼主| WalkerOne 发表于 2008-9-18 20:16 | 显示全部楼层

回复

回2楼,速度下限应该不明智,当急刹车时,这个最后停留的值可能会很大,而且不确定。

回3楼,现在问题就是通过什么来判断没有中断发生了?用中断标志位肯定不合适,因为进中断就要清标志位的。
systemboy 发表于 2008-9-18 20:33 | 显示全部楼层

3楼说的不错,用个计数器一直计数,中断中清计数器,主程序中

判断计数器是否超时.
天雨粟 发表于 2008-9-18 20:39 | 显示全部楼层

只是猜测,是不是这样

你在外中断里刷新显示,没有外中断,显示值就锁存在那里了,
可在主程序里作显示工作,按 lyjian老师说的,显示前判时间计数器的值是不是超限,如超限,则将速度置零,这样急刹车的问题也可解决,我看过一个老师做的例程,就是这个办法。

至于你说的“进中断就要清标志位的”,这个说法我存疑,据我看的资料,清标志位应该是在执行RETI的时候,趁老师们在线,顺便问问!
lyjian 发表于 2008-9-18 20:50 | 显示全部楼层

用计数器

设个计数器,主程序每隔一段时间减一,减到0就表示超时。
中断程序每中断一次就置这个计数器初始值。
gjg191 发表于 2008-9-18 20:58 | 显示全部楼层

o

超时方法比较好
NE5532 发表于 2008-9-19 20:45 | 显示全部楼层

超时其实就是速度下限

0.000000000000001米/秒的速度,楼主要要不要显示呢?想清楚原理就不会迷茫了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

42

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部