专利名称:输入捕获中断方式解码红外遥控的方法
技术领域:
本发明涉及解码红外遥控的方法,尤其涉及输入捕获方式来解码红外的方法。
背景技术:
所谓的红外遥控系统主要由两大部分构成红外编码发射部分,红外解码接收部分,红外发射部分主要由键盘、红外编码芯片、电源、红外发射管组成,红外解码部分由红外接收电路、红外解码、电源和应用电路组成,传统使用的专用硬件解码芯片,其功能固定、一种编码格式对应一种专用解码芯片,灵活性差,而现在大多采用将编码信号输入单片机,利用单片机来解码,解码软件可以根据自己的实际需要,设计各种各样的功能,并能适当调整、增加已有电路的功能,通过修改软件,可以适应各种不同的遥控编码芯片,而软件解码通常采用查询法,即单片机不断查询红外端口的电平变化,其占用大量CPU时间和资源,当系统存在其它任务情况下误码率高,其步骤如下(见图I):
步骤100 :初始化,配置GPIO为红外编码信号信号输入端;
步骤101 :等待信号为高电平,开定时器测量高电平的时间,直到遇到低电平,判断是否符合脉宽的要求,不符合则丢弃认为是杂波信号;
步骤102 :测量低电平宽度,做校验;
步骤103 :循环上述测试,直到所有位都解码完毕。
这种查询法解码流程中存在着以下缺陷
I、查询法原理是CPU的一个端口一直在查询端口的状态,一直在检测脉冲的宽度并计数,以此方法来测量脉冲宽度,再根据编码规则来解码。
2、查询法消耗大量的CPU资源,要么禁中断,要是开了中断,难以得到准确的时间,系统进一步扩展困难。
发明内容
为了解决背景技术所存在的问题,本发明提供一种输入捕获中断方式解码红外遥控的方法,包括步骤如下
单片机主程序中配置输入捕获定时器,启动输入捕获定时器,开中断;
中断触发获取捕获时刻值;
和上次捕获时刻值比较,计算两次间隔,即是脉宽;
状态机比较脉宽是否符合引导码前端;
确认是否是码头;
状态机进入解码状态并比较脉宽是否符合编码规则;
编码变量保存编码值;
捕获的值存入变量,供下次比较使用;
清除标志位,翻转边沿触发方式,为下次捕获做准备。
所述的状态机比较脉宽是否符合引导码前端,是则进行确认是否为码头,否则清除标志位,翻转边沿触发方式,为下次捕获做准备。
所述的确认是否是码头,是则进入解码状态,否则返回进行比较脉宽是否符合引导码前端。
所述的状态机进入解码状态并比较脉宽是否符合编码规则,是则将编码值保存到编码变量中,否则即认为是杂波,丢弃。
所述的编码变量每保存一次编码值,编码位数计数值加I,直到位数符合预定编码位数,解码完成,状态机跳到空闲状态。
本发明方法,使用了一个定时器,该定时器具有输入捕获功能,在信号发生变沿跳变时,会自动记录下发生边沿跳变时的时刻,并触发中断,仅在中断处理程序中处理连续两次的时刻值,以此计算出信号脉宽,再解码,输入捕获就是检验相同的一个或者几个边沿, 多次计算求平均值,根据差值再按照一定得运算求出输入波形的周期信息,每个通道每次只能配置为不是上升沿就是下降沿。
本发明采用输入捕获中断方式解码红外遥控,只需占用一个定时器的输入捕获通道,CPU可以做其他的工作,占用系统资源少,执行程序效率高,扩展性好,对系统其它任务的影响小。
图I为本发明方法的流程图。
具体实施例方式
参照图1,本发明的实现步骤如下
SI :单片机主程序中配置输入捕获定时器,启动输入捕获定时器,开中断;
S2 :中断触发获取捕获时刻值。
S3 :和上次捕获时刻值比较,计算两次间隔,即是脉宽。
S4:状态机处在空闲状态,此时比较脉宽是否符合引导码前端,是则转入S5,否则转入S8退出。
S5 :确认是否是码头,是则进入解码状态,否则转入S4。
S6 :状态机处在解码状态,此时比较脉宽是否符合数据“O”或数据“I”或数据“F” 的编码规则,是则编码值移位进入编码变量中保存,编码位数计数值加1,直到位数符合预定编码位数,解码完成,状态机跳到空闲状态,即S4,否则认为是杂波,丢弃,转入S7。
S7 :捕获的值存入变量,供下次比较使用。
S8 :清除标志位,翻转边沿触发方式,为下次捕获做准备。
权利要求
1.一种输入捕获中断方式解码红外遥控的方法,包括步骤如下单片机主程序中配置输入捕获定时器,启动输入捕获定时器,开中断;中断触发获取捕获时刻值;和上次捕获时刻值比较,计算两次间隔,即是脉宽;状态机比较脉宽是否符合引导码前端;确认是否是码头;状态机进入解码状态并比较脉宽是否符合编码规则;编码变量保存编码值;捕获的值存入变量,供下次比较使用;清除标志位,翻转边沿触发方式,为下次捕获做准备。
2.根据权利要求I所述的方法,其特征在于,所述的状态机比较脉宽是否符合引导码前端,是则进行确认是否为码头,否则清除标志位,翻转边沿触发方式,为下次捕获做准备。
3.根据权利要求I所述的方法,其特征在于,所述的确认是否是码头,是则进入解码状态,否则返回进行比较脉宽是否符合引导码前端。
4.根据权利要求I所述的方法,其特征在于,所述的状态机进入解码状态并比较脉宽是否符合编码规则,是则将编码值保存到编码变量中,否则即认为是杂波,丢弃。
5.根据权利要求4所述的方法,其特征在于,所述的编码变量每保存一次编码值,编码位数计数值加I,直到位数符合预定编码位数,解码完成,状态机跳到空闲状态。
全文摘要
一种输入捕获中断方式解码红外遥控的方法,它涉及解码红外遥控的方法。包括步骤为单片机主程序中配置输入捕获定时器,启动输入捕获定时器,开中断;中断触发获取捕获时刻值;和上次捕获时刻值比较,计算两次间隔;状态机比较脉宽是否符合引导码前端;确认是否是码头;状态机进入解码状态并比较脉宽是否符合编码规则;编码变量保存编码值;捕获的值存入变量,供下次比较使用;清除标志位,翻转边沿触发方式,为下次捕获做准备。本发明只需占用一个定时器的输入捕获通道,CPU可以做其他的工作,占用系统资源少,执行程序效率高,扩展性好,对系统其它任务的影响小。
文档编号G08C23/04GK102938197SQ20121043686
公开日2013年2月20日 申请日期2012年10月26日 优先权日2012年10月26日
发明者陈洁 申请人:合肥移瑞通信技术有限公司