求助:怎么计算任意时刻往前1秒内,高电平持续了多长...

2019-12-10 18:14发布

本帖最后由 ma_xiang 于 2019-10-6 14:58 编辑

怎么实时计算当前时刻往前推1秒内,高电平持续了多长时间?可以不用很精确,10毫秒级就可以,各位兄台有没有巧妙的算法
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
zhangxun0712
1楼-- · 2019-12-12 06:40
直接循环打点记录就行了,记录1秒,10m精度,也就是100个点,100/8=12.5,也就是13字节RAM空间。
elec2000
2楼-- · 2019-12-12 08:30
 精彩回答 2  元偷偷看……
ma_xiang
3楼-- · 2019-12-12 11:52
本帖最后由 ma_xiang 于 2019-10-6 16:37 编辑
elec2000 发表于 2019-10-6 15:53
设两个变量 NH,NL分别代表高电平和低电平时间。
开始计数时,高电平NH+1,低电平NL+1,当NH+NL=1000以后
  ...


假设 :开始1000ms一直是0,那么NL 是1000, NH是0,然后给高1ms低1ms,循环500次,这样再经历了1000ms(高500ms 低500ms),最后NL是1 ,NH是999,和楼上的兄弟一样的,就是他定义一个这样的变量,你定义了两个这样的变量
hackboymzw
4楼-- · 2019-12-12 12:52
设计一个FIFO环形缓存A[100],一共100个成员,初始化为FF。
一个Timer定时器,10ms一次中断,中断里读取IO口状态,写入FIFO内,高写1,低写0
接下来事情就简单了,任何时刻你只要遍历一下这个数组,是0就继续往前读,读到1,就开始计数,直到又读到0,计数完毕,然后把计数X10ms,就是高电平时间。
按照你的要求,精度10ms
johnlj
5楼-- · 2019-12-12 14:41
hackboymzw 发表于 2019-10-6 20:21
设计一个FIFO环形缓存A[100],一共100个成员,初始化为FF。
一个Timer定时器,10ms一次中断,中断里读取IO ...

非常可行,赞同
newkey
6楼-- · 2019-12-12 18:28
采用定时器

一周热门 更多>