CN116380133A - 一种关于旋转编码器的软件消抖方法、设备和存储介质 - Google Patents
一种关于旋转编码器的软件消抖方法、设备和存储介质 Download PDFInfo
- Publication number
- CN116380133A CN116380133A CN202310355199.9A CN202310355199A CN116380133A CN 116380133 A CN116380133 A CN 116380133A CN 202310355199 A CN202310355199 A CN 202310355199A CN 116380133 A CN116380133 A CN 116380133A
- Authority
- CN
- China
- Prior art keywords
- jitter
- interrupt
- pin
- counter
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 230000008030 elimination Effects 0.000 title abstract description 7
- 238000003379 elimination reaction Methods 0.000 title abstract description 7
- 230000004044 response Effects 0.000 claims abstract description 22
- 230000008859 change Effects 0.000 claims abstract description 20
- 238000009825 accumulation Methods 0.000 claims abstract description 15
- 230000000630 rising effect Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 description 10
- 230000002035 prolonged effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01D—MEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
- G01D3/00—Indicating or recording apparatus with provision for the special purposes referred to in the subgroups
- G01D3/028—Indicating or recording apparatus with provision for the special purposes referred to in the subgroups mitigating undesired influences, e.g. temperature, pressure
- G01D3/036—Indicating or recording apparatus with provision for the special purposes referred to in the subgroups mitigating undesired influences, e.g. temperature, pressure on measuring arrangements themselves
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Manipulation Of Pulses (AREA)
- Transmission And Conversion Of Sensor Element Output (AREA)
Abstract
本发明提供一种关于旋转编码器的软件消抖方法、设备及存储介质,其中,方法包括:通过对下降沿的判定,来确定是否执行中断命令;对脉冲信号和抖动信号的下降沿的判定,以判断线路中出现高电平到低电平变化,中断主程序同时中断引脚关闭中断允许模式,将抖动计数器置零;响应于抖动计数器置零,采集中断引脚和通用输入输出引脚的信号并进行处理;响应于中断引脚和通用输入输出引脚的信号处理完成,返回主程序;判断中断引脚是否为高电平,响应于中断引脚为高电平,抖动计数器实行累加操作;判断抖动计数器是否等于预设抖动阈值,响应于抖动计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的高电平到低电平变化。
Description
技术领域
本发明涉及旋转编码器消抖技术领域,尤其涉及一种关于旋转编码器的软件消抖方法、设备和存储介质。
背景技术
旋转编码器,也称为轴编码器,是一种机电设备,可将轴或轴的角位置或运动转换为模拟或数字输出信号。在转动旋转编码器的旋钮类动作输入转动旋转编码器时,一般都存在机械抖动,导致输入脉冲数与理论脉冲数不相等,导致处理器处理结果无效或产生错误的控制指令。
为了解决上诉的问题,目前使用的方法是通过软件延时来忽略有效脉冲之后或之前的抖动所产生的脉冲,即在延时的这段时间里,不接收脉冲输入。但是这种方法存在一定的缺陷,在延时的这段时间内,后续程序的执行被暂停,极大的降低了程序的运行效率,甚至导致不可预知的严重后果。同时,通过软件延时办法生产的产品寿命也比较低,在经过一段时间的使用后,器件老化,旋转编码器旋钮类信号输入元件机械性能变差,导致抖动增加,抖动时间变长,现有软件的消抖效果将失效。
发明内容
基于此,有必要针对上述技术问题,提供一种关于旋转编码器的软件消抖方法、设备和存储介质。
一种关于旋转编码器的软件消抖方法,所述方法运行在微处理器上,旋转编码器旋钮转动时在一个时间段内会产生脉冲信号和抖动信号,所述脉冲信号和抖动信号包括下降沿,其特征在于,包括:通过对所述下降沿的判定,来确定是否执行中断命令;所述微处理器的中断引脚连接所述旋转编码器的A引脚,所述微处理器的通用输入输出引脚连接所述旋转编码器的B引脚,将所述中断引脚设置为中断允许模式;根据所述中断引脚高电平的次数设置抖动计数器;
对所述脉冲信号和抖动信号的下降沿的判定,以判断线路中出现高电平到低电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述抖动计数器置零;
响应于所述抖动计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述中断引脚是否为高电平,响应于所述中断引脚为高电平,所述抖动计数器实行累加操作;
判断所述抖动计数器是否等于预设抖动阈值,响应于所述抖动计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的高电平到低电平变化。
在其中一个实施例中,所述判断所述中断引脚是否为高电平,之后还包括:
响应于所述中断引脚为低电平,将所述抖动计数器置零。
在其中一个实施例中,所述判断所述抖动计数器是否等于预设抖动阈值,之后还包括:
响应于所述抖动计数器小于所述预设抖动阈值,返回所述主程序。
在其中一个实施例中,还包括:根据所述通用输入输出引脚设置稳定计数器;
对所述脉冲信号和抖动信号的下降沿的判定,以判断线路中出现高电平到低电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述稳定计数器置零;
响应于所述稳定计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述通用输入输出引脚是否为低电平,响应于所述通用输入输出引脚为低电平,所述稳定计数器实行累加操作;
判断所述稳定计数器是否等于预设抖动阈值,响应于所述稳定计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的高电平到低电平变化。
一种关于旋转编码器的软件消抖方法,所述方法运行在微处理器上,旋转编码器旋钮转动时在一个时间段内会产生脉冲信号和抖动信号,所述脉冲信号和抖动信号包括上升沿,其特征在于,包括:通过对所述上升沿的判定,来确定是否执行中断命令;所述微处理器的中断引脚连接所述旋转编码器的A引脚,所述微处理器的通用输入输出引脚连接所述旋转编码器的B引脚,将所述中断引脚设置为中断允许模式;根据所述中断引脚低电平的次数设置抖动计数器;
对所述脉冲信号和抖动信号的上升沿的判定,以判断线路中出现低电平到高电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述抖动计数器置零;
响应于所述抖动计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述中断引脚是否为低电平,响应于所述中断引脚为低电平,所述抖动计数器实行累加操作;
判断所述抖动计数器是否等于预设抖动阈值,响应于所述抖动计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的低电平到高电平变化。
在其中一个实施例中,所述判断所述中断引脚是否为低电平,之后还包括:
响应于所述中断引脚为高电平,将所述抖动计数器置零。
在其中一个实施例中,所述判断所述抖动计数器是否等于预设抖动阈值,之后还包括:
响应于所述抖动计数器小于所述预设抖动阈值,返回所述主程序。
在其中一个实施例中,还包括:根据所述通用输入输出引脚设置稳定计数器;
对所述脉冲信号和抖动信号的上升沿的判定,以判断线路中出现低电平到高电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述稳定计数器置零;
响应于所述稳定计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述通用输入输出引脚是否为高电平,响应于所述通用输入输出引脚为高电平,所述稳定计数器实行累加操作;
判断所述稳定计数器是否等于预设抖动阈值,响应于所述稳定计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的低电平到高电平变化。
一种设备,包括存储器、微处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述各个实施例中所述的一种关于旋转编码器的软件消抖方法的步骤。
一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述各个实施例中所述的一种关于旋转编码器的软件消抖方法的步骤。
相比于现有技术,本发明的优点及有益效果在于:本发明能完整过滤掉所有抖动,不依赖于对抖动严重程度和抖动时长的判断,所以基于本发明制造的产品的寿命将大幅度延长。
附图说明
图1为一个实施例中一种关于旋转编码器的软件消抖方法的下降沿判断流程示意图;
图2为一个实施例中微处理器和旋转编码器连接示意图;
图3为一个实施例中下降沿触发旋转编码器旋转产生信号变化示意图;
图4为一个实施例中一种关于旋转编码器的软件消抖方法的上升沿判断流程示意图;
图5为一个实施例中设备的内部结构示意图。
具体实施方式
在进行本发明具体实施方式说明之前,先对本发明的整体构思进行如下说明:
本发明主要是在旋转编码器消抖过程研发的,目前的消抖方式主要是通过软件延时来忽略有效脉冲之后或之前的抖动所产生的脉冲,即在延时的这段时间里,不接收脉冲输入。但是这种方法存在一定的缺陷,不接收脉冲输入,后续程序的执行被暂停,极大的降低了程序的运行效率,甚至导致不可预知的严重后果。同时,通过软件延时办法生产的产品寿命也比较低,在经过一段时间的使用后,器件老化,旋转编码器旋钮类信号输入元件机械性能变差,导致抖动增加,抖动时间变长,相关软件消抖算法将失效。
发明人经过分析发现,出现上面的这些问题的主要原因是延时时间固定,并不考虑具体的抖动时间,实时进行抖动监控,线路一直保持稳定再进行中断处理就可以避免前述问题了。因此本发明提出了关于旋转编码器的软件消抖方法,此方法不影响主程序的运行效率;方法可移植型强,对旋转编码器产品一致性要求不高,不需要知道旋转编码器抖动的次数和时长,可靠性高,输入结果准确。
本方法涉及的算法可完整过滤掉所有抖动,不依赖于对抖动严重程度和抖动时长的判断,所以基于本方法制造的产品的寿命将大幅度延长。
介绍完本发明的整体构思后,为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明做进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在一个实施例中,一种关于旋转编码器的软件消抖方法,以下降沿触发为例,具体的流程,如图1所示。
此方法运行在微处理器上,旋转编码器旋钮转动时在一个时间段内会产生脉冲信号和抖动信号,所述脉冲信号和抖动信号包括下降沿,其特征在于,包括:通过对所述下降沿的判定,来确定是否执行中断命令;所述微处理器的中断引脚连接所述旋转编码器的A引脚,所述微处理器的通用输入输出引脚连接所述旋转编码器的B引脚,将所述中断引脚设置为中断允许模式;根据所述中断引脚高电平的次数设置抖动计数器。
具体的,微处理器有中断引脚和通用输入输出引脚,对中断引脚设置中断允许模式,即允许在此引脚上有脉冲输入的时候,打断主程序的进程,优先响应并处理脉冲输入这个事件。可以将中断引脚和旋转编码器的A引脚连接也可以将中断引脚和旋转编码器的B引脚连接,例,可以如图2所示,将微处理器的中断引脚和旋转编码器的A引脚连接,微处理器的通用输入输出引脚和旋转编码器的B引脚连接。
旋转编码器旋钮转动,例,鼠标滚轮滚动,会产生一个高电平到低电平的脉冲信号,由高电平转变为低电平之后立刻回归到高电平,由于存在机械抖动会产生多个高电平到低电平的抖动信号,具体的信号变化如图3所示。这些信号中只有第一个脉冲信号是有效信号,其余的抖动信号都是无用信号。
根据中断引脚中高电平的次数,设置一个抖动计数器,抖动计数器的数值为高电平的次数。高电平表示线路处于稳定状态,抖动计数器的数值代表线路的稳定时间,线路中一直保持高电平,表示没有产生高电平到低电平的脉冲信号,线路维持稳定状态。
在本实施例中,可以用任意旋转编码器的任一个引脚和微处理器的中断引脚连接,方法的可移植型强,对旋转编码器产品一致性要求不高,使用范围更广泛。
在此基础上,对所述脉冲信号和抖动信号的下降沿的判定,以判断线路中出现高电平到低电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述抖动计数器置零。
具体的,接收到高电平到低电平的下降沿触发,并且中断允许模式是开着的,立刻终止正在运动的主程序,进入中断,主程序为操作系统中一直循环运行的系统程序,主程序是不断循环执行的,执行到最后一行,又回到第一行继续往下执行。
终止主程序的同时关闭中断引脚的中断允许模式,关闭此模式,再接收到高电平到低电平的下降沿变化,并不触发中断,而是继续运行主程序。关闭中断允许模式之后,将抖动计数器的数值置为零,此时,之前线路的稳定状态被打破,为非稳定状态。
在本实施例中,仅在脉冲信号第一次出现高电平到低电平的下降沿时触发中断,在接收完高电平到低电平的下降沿的触发后,立即将中断引脚的中断允许模式关闭,后续的抖动信号的高电平到低电平的下降沿不能触发中断,将继续执行主程序,不影响主程序的运行效率,同时避免了抖动信号中断主程序的问题,提高了程序运行的稳定性。
在此基础上,响应于所述抖动计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理。
具体的,采集中断引脚和通用输入输出引脚的信号,判断正反转,然后进行相关信号处理,实现相应相应的功能,如鼠标中间滚轮键对网页上下滑动的控制。
在本实施例中,抖动计数器置零后,立即处理中断主进程的脉冲信号,实现相应的功能,反应灵敏,处理速度快。
在此基础上,响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序。
具体的,当中断引脚和通用输入输出引脚的信号处理完成,则退出中断,重新调用主程序,即,鼠标光标上行或下行后立刻回归主程序运行。
在本实施例中,在中断的事件完成后立刻回归主程序,不影响主程序的运行效率。
在此基础上,判断所述中断引脚是否为高电平,响应于所述中断引脚为高电平,所述抖动计数器实行累加操作。
具体的,主程序一直循环运行,每循环运行都会读取一下中断引脚的电平,中断引脚一直为高电平,没有线路高电平到低电平的波动,线路一直保持稳定状态。
在本实施例中,不需要知道旋转编码器抖动的次数和时长,稳定时长进行累加操作,保证线路回归稳定状态,此方法可以提高软件防抖的开发效率和软件防抖的可靠性。
在此基础上,判断所述抖动计数器是否等于预设抖动阈值,响应于所述抖动计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的高电平到低电平变化。
具体的,抖动阈值可以设置为50次,高电平持续50次,线路中主程序运行50次都未出现高电平到低电平的下降沿状态,所有抖动都过滤完成,再打开中断允许模式,允许中断,等待接收线路中出现的高电平到低电平变化,进行中断响应。
在本实施例中,可完整过滤掉所有抖动,不依赖于对抖动严重程度和抖动时长的判断,所以本方法使用寿命较长。
在此基础上,所述判断所述中断引脚是否为高电平,之后还包括:响应于所述中断引脚为低电平,将所述抖动计数器置零。
具体的,在主程序运行过程中,只要在中断引脚上读取到一次低电平,抖动计数器即清零,重新开始计数。
在本实施例中,只要读取到一次低电平,意味着线路中有高电平到低电平的变换,线路处于非稳定状态,抖动计数器从零开始计数,直到无法读取到低电平,线路一直维持稳定状态。线路中抖动时间可能长或者可能短,此方法可以根据线路情况,实时进行状态判断,而不是设定一个特定延长时间,提高了抖动过滤的准确性,提高了稳定性。
在此基础上,所述判断所述抖动计数器是否等于预设抖动阈值,之后还包括:响应于所述抖动计数器小于所述预设抖动阈值,返回所述主程序。
具体的,预设的抖动阈值为50,当抖动计数器的数值小于50的时候,继续调用主程序,判断每次循环后中断引脚的电平是否为高电平,当为高电平的时候,进行累加操作,直到达到预设的抖动阈值时,才打开中断允许模式。
在本实施例中,直到线路的稳定状态达到一定时长,再打开中断允许模式,防止出现中断间隔时间长,为接收到的情况,提高了抖动过滤的精确度。
在此基础上,一种关于旋转编码器的软件消抖方法,还包括:根据所述通用输入输出引脚设置稳定计数器;
对所述脉冲信号和抖动信号的下降沿的判定,以判断线路中出现高电平到低电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述稳定计数器置零;
响应于所述稳定计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述通用输入输出引脚是否为低电平,响应于所述通用输入输出引脚为低电平,所述稳定计数器实行累加操作;
判断所述稳定计数器是否等于预设抖动阈值,响应于所述稳定计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的高电平到低电平变化。
具体的,在下降沿判断时,中断引脚的信号为低电平,则通用输入输出引脚为高电平,当中断引脚一直为高电平时,保持稳定状态,即通用输入输出引脚一直为低电平时,保持稳定状态。
对通用输入输出引脚设置一个稳定计数器,当线路中出现高电平到低电平变化,出现中断,将稳定计数器置零,置零完成后,采集中断引脚和通用输入输出引脚的信号进行处理,处理完成后返回主程序,主程序循环运行,每运行一次,对通用输入输出引脚的电平高低进行判断,当通用输入输出引脚的电平为低电平,稳定计数器进行累加操作,对稳定计数器设置阈值50,当稳定计数器数值为50,50个循环周期都为稳定状态,打开中断引脚的中断允许模式,等待接收线路中出现的高电平到低电平变化。
在本实施例中,可以在中断引脚上设置抖动计数器,也可以在输入输出引脚上设置稳定计数器,两个计数器记录的电平高低不同,抖动计数器记录高电平数量,稳定计数器记录低电平数量,一直保持稳定状态再打开中断允许模式,其余操作方法思路和设置抖动计数器时的思路相同。
在一个实施例中,提供了另一种关于旋转编码器的软件消抖方法,以上升沿触发为例,具体的流程,如图4所示。
所述方法运行在微处理器上,旋转编码器旋钮转动时在一个时间段内会产生脉冲信号和抖动信号,所述脉冲信号和抖动信号包括上升沿,其特征在于,包括:通过对所述上升沿的判定,来确定是否执行中断命令;所述微处理器的中断引脚连接所述旋转编码器的A引脚,所述微处理器的通用输入输出引脚连接所述旋转编码器的B引脚,将所述中断引脚设置为中断允许模式;根据所述中断引脚低电平的次数设置抖动计数器。
具体的,微处理器有中断引脚和通用输入输出引脚,对中断引脚设置中断允许模式,即允许在此引脚上有脉冲输入的时候,打断主程序的进程,优先响应并处理脉冲输入这个事件。可以将中断引脚和旋转编码器的A引脚连接也可以将中断引脚和旋转编码器的B引脚连接。
旋转编码器旋钮转动,例,鼠标滚轮滚动,会产生一个低电平到高电平的脉冲信号,由低电平转变为高电平之后立刻回归到低电平,由于存在机械抖动会产生多个低电平到高电平的抖动信号,这些信号中只有第一个脉冲信号是有效信号,其余的抖动信号都是无用信号。
根据中断引脚中低电平的次数,设置一个抖动计数器,抖动计数器的数值为低电平的次数。低电平表示线路处于稳定状态,抖动计数器的数值代表线路的稳定时间,线路中一直保持低电平,表示没有产生低电平到高电平的脉冲信号,线路维持稳定状态。
在此基础上,对所述脉冲信号和抖动信号的上升沿的判定,以判断线路中出现低电平到高电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述抖动计数器置零。
具体的,接收到低电平到高电平的上升沿触发,并且中断允许模式是开着的,立刻终止正在运动的主程序,进入中断,主程序为操作系统中一直循环运行的系统程序,主程序是不断循环执行的,执行到最后一行,又回到第一行继续往下执行。
终止主程序的同时关闭中断引脚的中断允许模式,关闭此模式,再接收到低电平到高电平的上升沿变化,并不触发中断,而是继续运行主程序。关闭中断允许模式之后,将抖动计数器的数值置为零,此时,之前线路的稳定状态被打破,为非稳定状态。
在此基础上,响应于所述抖动计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理。
具体的,采集中断引脚和通用输入输出引脚的信号,判断正反转,然后进行相关信号处理,实现相应相应的功能,如鼠标中间滚轮键对网页上下滑动的控制。
在此基础上,响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序。
具体的,当中断引脚和通用输入输出引脚的信号处理完成,则退出中断,重新返回主程序,即,鼠标光标上行或下行后立刻回归主程序运行。
在此基础上,判断所述中断引脚是否为低电平,响应于所述中断引脚为低电平,所述抖动计数器实行累加操作。
具体的,主程序一直循环运行,每循环运行都会读取一下中断引脚的电平,中断引脚一直为低电平,没有线路低电平到高电平的波动,线路一直保持稳定状态。
在此基础上,判断所述抖动计数器是否等于预设抖动阈值,响应于所述抖动计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的低电平到高电平变化。
具体的,抖动阈值可以设置为50次,高电平持续50次,线路中主程序运行50次都未出现低电平到高电平的下降沿状态,所有抖动都过滤完成,再打开中断允许模式,允许中断,等待接收线路中出现的低电平到高电平变化,进行中断响应。
在此基础上,所述判断所述中断引脚是否为低电平,之后还包括:
响应于所述中断引脚为高电平,将所述抖动计数器置零。
具体的,在主程序运行过程中,只要在中断引脚上读取到一次高电平,抖动计数器即清零,重新开始计数。
在此基础上,所述判断所述抖动计数器是否等于预设抖动阈值,之后还包括:
响应于所述抖动计数器小于所述预设抖动阈值,返回所述主程序。
具体的,预设的抖动阈值为50,当抖动计数器的数值小于50的时候,继续调用主程序,判断每次循环后中断引脚的电平是否为低电平,当为低电平的时候,进行累加操作,直到达到预设的抖动阈值时,才打开中断允许模式。
在此基础上,一种关于旋转编码器的软件消抖方法,还包括:根据所述通用输入输出引脚设置稳定计数器;
对所述脉冲信号和抖动信号的上升沿的判定,以判断线路中出现低电平到高电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述稳定计数器置零;
响应于所述稳定计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述通用输入输出引脚是否为高电平,响应于所述通用输入输出引脚为高电平,所述稳定计数器实行累加操作;
判断所述稳定计数器是否等于预设抖动阈值,响应于所述稳定计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的低电平到高电平变化。
具体的,在上升沿判断时,中断引脚的信号为高电平,则通用输入输出引脚为低电平,当中断引脚一直为低电平时,保持稳定状态,即通用输入输出引脚一直为高电平时,保持稳定状态。
对通用输入输出引脚设置一个稳定计数器,当线路中出现低电平到高电平变化,出现中断,将稳定计数器置零,置零操作完成后,采集中断引脚和通用输入输出引脚的信号进行处理,处理完成后返回主程序,主程序循环运行,每运行一次,对通用输入输出引脚的电平高低进行判断,当通用输入输出引脚的电平为高电平,稳定计数器进行累加操作,对稳定计数器设置阈值50,当稳定计数器数值为50,50个循环周期都为稳定状态,打开中断引脚的中断允许模式,等待接收线路中出现的低电平到高电平变化。
在本实施例中,可以在中断引脚上设置抖动计数器,也可以在输入输出引脚上设置稳定计数器,两个计数器记录的电平高低不同,抖动计数器记录低电平数量,稳定计数器记录高电平数量,一直保持稳定状态再打开中断允许模式,其余操作方法思路和设置抖动计数器时的思路相同。
下面将结合本发明中的实施例,对本发明中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
以下降沿触发为例,将微处理器的中断引脚连接到旋转编码器的A引脚,通用输入输出引脚连接到旋转编码器的B引脚,对中断引脚设置中断允许模式,然后根据高电平的次数设置一个抖动计数器。微处理器中有一直循环运行的主程序。
鼠标滚轮转动,旋转编码器旋钮转动,产生一个高电平到低电平的脉动信号和多个高电平到低电平抖动信号,此时中断允许模式打开,线路中出现高电平到低电平的下降沿触发。主程序暂停执行,进入中断,然后立即关闭中断允许模式,同时将抖动计数器置零。
抖动计数器置零后,执行对中断引脚和通用输入输出引脚的信号采集和处理,判断正反转,鼠标光标向上或向下移动。处理完成后,调用主程序,主程序持续循环执行,这个过程中,抖动继续,会持续产生高电平到低电平的下降沿,由于此时中断允许模式是关闭的,不会进入中断。
主程序每循环一次,都会读取一下中断引脚的电平,判断中断引脚是否为高电平,如果为高电平,抖动计数器累加操作,直到抖动计数器累加值等于预设抖动阈值50,打开中断允许模式,在抖动计数器累加操作过程中,出现一次低电平,抖动计数器置零,重新计数。
本实施例中,一种关于旋转编码器的软件消抖方法能够可完整过滤掉所有抖动,不依赖于对抖动严重程度和抖动时长的判断,所以基于本发明制造的产品的寿命将大幅度延长。此方法不影响主程序的运行效率;可移植型强,对旋转编码器产品一致性要求不高,不需要知道旋转编码器抖动的次数和时长,抖动过滤的可靠性。旋转编码器的输入结果准确。
实施例二
以下降沿触发为例,将微处理器的中断引脚连接到旋转编码器的A引脚,通用输入输出引脚连接到旋转编码器的B引脚,对中断引脚设置中断允许模式,然后根据通用输入输出引脚中低电平的次数设置一个稳定计数器。微处理器中有一直循环运行的主程序。
鼠标滚轮转动,旋转编码器旋钮转动,产生一个高电平到低电平的脉动信号和多个高电平到低电平抖动信号,此时中断允许模式打开,线路中出现高电平到低电平的下降沿触发。主程序暂停执行,进入中断,然后立即关闭中断允许模式,同时将稳定计数器置零。
稳定计数器置零后,执行对中断引脚和通用输入输出引脚的信号采集和处理,判断正反转,鼠标光标向上或向下移动。处理完成后,调用主程序,主程序持续循环执行,这个过程中,抖动继续,会持续产生高电平到低电平的下降沿,由于此时中断允许模式是关闭的,不会进入中断。
主程序每循环一次,都会读取一下通用输入输出引脚的电平,判断通用输入输出引脚是否为低电平,如果为低电平,稳定计数器累加操作,直到稳定计数器累加值等于预设抖动阈值50,打开中断引脚的中断允许模式,在稳定计数器累加操作过程中,出现一次高电平,稳定计数器置零,重新计数。
本实施例中,一种关于旋转编码器的软件消抖方法能够可完整过滤掉所有抖动,不依赖于对抖动严重程度和抖动时长的判断,所以基于本发明制造的产品的寿命将大幅度延长。此方法不影响主程序的运行效率;可移植型强,对旋转编码器产品一致性要求不高,不需要知道旋转编码器抖动的次数和时长,抖动过滤的可靠性。旋转编码器的输入结果准确。
在一个实施例中,提供了一种设备,该设备可以是服务器,其内部结构图可以如图5所示。该设备包括通过系统总线连接的微处理器、存储器、网络接口和数据库。其中,该设备的微处理器用于提供计算和控制能力。该设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该设备的数据库用于存储配置模板,还可用于存储目标网页数据。该设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被微处理器执行时以实现关于旋转编码器的软件消抖方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还可以提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时使所述计算机执行如前述实施例所述的方法,所述计算机可以为上述提到的关于旋转编码器的软件消抖方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明所做的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种关于旋转编码器的软件消抖方法,所述方法运行在微处理器上,旋转编码器旋钮转动时在一个时间段内会产生脉冲信号和抖动信号,所述脉冲信号和抖动信号包括下降沿,其特征在于,包括:通过对所述下降沿的判定,来确定是否执行中断命令;所述微处理器的中断引脚连接所述旋转编码器的A引脚,所述微处理器的通用输入输出引脚连接所述旋转编码器的B引脚,将所述中断引脚设置为中断允许模式;根据所述中断引脚高电平的次数设置抖动计数器;
对所述脉冲信号和抖动信号的下降沿的判定,以判断线路中出现高电平到低电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述抖动计数器置零;
响应于所述抖动计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述中断引脚是否为高电平,响应于所述中断引脚为高电平,所述抖动计数器实行累加操作;
判断所述抖动计数器是否等于预设抖动阈值,响应于所述抖动计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的高电平到低电平变化。
2.根据权利要求1所述一种关于旋转编码器的软件消抖方法,其特征在于,包括:所述判断所述中断引脚是否为高电平,之后还包括:
响应于所述中断引脚为低电平,将所述抖动计数器置零。
3.根据权利要求1所述一种关于旋转编码器的软件消抖方法,其特征在于,包括:所述判断所述抖动计数器是否等于预设抖动阈值,之后还包括:
响应于所述抖动计数器小于所述预设抖动阈值,返回所述主程序。
4.根据权利要求1所述一种关于旋转编码器的软件消抖方法,其特征在于,还包括:根据所述通用输入输出引脚设置稳定计数器;
对所述脉冲信号和抖动信号的下降沿的判定,以判断线路中出现高电平到低电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述稳定计数器置零;
响应于所述稳定计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述通用输入输出引脚是否为低电平,响应于所述通用输入输出引脚为低电平,所述稳定计数器实行累加操作;
判断所述稳定计数器是否等于预设抖动阈值,响应于所述稳定计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的高电平到低电平变化。
5.一种关于旋转编码器的软件消抖方法,所述方法运行在微处理器上,旋转编码器旋钮转动时在一个时间段内会产生脉冲信号和抖动信号,所述脉冲信号和抖动信号包括上升沿,其特征在于,包括:通过对所述上升沿的判定,来确定是否执行中断命令;所述微处理器的中断引脚连接所述旋转编码器的A引脚,所述微处理器的通用输入输出引脚连接所述旋转编码器的B引脚,将所述中断引脚设置为中断允许模式;根据所述中断引脚低电平的次数设置抖动计数器;
对所述脉冲信号和抖动信号的上升沿的判定,以判断线路中出现低电平到高电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述抖动计数器置零;
响应于所述抖动计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述中断引脚是否为低电平,响应于所述中断引脚为低电平,所述抖动计数器实行累加操作;
判断所述抖动计数器是否等于预设抖动阈值,响应于所述抖动计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的低电平到高电平变化。
6.根据权利要求5所述一种关于旋转编码器的软件消抖方法,其特征在于,包括:所述判断所述中断引脚是否为低电平,之后还包括:
响应于所述中断引脚为高电平,将所述抖动计数器置零。
7.根据权利要求5所述一种关于旋转编码器的软件消抖方法,其特征在于,包括:所述判断所述抖动计数器是否等于预设抖动阈值,之后还包括:
响应于所述抖动计数器小于所述预设抖动阈值,返回所述主程序。
8.根据权利要求5所述一种关于旋转编码器的软件消抖方法,其特征在于,还包括:根据所述通用输入输出引脚设置稳定计数器;
对所述脉冲信号和抖动信号的上升沿的判定,以判断线路中出现低电平到高电平变化,中断主程序同时所述中断引脚关闭中断允许模式,将所述稳定计数器置零;
响应于所述稳定计数器置零,采集所述中断引脚和通用输入输出引脚的信号并进行处理;
响应于所述中断引脚和通用输入输出引脚的信号处理完成,返回所述主程序;
判断所述通用输入输出引脚是否为高电平,响应于所述通用输入输出引脚为高电平,所述稳定计数器实行累加操作;
判断所述稳定计数器是否等于预设抖动阈值,响应于所述稳定计数器等于预设抖动阈值,打开中断允许模式,等待接收线路中出现的低电平到高电平变化。
9.一种设备,包括存储器、微处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述微处理器执行所述计算机程序时实现权利要求1至8一项所述方法的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被微处理器执行时实现权利要求1至8任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310355199.9A CN116380133A (zh) | 2023-04-04 | 2023-04-04 | 一种关于旋转编码器的软件消抖方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310355199.9A CN116380133A (zh) | 2023-04-04 | 2023-04-04 | 一种关于旋转编码器的软件消抖方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116380133A true CN116380133A (zh) | 2023-07-04 |
Family
ID=86961115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310355199.9A Pending CN116380133A (zh) | 2023-04-04 | 2023-04-04 | 一种关于旋转编码器的软件消抖方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116380133A (zh) |
-
2023
- 2023-04-04 CN CN202310355199.9A patent/CN116380133A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100306598A1 (en) | Operating Computer Memory | |
CN111142942B (zh) | 窗口数据的处理方法、装置、服务器及存储介质 | |
CN107615250B (zh) | 一种针对应用的处理方法、装置及智能终端 | |
WO2005017736A1 (ja) | ディスクアレイ装置におけるボトルネックを検出するシステムおよびプログラム | |
CN110209502B (zh) | 一种信息存储方法、装置、电子设备及存储介质 | |
CN109428786B (zh) | 网络性能监控方法、装置和计算机可读存储介质 | |
CN114328102A (zh) | 设备状态监控方法、装置、设备及计算机可读存储介质 | |
CN106959899B (zh) | 一种消息阻塞检测方法、装置及计算机存储介质 | |
EP4158479A1 (en) | Alert rule evaluation for monitoring of late arriving data | |
CN112465237A (zh) | 基于大数据分析的故障预测方法、装置、设备和存储介质 | |
CN116380133A (zh) | 一种关于旋转编码器的软件消抖方法、设备和存储介质 | |
CN112579396A (zh) | 软件系统动态限流方法、装置及设备 | |
CN103530197A (zh) | 一种检测及解决Linux系统死锁的方法 | |
CN107482968A (zh) | 一种提高直流电机运动精度的控制方法 | |
CN112929238B (zh) | 一种网络信息采集方法、装置、设备及可读存储介质 | |
US11550694B2 (en) | Packet backpressure detection method, apparatus, and device | |
CN113986789B (zh) | 一种防止中断丢失的方法和中断控制器 | |
CN112947841A (zh) | 一种读取嵌入式闪存数据的方法、装置、设备及存储介质 | |
JP2689778B2 (ja) | 電子制御装置の暴走検知装置 | |
CN117493232A (zh) | 一种流量控制方法、装置、芯片及存储介质 | |
CN110471520B (zh) | 一种基于外部复位的mcu电路防抖方法 | |
CN112198818B (zh) | 步进式驱动结构的控制方法、装置、设备及存储介质 | |
US20230131838A1 (en) | Process for monitoring at least one element in a temporal succession of physical signals | |
CN116909411A (zh) | 一种键盘去抖方法、装置、设备及介质 | |
CN116610624A (zh) | 一种gpio防抖动控制方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |