OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5194|回复: 3

关于红外遥控实验的一些疑问

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-7-16
在线时间
2 小时
发表于 2021-7-23 21:30:59 | 显示全部楼层 |阅读模式
1金钱
中断里边有一段代码不是很懂,比如下面这个:
}else if(Dval>2200&&Dval<2600)//得到按键增加值的信息  2500为标注值2.5ms
                                        {
                                                RmtCnt++;                                
                                                RmtSta&=0XF0;               
问:下降沿为560代表逻辑0,1680代表逻辑1,这个结合NEC协议可以理解,但是这个2500 代表按键增加值的信息搞不懂哪里来的....


还有一个定时器溢出中断:
if((RmtSta&0X0F)<14)RmtSta++;
else {
RmtSta&=~(1<<7); //清除引导标记
RmtSta&=0XF0;
     }       
问:清除引导标记不应该是每帧数据接收完最后才清除引导标记吗?为什么要每160ms(16*10ms)        才清除一次呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-7-16
在线时间
2 小时
 楼主| 发表于 2021-7-25 04:19:47 | 显示全部楼层
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-7-16
在线时间
2 小时
 楼主| 发表于 2021-7-25 05:21:52 | 显示全部楼层
知道了 2500代表连发码的电平持续时间 。更新中断那个是用来判断 数据发送是否发送完,发送完后清除引导码,方便下一次进入。(因为数据发送完后的连发码,持续高电平的时间可以用来判断)
回复

使用道具 举报

1

主题

73

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2019-1-1
在线时间
173 小时
发表于 2021-7-29 21:30:27 | 显示全部楼层
问题1:NEC协议中,假如你一直按住某个按键不放,这时候会有一个连发码(对于接收端来说就是低电平9ms+2.25ms高电平+0.56ms低电平+97.94ms高电平)。那么我们检测2.25ms高电平就可以了,这里也不需要太精准,2.5ms也可以,这里就代表连发码了。
问题2:溢出中断回调函数这里,这部分代码你可以理解为松开按键,每次溢出进入到中断服务函数就会对RmtSta变量进行加1操作,假如说,按正常流程操作只按下一次,那么我们可以通过查看PPT里面的一个图知道从同步码到控制反码用不到100ms,那没有重发码,然后再进几次中断,那么该变量RmtSta是不是会超过14,那是不是证明已经松开按键了,相对应我们是不是可以把引导码标记和计数器值清除。
另外,假如我们按键一直按下的情况,那么重发码是不是一直会发送过来,那么在输入捕获回调函数里面对于识别是重发码,就会把计数器值RmtSta低四位置0。按键一直按着,那该条件是不是不会成立对吧。
好好生活,快乐工作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 16:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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