基于全局中断触发识别旋转编码开关的方法技术

技术编号:22640005 阅读:30 留言:0更新日期:2019-11-26 15:45
本发明专利技术涉及旋转编码开关的识别技术,其公开了一种基于全局中断触发识别旋转编码开关的方法,解决不能区分中断触发是上升沿还是下降沿的MCU在适配旋钮开关时,容易出现旋转方向误判的问题。该方法包括:a.将旋转编码开关的两个脉冲信号输出管脚分别与MCU的两个GPIO口对应硬件连接;b.设定MCU的所述两个GPIO的中断触发方式为全局中断触发;c.在旋转编码开关的旋钮转动时,MCU通过两个中断触发器依据设定的中断触发记录规则分别记录所述两个GPIO口的中断触发状态;d.MCU根据设定的识别规则从记录的中断数据中识别出旋钮的旋转方向。

A method of identifying rotary code switch based on global interrupt trigger

The invention relates to the identification technology of rotary coding switch, which discloses a method of identifying rotary coding switch based on global interrupt trigger, which solves the problem that MCU which can not distinguish whether the interrupt trigger is rising edge or falling edge is prone to misjudge the rotation direction when it adapts the knob switch. The method includes: A. connecting the two pulse signal output pins of the rotary encoding switch with the corresponding hardware of the two GPIO ports of the MCU; B. setting the interrupt triggering mode of the two gpios of the MCU as the global interrupt triggering; C. when turning the knob of the rotary encoding switch, the MCU records the middle of the two GPIO ports respectively through the two interrupt triggers according to the set interrupt triggering recording rules D. MCU recognizes the rotation direction of the knob from the recorded interrupt data according to the set recognition rules.

【技术实现步骤摘要】
基于全局中断触发识别旋转编码开关的方法
本专利技术涉及旋转编码开关的识别技术,具体涉及一种基于全局中断触发识别旋转编码开关的方法。
技术介绍
随着电子技术的发展,各类MCU成为电子产品的信息和操控处理中心,它可以通过高速GPIO口检测电压状态,并能将检测的电压变化以中断触发的方式进行记录,精度可达us级别。旋转编码开关取代传统的电阻电位器成为常用的操控器件,它的2个管脚连接内部的弹片,在触点之间进行有规律的接触和断开,从而产生脉冲信号,脉冲信号随着左旋和右旋产生不同的时序关系。下面以带档位的旋钮来分析其工作原理:当处于静止状态时,对于带档位的旋钮,由于其内部自带卡点装置,会自动将弹片卡位在空档位置,此时2个弹片均与触点断开,处于高电平状态。当向左旋转时(逆时针),弹片A(对应引脚1pin)先与触点接触,电压先被拉低,随后弹片B(对应引脚2pin)与触点接触,随后电压被拉低,两者产生一个下降沿的时序。随着旋钮旋转到下一个卡点位置,弹片A先与触点断开,先恢复到高电压,随后弹片B与触点断开,后恢复到高电压,两者产生一个上升沿的时序。可以看出,在旋转一个档位之间,A和B产生了2次时序差,即一次下降沿时序差和一次上升沿时序差,如图1所示。其中下降沿的时序差是用户旋转产生的结果,后面的上升沿是旋钮内部自带的卡点装置让旋钮产生自动复位功能(即处于静态空挡位置)。同样,右旋时产生相反的时序差,如图2所示。顺滑型的无档位旋钮工作原理与上类似,只是没有卡点装置,旋转过程中弹片不自动断开触点,脉冲信号是交替高低变化,没有复位过程,如图3所示。目前行业对旋转编码开关的识别方案为:将编码开关两个管脚A、B输出的信号分别输入到MCU的2个GPIO口中进行旋转方向识别,但其中一个重要前提是:MCU可以区分中断触发是上升沿还是下降沿。其识别过程是:当AB均产生上升沿触发时,即进入了复位识别状态,此时来判定AB的下降沿中断触发时序,判断是AB还是BA,从而识别左旋还是右旋。这种识别方法存在一个缺陷:其依赖MCU对中断触发性质(上升还是下降)的识别。对于不能区分中断触发是上升沿还是下降沿的MCU,其只能区分中断是否产生,并记录触发数量和时间,而无法区分中断的性质。当应用此类MCU适配旋转编码开关,采用上述行业通用的识别方案时,将出现很大概率的旋转操作的误判,导致适配失败。
技术实现思路
本专利技术所要解决的技术问题是:提出一种基于全局中断触发识别旋转编码开关的方法,解决不能区分中断触发是上升沿还是下降沿的MCU在适配旋钮开关时,容易出现旋转方向误判的问题。本专利技术解决上述技术问题采用的技术方案是:基于全局中断触发识别旋转编码开关的方法,包括:a.将旋转编码开关的两个脉冲信号输出管脚分别与MCU的两个GPIO口对应硬件连接;b.设定MCU的所述两个GPIO的中断触发方式为全局中断触发;c.在旋转编码开关的旋钮转动时,MCU通过两个中断触发器依据设定的中断触发记录规则分别记录所述两个GPIO口的中断触发状态;d.MCU根据设定的识别规则从记录的中断数据中识别出旋钮的旋转方向。作为进一步优化,将两个GPIO口分别以A口和B口表示,步骤b中,所述全局中断触发是指当MCU检测到A口或者B口的电压发生变化,均记录为产生了1次中断。通过全局中断触发方式,当旋钮转动时,MCU检测A、B口的电压发生变化,此时无论电压是从高变到低(下降沿),或者是从低变到高(上升沿)均记录为产生了1次中断,不需要MCU对上升沿和下降沿进行识别,即不需要区分中断的性质。作为进一步优化,步骤c中,所述中断触发记录规则包括:在另外一个GPIO口有中断触发前,同一个GPIO口的多次中断均记录为1次。根据此规则可以减少因不规则的信号输出而引起的中断记录干扰。作为进一步优化,步骤d中,所述识别规则包括:将MCU记录的A、B口的中断数据根据记录时序组合成至多4位的识别码,所述识别码中包括2位中断数据构成的时序码,时序码后跟至多2位中断数据构成的跟随码;MCU根据时序码记录的A、B口的中断产生时序来识别旋钮的旋转的方向。依据A、B口的中断时序可以体现旋钮的旋转方向,比如:以左旋时,A口对应编码开关的弹片先接触触点,B口对应编码开关的弹片后接触触点为例,A口和B口的中断时序为“AB”,则代表左旋,反之,若为“BA”则代表右旋;因此时序码可以作为MCU判定旋钮的旋转方向的依据,时序码后跟的跟随码是旋钮自动产生的中断,不作为判定旋转方向的依据,因此,通过此识别规则可以识别出旋转编码开关的旋钮转动方向。作为进一步优化,步骤c中,在记录中断触发状态时,当同一个GPIO口记录的相邻中断间隔≤300us时,将该多次中断视作1次有效中断。通过有效中断的判定时间来记录有效中断,从而滤除旋钮转动时,因触点和弹片接触和断开瞬间产生杂波干扰,保留正常旋转产生的中断。作为进一步优化,步骤c中,当MCU检测到两个GPIO口同时无中断的150ms后,对中断记录进行复位,即,清除之前记录的中断数据,将下一次中断作为记录起点;MCU开机后也默认进入中断复位状态。通过设置中断记录的复位时间,该复位时间大于旋钮旋转时产生的正常中断时间间隔,并且在此基础上尽量短,能够让中断记录尽可能快的复位清零,从而便于及时响应编码开关的旋转指令。作为进一步优化,步骤c中,当中断记录数据复位后,MCU对两个GPIO口的电压进行检测,并对后续旋钮操作中产生的中断记录按照滤除规则进行滤除;滤除规则如下:设定:低电压≤0.7V,高电压≥2.0V;若检测的两个GPIO口的电压均为高电压,则不滤除中断;若检测的两个GPIO口的电压均为低电压,则滤除前两个中断;若检测的两个GPIO口的电压中,一个为高电压,另一个为低电压,则滤除第一个中断。旋转编码开关是一种机械式装置,因旋转力度、角度以及按键自身差异,会导致其输出的信号并非完全按规律运行,在静止下其A、B口的电压存在3种状态。其中:AB同高是标准状态,AB异高和AB同低是按键过旋或者旋转不到位的状态,后两者属于异常状态。若在异常状态下旋转,则产生的中断也是不规律的,则需要按规则进行滤除,保留有用中断。本专利技术的有益效果是:将旋转编码开关的两个脉冲信号输出管脚分别与MCU的两个GPIO口对应硬件连接,利用MCU的GPIO管脚检测到电压信号发生变化时触发全局中断,根据两个GPIO口之间的中断时序,结合复位机制和中断滤除机制,对干扰因素进行过滤,从而让MCU准确识别旋钮的旋转方向,准确灵敏地响应相关指令。附图说明图1为现有技术中档位型编码开关左旋产生的脉冲时序示意图;图2为现有技术中档位型编码开关右旋产生的脉冲时序示意图;图3为现有技术中顺滑型编码开关旋转产生的脉冲时序示意图;图4为本专利技术中全局中断触发记录的示意图;图本文档来自技高网
...

【技术保护点】
1.基于全局中断触发识别旋转编码开关的方法,其特征在于,包括:/na.将旋转编码开关的两个脉冲信号输出管脚分别与MCU的两个GPIO口对应硬件连接;/nb.设定MCU的所述两个GPIO的中断触发方式为全局中断触发;/nc.在旋转编码开关的旋钮转动时,MCU通过两个中断触发器依据设定的中断触发记录规则分别记录所述两个GPIO口的中断触发状态;/nd.MCU根据设定的识别规则从记录的中断数据中识别出旋钮的旋转方向。/n

【技术特征摘要】
1.基于全局中断触发识别旋转编码开关的方法,其特征在于,包括:
a.将旋转编码开关的两个脉冲信号输出管脚分别与MCU的两个GPIO口对应硬件连接;
b.设定MCU的所述两个GPIO的中断触发方式为全局中断触发;
c.在旋转编码开关的旋钮转动时,MCU通过两个中断触发器依据设定的中断触发记录规则分别记录所述两个GPIO口的中断触发状态;
d.MCU根据设定的识别规则从记录的中断数据中识别出旋钮的旋转方向。


2.如权利要求1所述的基于全局中断触发识别旋转编码开关的方法,其特征在于,
将两个GPIO口分别以A口和B口表示,步骤b中,所述全局中断触发是指当MCU检测到A口或者B口的电压发生变化,均记录为产生了1次中断。


3.如权利要求1所述的基于全局中断触发识别旋转编码开关的方法,其特征在于,
步骤c中,所述中断触发记录规则包括:
在另外一个GPIO口有中断触发前,同一个GPIO口的多次中断均记录为1次。


4.如权利要求1所述的基于全局中断触发识别旋转编码开关的方法,其特征在于,
步骤c中,在记录中断触发状态时,当同一个GPIO口记录的相邻中断间隔≤300us时,将该多次中断视作1次有效中断。


...

【专利技术属性】
技术研发人员:翟让海王圣富
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1