红外遥控按键处理问题--连续按

[复制链接]
7147|12
 楼主| vincer 发表于 2010-10-28 15:40 | 显示全部楼层 |阅读模式
各位大侠:

红外按键连续按下,重复周期为100ms左右,也有60多ms的。
接收端mcu每100ms左右解码一次。

若只按一下按键时,可以满足要求。但是若按住一个按键不放时,mcu解码一次发一个按键消息通知上层应用,周期为100ms左右,时间相对固定。

现在要求,按下一个按键不放时,发送的按键消息缩短,为50-90ms,怎样处理效果更好,资源占用少(不局限于某个操作系统)?

这个问题能不能等价于:
信号源频率高或者频率低时,转换输出为固定频率。
频率高,即按键重复周期短时会好处理一些。

谢谢!
chunyang 发表于 2010-10-28 17:37 | 显示全部楼层
解码完成立刻送出键值就是,只要MCU的处理速度可以满足,无所谓什么发键周期。
xwj 发表于 2010-10-28 18:36 | 显示全部楼层
很多红外遥控IC都有连续码的。
 楼主| vincer 发表于 2010-10-28 23:13 | 显示全部楼层
谢谢chunyang和xwj!

回chunyang:
如果红外按键周期为100ms,连续按(第二个后面一般为重复码),每100ms mcu解码一次,这当然可以。
但有些应用,要求连续按反应快一点,如果还是100ms的话,用户体验觉得反应反而有点慢了!

回xwj:
我所说的重复周期,就是连续码的周期数。
一级菜鸟 发表于 2010-10-28 23:17 | 显示全部楼层
谢谢chunyang和xwj!

回chunyang:
如果红外按键周期为100ms,连续按(第二个后面一般为重复码),每100ms mcu解码一次,这当然可以。
但有些应用,要求连续按反应快一点,如果还是100ms的话,用户体验觉得反应反而有 ...
vincer 发表于 2010-10-28 23:13


不要限定MCU解码时间,收到就解,解完就操作。
一级菜鸟 发表于 2010-10-28 23:20 | 显示全部楼层
各位大侠:

红外按键连续按下,重复周期为100ms左右,也有60多ms的。
接收端mcu每100ms左右解码一次。

若只按一下按键时,可以满足要求。但是若按住一个按键不放时,mcu解码一次发一个按键消息通知上层应用,周期 ...
vincer 发表于 2010-10-28 15:40


收到重复码后,以50mS或者更短的周期向应用层重复发送键值,100mS内如果未收到下一个重复码,停止,收到则继续。
 楼主| vincer 发表于 2010-10-28 23:44 | 显示全部楼层
谢谢 一级菜鸟!
我现在是这样做,只是在实现时要用两个timer,或者一个timer+一个线程,或者就在一个线程里做。
感觉有点累赘。
一级菜鸟 发表于 2010-10-28 23:48 | 显示全部楼层
谢谢 一级菜鸟!
我现在是这样做,只是在实现时要用两个timer,或者一个timer+一个线程,或者就在一个线程里做。
感觉有点累赘。
vincer 发表于 2010-10-28 23:44


1个也可以,定时器周期设短一些,中断内用计数器分频,判断计数器数值后执行相应操作。

评分

参与人数 1威望 +1 收起 理由
vincer + 1 谢谢啦!

查看全部评分

jack_shine 发表于 2010-10-29 09:18 | 显示全部楼层
lz的红外频率是38khz吗
xxdcq 发表于 2010-10-29 12:04 | 显示全部楼层
单片机增加一个连续码处理就行了
比如NEC的
前面检测到9ms+4.5ms继续往下解码得到正码
检测到9ms+2.25ms就停止解码,即得到连发码
 楼主| vincer 发表于 2010-11-12 21:56 | 显示全部楼层
忘记了结贴,谢谢各位!:)
apple 发表于 2010-11-24 09:58 | 显示全部楼层
做一个定时发数据到PC的程序,第一次收到红外指令就启动定时每60MS发一次到PC,如果120MS内再也没有收到红外指令就停止发送到PC
jack_icc 发表于 2012-12-31 13:44 | 显示全部楼层
xxdcq 发表于 2010-10-29 12:04
单片机增加一个连续码处理就行了
比如NEC的
前面检测到9ms+4.5ms继续往下解码得到正码


好像H6121IC就是这样处理的,这个方法可以,但单次按时有时会出现跳码必须要处理一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

16

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部