搜索
bottom↓
回复: 22

飞利浦RC-6格式红外如何才能有效解码?

[复制链接]

出0入0汤圆

发表于 2017-1-6 11:28:43 | 显示全部楼层 |阅读模式
本帖最后由 yangbo18416 于 2017-1-6 16:08 编辑

现在碰到个问题,目前我的思路如下
当头码标志为0时,则等待低电平来临,开始进入计时操作,达到头码检测位,则判断0或1,满足要求,继续,否则退出,检测到头码后,每隔一定的时间进行检测,通过检测位判断0/1,超时时间到后,复位时间计数器,等待下一次检测所有数据检测完后,复位头码标志,重新等待红外数据。
但是这样解码读出来的数据完全不对。
目前我能使用的资源还是比较多的,比如IO翻转中断,定时器计数/计时。网上有使用查询到相关高低电平后死等计时的方式来解码,但是对于我现在来说这种方式不是很实用,因为我要尽量缩短程序运行的时间。这里想请问下各位有没有什么更好的思路啊?谢谢各位了
波形图如下


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-1-6 12:20:45 | 显示全部楼层
当然不能死等,需要当红外接收信号连接到可中断的引脚,计算每次中断的时间,通过这个时间就可以解码了,这些操作都在中断服务程序中进行,CPU占用率很低,主程序还可以正常运行其它的功能

出0入8汤圆

发表于 2017-1-6 14:38:14 | 显示全部楼层
125us  定时查询就可以了  任意IO口。

出0入0汤圆

发表于 2017-1-6 14:43:22 | 显示全部楼层
用中断检测是否有电平变化,然后读时间。

出0入0汤圆

 楼主| 发表于 2017-1-6 16:11:26 | 显示全部楼层
kebaojun305 发表于 2017-1-6 14:38
125us  定时查询就可以了  任意IO口。

这个具体什么意思?定时查询IO口电平情况,然后通过IO口电平变化,可以记录不同电平持续的时间?但是这个不太好判定0和1,RC-6的0 和1 是以上升沿或者下降沿来区分的

出0入0汤圆

发表于 2017-1-6 16:20:40 | 显示全部楼层
扫描到一次跳变,读时间,大于某个数据使标志翻转,根据标志记录数据。

出0入0汤圆

发表于 2017-1-6 16:22:06 | 显示全部楼层
单纯的记录周期也可以的,只是得到的数据不是标准数据,但是能完成功能就行,不用那样死板。

出0入8汤圆

发表于 2017-1-6 16:24:00 | 显示全部楼层
yangbo18416 发表于 2017-1-6 16:11
这个具体什么意思?定时查询IO口电平情况,然后通过IO口电平变化,可以记录不同电平持续的时间?但是这个 ...

对 就是这个方法,我做过 RC6 和NEC编码  都解过,批量出过货。

出0入0汤圆

 楼主| 发表于 2017-1-6 17:03:54 | 显示全部楼层
kebaojun305 发表于 2017-1-6 16:24
对 就是这个方法,我做过 RC6 和NEC编码  都解过,批量出过货。

对于这个定时扫描的时间,你定位125us,这个有没有什么讲究没?既然你都批量出货了,那我就往这个方向努力了!!!谢谢你

出0入8汤圆

发表于 2017-1-6 17:05:36 | 显示全部楼层
yangbo18416 发表于 2017-1-6 17:03
对于这个定时扫描的时间,你定位125us,这个有没有什么讲究没?既然你都批量出货了,那我就往这个方向努力 ...

定位125us  只是 我还有其他单线通信协议的基准是125us 而已。

出0入0汤圆

 楼主| 发表于 2017-1-6 17:13:24 | 显示全部楼层
kebaojun305 发表于 2017-1-6 17:05
定位125us  只是 我还有其他单线通信协议的基准是125us 而已。

你应该不是将所有的电平持续时间存储起来,再做判断吧?我现在主要RAM区域不够,不能这么任性的使用变量!

出5入0汤圆

发表于 2017-1-6 17:17:31 | 显示全部楼层
yangbo18416 发表于 2017-1-6 17:13
你应该不是将所有的电平持续时间存储起来,再做判断吧?我现在主要RAM区域不够,不能这么任性的使用变量 ...

可以用状态机

出0入8汤圆

发表于 2017-1-7 08:30:52 | 显示全部楼层
yangbo18416 发表于 2017-1-6 17:13
你应该不是将所有的电平持续时间存储起来,再做判断吧?我现在主要RAM区域不够,不能这么任性的使用变量 ...

肯定的   单片机 RAM本来就少。

出0入0汤圆

发表于 2017-1-7 14:02:22 来自手机 | 显示全部楼层
rc6一共就才那几个数据,费不了多少字节。开一个100us定时器计数,ir管脚设置为高低电平中断触发,每次进中断读取定时器的计数跟上次比较。获取到所以数据后再解析就可以了。

出0入0汤圆

 楼主| 发表于 2017-1-11 17:24:50 | 显示全部楼层
现在用硬解的方式,做到的接收距离不是很远。距离一长,就读不准了。
现在的方式中断收到第一个下降沿后,开始设定一个定时时间,定时时间到了后,查询IO口状态,然后再设定一个定时时间,定时时间到了后再查询IO口状态,通过两个状态,可以查询该位的情况。采集点设定为每个数据的四分之一电平和四分之三电平处。但这个对时间久有很强的要求了。其他的方式我怎么就这么难突破列!!

出0入0汤圆

发表于 2017-1-11 21:28:56 来自手机 | 显示全部楼层
这么多资源的单片机 会缺这么几个字节内存么

出10入10汤圆

发表于 2017-1-12 08:32:46 | 显示全部楼层
单片机定时器的捕捉功能

出0入0汤圆

发表于 2017-1-12 08:42:41 | 显示全部楼层
这个应该是中断之后,读时间间隔吧!

出0入0汤圆

 楼主| 发表于 2017-1-13 14:17:25 | 显示全部楼层
huangqi412 发表于 2017-1-11 21:28
这么多资源的单片机 会缺这么几个字节内存么

我们公司自己的生产的,我现在使用的RAM不是很充足。不过现在已经可以解出来了,只是隔远了还是会有出错的情况发生。

出0入0汤圆

 楼主| 发表于 2017-1-13 14:18:51 | 显示全部楼层
mark82 发表于 2017-1-12 08:42
这个应该是中断之后,读时间间隔吧!

可以采用中断触发读电平,现在我是采用IO口查询的方式来弄!

出0入0汤圆

 楼主| 发表于 2017-1-13 14:39:20 | 显示全部楼层
kebaojun305 发表于 2017-1-7 08:30
肯定的   单片机 RAM本来就少。

大神,你当时编这个解码,大概费了多少空间啊,我的都将近0.7k的空间了,我们自己的单片机,ROM就2k。。。

出0入0汤圆

发表于 2017-1-13 15:45:38 | 显示全部楼层
脉冲捕捉,测长度解码

出0入0汤圆

 楼主| 发表于 2017-1-13 17:00:03 | 显示全部楼层
sanger 发表于 2017-1-13 15:45
脉冲捕捉,测长度解码

恩,现在的思路就是这样的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 15:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表