打印

利用中断口(低电平触发)计数!

[复制链接]
3456|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaopet|  楼主 | 2007-3-23 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近要做一个项目,由于用的单片机口没有计数功能,所以我想利用中断口来计数,计数的对象是12V的风扇转速.风扇每转一圈就有一个脉冲过来.
现在的问题,我用单片机的中断口(只能是低电平中断,没有边沿触发)来计数,如果低电平时间长了,单片机就会不停地计数.有什么办法可以实现准确计数呢?
我想了个办法,不知道可不可以,请大家请点意见.

相关帖子

沙发
xiaopet|  楼主 | 2007-3-23 11:48 | 只看该作者

刚才没把图传上来,现在补上!

使用特权

评论回复
板凳
xiaopet|  楼主 | 2007-3-23 11:54 | 只看该作者

上传不了图片的?怎么传的?

图片的内容是,在中断口上接一个上接电阻,脉冲信号经过一个小电容耦合到中断口上,这样不知道行不行的,具体的电容电阻怎么算比较合适,请大家给点意见,谢谢!

使用特权

评论回复
地板
xwj| | 2007-3-23 12:13 | 只看该作者

可以不停查询,一高一低才是一个脉冲

鼠标就是用IO口检测的,也没看那个鼠标算错过

使用特权

评论回复
5
ayb_ice| | 2007-3-23 13:19 | 只看该作者

随便说说

  可以外接一整形电路让输入一脉冲,输出一固定时间的低电平,比如单稳态电路...

使用特权

评论回复
6
xiaopet|  楼主 | 2007-3-23 13:29 | 只看该作者

首先谢谢楼上两位兄弟!

可以不停查询时间不够,因为我的电路还要做一个40K的方波输出.用查询的话,实际性不强.而且我的电路还有一个可调的PWM输出,想来想去只有把中断用来计数,实时性才比较强.

至于用单稳态电路,像楼上说的,成本会增加很多,厂家不接受,因为不是自己玩的,要大批产生产的,只有贵上个2毛钱,厂家就不接受了,难啊!
我说方法不知道行不行得通呢?

使用特权

评论回复
7
ayb_ice| | 2007-3-23 13:35 | 只看该作者

随便说说

  只有电平触发中断那就不好办了,你说的方法理论上可以,可能要作试验确定值...

使用特权

评论回复
8
平常人| | 2007-3-23 22:47 | 只看该作者

建议用一个计时器定时中断,在中断中读I/O

只要计时器中断的频率高于风扇脉冲频率的四倍以上即可,中断中只需读I/O,判断高变低、低变高,时间占用很少。I/O的中断就不必了。

使用特权

评论回复
9
ayb_ice| | 2007-3-24 08:09 | 只看该作者

随便说说

  8楼的想法可行,只是频率大高不行,过于浪费CPU的时间.
  可以用两个外部中断做,一个专门检测低电平,一个专门用于检测高电平,检测低电平后设一标志,关低电平中断,开高电平中断,检测高电平后转速加一,关高电平中断,开低电平中断...这样来一转速信号只会中断两次,而8楼则必须按最高转速的4倍产生中断...

使用特权

评论回复
10
zdjtcl1| | 2007-3-24 08:21 | 只看该作者

计数

51单片机有计数器呀,可以用单片机计数器,设定T0为8位自动重装载计数模式,初值为0xff,(即来一个脉冲加一个就中断在中断中加就行),如果计数频率高,适当加高单片机晶振,24M晶振应该能满足你的要求

使用特权

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

本版积分规则

4

主题

257

帖子

1

粉丝