打印

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

[复制链接]
5560|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:
我所说的重复周期,就是连续码的周期数。

使用特权

评论回复
5
一级菜鸟| | 2010-10-28 23:17 | 只看该作者
谢谢chunyang和xwj!

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


不要限定MCU解码时间,收到就解,解完就操作。

使用特权

评论回复
6
一级菜鸟| | 2010-10-28 23:20 | 只看该作者
各位大侠:

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

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


收到重复码后,以50mS或者更短的周期向应用层重复发送键值,100mS内如果未收到下一个重复码,停止,收到则继续。

使用特权

评论回复
7
vincer|  楼主 | 2010-10-28 23:44 | 只看该作者
谢谢 一级菜鸟!
我现在是这样做,只是在实现时要用两个timer,或者一个timer+一个线程,或者就在一个线程里做。
感觉有点累赘。

使用特权

评论回复
8
一级菜鸟| | 2010-10-28 23:48 | 只看该作者
谢谢 一级菜鸟!
我现在是这样做,只是在实现时要用两个timer,或者一个timer+一个线程,或者就在一个线程里做。
感觉有点累赘。
vincer 发表于 2010-10-28 23:44


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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
vincer + 1 谢谢啦!
9
jack_shine| | 2010-10-29 09:18 | 只看该作者
lz的红外频率是38khz吗

使用特权

评论回复
10
xxdcq| | 2010-10-29 12:04 | 只看该作者
单片机增加一个连续码处理就行了
比如NEC的
前面检测到9ms+4.5ms继续往下解码得到正码
检测到9ms+2.25ms就停止解码,即得到连发码

使用特权

评论回复
11
vincer|  楼主 | 2010-11-12 21:56 | 只看该作者
忘记了结贴,谢谢各位!:)

使用特权

评论回复
12
apple| | 2010-11-24 09:58 | 只看该作者
做一个定时发数据到PC的程序,第一次收到红外指令就启动定时每60MS发一次到PC,如果120MS内再也没有收到红外指令就停止发送到PC

使用特权

评论回复
13
jack_icc| | 2012-12-31 13:44 | 只看该作者
xxdcq 发表于 2010-10-29 12:04
单片机增加一个连续码处理就行了
比如NEC的
前面检测到9ms+4.5ms继续往下解码得到正码


好像H6121IC就是这样处理的,这个方法可以,但单次按时有时会出现跳码必须要处理一下。

使用特权

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

本版积分规则

6

主题

16

帖子

1

粉丝