打印

如何实现对四路信号进行脉冲检测计数?

[复制链接]
3319|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sandisker|  楼主 | 2009-2-5 11:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
coldra| | 2009-2-5 12:06 | 只看该作者

参考按键扫描

使用特权

评论回复
板凳
lyjian| | 2009-2-5 12:44 | 只看该作者

5ms周期的信号还需要考虑这么多吗

一位接着一位检测都行

使用特权

评论回复
地板
ayb_ice| | 2009-2-5 20:15 | 只看该作者

外部中断就可以了

使用特权

评论回复
5
sandisker|  楼主 | 2009-2-9 00:19 | 只看该作者

问题在四个通道的脉冲分别计数

想直接通过读51的四个IO引脚,根据电平高低检测是否有脉冲,每个通道的脉冲不同步,各通道的脉冲计数是并行、独立的。原想通过循环实时的查询一路通道,有脉冲则接着查询下一路,但是若前一路通道没脉冲,后一路有脉冲来了也无法计数了。

使用特权

评论回复
6
s448| | 2009-2-9 02:04 | 只看该作者

给你个建议,也并行处理

    把这4路信号放在一个端口上,直接读这个端口不就行了,这就相当于同时读这四路了。
    周期在5ms到100ms之间放在大循环中检测足够用的了。
    要用中断是不大好的,哪来这么多中断,中断优先级也是问题,就像你说的。

使用特权

评论回复
7
xwj| | 2009-2-9 08:39 | 只看该作者

唉,3楼正解,LZ思路有问题哦

各通道的脉冲计数是并行、独立的。
不管有没有脉冲都要接着查询下一路

使用特权

评论回复
8
学生D| | 2009-2-9 09:54 | 只看该作者

4楼、6楼结合是最简的。

看来LZ不喜欢太复杂的程序,既然擅长硬件,那就加一个4或门(还是4与门)输出接到一个INT管脚,——当任何一路有脉冲到来的时候,都会引起中断;中断程序中并行读入IO,判断计数;这类程序有现成的可抄。

使用特权

评论回复
9
machunshui| | 2009-2-9 10:24 | 只看该作者

或门+触发器对付各种脉宽的脉冲

或门+触发器对付各种脉宽的脉冲

使用特权

评论回复
10
sandisker|  楼主 | 2009-2-9 15:09 | 只看该作者

8楼的思路我明白

可是我没有中断可用了,并非擅长硬件哦。只有软件上想办法了。
一位接着一位检测的话或者读端口,查询的周期难定啊,各个通道脉冲发生的时间又不同步?会不会一个通道的同一个脉冲被采了两次啊

使用特权

评论回复
11
machunshui| | 2009-2-9 16:08 | 只看该作者

方法很多

可以外部中断,定时模块捕获,模拟比较器比较,...

使用特权

评论回复
12
学生D| | 2009-2-9 19:28 | 只看该作者

没有中断可用了?

单片机的INT管脚并不是仅能“一个管教接收一个外部中断。”需要的话,可以借助编码器扩展,一扩8,1扩16也不过占用4位IO。一扩8只要3位IO,或门/与门都省了。比起软件解决方法,简单,可靠,好玩。

软件解决有现成的程序可抄。可以送你一份。老外写的。都是常见问题,已经标准化解决方案了。

使用特权

评论回复
13
sandisker|  楼主 | 2009-2-9 20:40 | 只看该作者

谢谢12楼,能否将程序发至sandisker@163.com ,谢谢!

也感谢大伙的帮助,祝大家元宵快乐!

使用特权

评论回复
14
lyjian| | 2009-2-10 08:21 | 只看该作者

能用软件实现的东西何必一定要整个硬件来实现?

浪费成本

使用特权

评论回复
15
wolension| | 2009-2-10 10:14 | 只看该作者

还有人说加硬件?

可以检测某一个沿,以上升沿为例,四路四个口
每个口与上一次扫描得到的数据进行XOR,如果为0则无脉冲,如果为1,而且读进来的口状态也为1,则算一个脉冲。每次扫描后都把状态存起来,以便下一次扫描时比较。

使用特权

评论回复
16
学生D| | 2009-2-11 11:52 | 只看该作者

等我。

好的程序懒得抄,把书名给你。

抄一个简单的给你。

15楼的方法不错。因为2ms和5ms之比差别太小了,所以需要持续扫描。那么是不是下降沿自动捕捉中断更好,更可靠?

使用特权

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

本版积分规则

44

主题

97

帖子

1

粉丝