打印

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

[复制链接]
1847|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楼,现在问题就是通过什么来判断没有中断发生了?用中断标志位肯定不合适,因为进中断就要清标志位的。

使用特权

评论回复
5
systemboy| | 2008-9-18 20:33 | 只看该作者

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

判断计数器是否超时.

使用特权

评论回复
6
天雨粟| | 2008-9-18 20:39 | 只看该作者

只是猜测,是不是这样

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

至于你说的“进中断就要清标志位的”,这个说法我存疑,据我看的资料,清标志位应该是在执行RETI的时候,趁老师们在线,顺便问问!

使用特权

评论回复
7
lyjian| | 2008-9-18 20:50 | 只看该作者

用计数器

设个计数器,主程序每隔一段时间减一,减到0就表示超时。
中断程序每中断一次就置这个计数器初始值。

使用特权

评论回复
8
gjg191| | 2008-9-18 20:58 | 只看该作者

o

超时方法比较好

使用特权

评论回复
9
NE5532| | 2008-9-19 20:45 | 只看该作者

超时其实就是速度下限

0.000000000000001米/秒的速度,楼主要要不要显示呢?想清楚原理就不会迷茫了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

42

帖子

1

粉丝