如何使用一个定时器,分别统计两个输入值的输入时间?

2019-08-22 14:50发布

假设MCU只有一个100ms中断一次的定时器可以使用,现在有两个输入信号single1,single2同时进行输入,每个输入值的取值为0或1
现在的问题:
1.对于每个输入,当输入值为1时开始计时,统计10s内输入值为1的个数?
2.对于每个输入,检测到输入值为1时开始计时,10s后打印一句话至串口,同时停止计时。
对于上述两个问题,应该如何处理?不使用实时操作系统。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
操作系统
1楼-- · 2019-08-22 17:50
一言难尽呀..
hechuanxi0312
2楼-- · 2019-08-22 20:47
操作系统 发表于 2017-4-7 23:06
一言难尽呀..

那就慢慢说啊,真是一点思路都没有。
东北小辉辉
3楼-- · 2019-08-22 22:41
 精彩回答 2  元偷偷看……
操作系统
4楼-- · 2019-08-23 03:18
实际上还是很简单的.只是一两句话说不清楚.先开一个定时器,不管他是定时多少毫秒.反正想办法能计时就行了.精度100MS内. 两个信号中任何一个发出有效动作启动计时器.开始计时,在计时期间,分别累计两个信号的有效信号次数.(可能要用到外部中断功能).计时达到规定时间时.停止定时器计时,打印出 两个信号的 出现次数.这样子的程序应该算简单的.做不出来.对不起金牌会员这四个字呀.呵呵..
hechuanxi0312
5楼-- · 2019-08-23 05:53
东北小辉辉 发表于 2017-4-8 15:16
想了一下,楼主要检测的,其实不是10s内输入1的个数,应该是10s内signal出现上升沿的个数,这个检测方式, ...

其实情况是这样:
一个串口会周期100ms发送两个信号值至MCU,一个信号值如果收到的值为1,那么开始计时,如果10s内这个信号值一直为1,那么输入一个控制信号;另外一个信号值如果收到的值为1,那么开始计时,统计5s内这个信号值为1的次数,并打印;
因为现在只有一个定时器可以使用,定时周期为100ms,统计允许有误差。这两个信号值是需要一直监控的,所以这个定时器不能由某个信号独占,
hechuanxi0312
6楼-- · 2019-08-23 07:01
操作系统 发表于 2017-4-8 20:33
实际上还是很简单的.只是一两句话说不清楚.先开一个定时器,不管他是定时多少毫秒.反正想办法能计时就行了. ...

可能我问题描述的不是太清楚吧,我其实是想找到,如何在只是用一个定时器的情况下,满足多个功能对计时的需求,比如一个功能不需要时刻计时,只是在收到触发的情况下计时一段时间;另外一功能,需要利用定时器做周期的工作;还有一个功能,收到触发信号后开始倒计时。

一周热门 更多>