首页 > 其他分享 >EC11编码器消抖

EC11编码器消抖

时间:2023-07-29 22:34:56浏览次数:42  
标签:编码器 EC11 消抖 flag alv GPIO CW

前言

之前在网上看到一篇文章优雅的对旋转编码器消抖(EC11,正交) - 知乎 (zhihu.com)感觉大佬用的方法挺不错的,这里在STM32上使用一下看下效果。

消抖原理

img

消抖的核心思路:

A脚设置为上升下降沿均会进中断,下降上升一个变换周期,判断这个周期的A脚,B脚的始末状态,来判断正反转一次。

优点:只需要一个管脚的外部触发,另一脚单纯获取电平状态即可。

还是要建议给AB脚各加上1颗103电容最好,避免频繁进入中断消耗资源。

核心代码

PA6 PA4中任意一个设为外部中断,上下沿均会触发。

#include "main.h"
#include "ec11.h"
#include <stdio.h>
static uint8_t EC11_flag = 0;
static uint8_t CW_1 = 0;
static uint8_t CW_2 = 0;  

void EC11_callback(void)
{   
    // 只要处理一个脚的外部中断--上升沿&下降沿
    GPIO_PinState alv = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6);
    GPIO_PinState blv = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);

    if(EC11_flag == 0 && alv == GPIO_PIN_RESET)
    {
        CW_1 = blv;
        EC11_flag = 1;
    }

    if(EC11_flag && alv)
    {
        CW_2 = !blv;//取反是因为 alv,blv必然异步,一高一低。
        if(CW_1&&CW_2)
        {
            printf("right on\n");
        }
        if(CW_1 == 0 && CW_2 == 0)
        {
            printf("left on\n");
        }
        EC11_flag = 0;
    }
}

测试验证

每次旋转,均会打印一下,测试现象无跳帧效果。

参考文章

标签:编码器,EC11,消抖,flag,alv,GPIO,CW
From: https://www.cnblogs.com/tangwc/p/17590682.html

相关文章

  • FPGA按键消抖
    简介按键按键是输入设备,一般来说,按键在没有按下的时候是高电平;当按键按下的时候,为低电平。在DE2-70UserManual中Eachswitchprovidesahighlogiclevel(3.3volts)whenitisnotpressed,andprovidesalowlogiclevel(0volts)whendepressed.Sincethepush......
  • 按键消抖电路如何实现?
    请设计一个按键消抖电路?按键消抖:按键消抖_百度百科(baidu.com)modulekey_debounce(inputsys_clk,//20nsinputsys_rst_n,inputkey,//outputregkey_flag,//正点原子中将表示信号作为一路输出信号使......
  • Auto Encoder(自编码器)
    AutoEncoder(自编码器)SelfSupervisedLearning(自监督学习):用没有标注的资料训练模型,发明不需要标注资料上的任务,例如:做填空题、预测下一个token(符号);在BERT和GPT之前,有一种方法就是AutoEncoderAutoEncoder(自编码器):也是一种用没有标注的资料训练的模型AutoEncoder运作方式:......
  • 【雕爷学编程】Arduino动手做(40)---KY-040旋转编码器模块2
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • 240-960MHz带编码器的单片OOK 发射器CMT2157B
    CMT2157B是一款真正意义上的单芯片、高灵活性、超低功耗、带编码器的OOK射频发射芯片,非常适合于240至960MHz的无线应用场合。该芯片可实现完全兼容市面上最常用的527、1527、2262和2240等编码格式。此外,还支持用户各种自定义编码。该芯片支持4个独立按键或多达10个扫描按......
  • 多通道cPCI接口值编码器信号采集
    可同时实现与4路 ENDAT2.2值码盘数据通讯,读取25位或29位等精度的码盘位置信息。l  支持ENDAT2.2标准l  通讯距离达30米以上l  支持PCI和CPCI接口l  双V68接口l  支持常用25位或29位码盘及其它标准ENDAT2.2码盘l  支持由板卡向码盘供电l  支持定制化修改FPGA......
  • 变分自编码器(VAE)公式推导
    论文原文:Auto-EncodingVariationalBayes[OpenReview(ICLR2014)|arXiv]本文记录了我在学习VAE过程中的一些公式推导和思考。如果你希望从头开始学习VAE,建议先看一下苏剑林的博客(本文末尾有链接)。VAE的整体框架VAE认为,随机变量\(\boldsymbol{x}\simp(\boldsymbol{......
  • 台达A2 B2伺服电机编码器改功率软件 台达A2 B2伺服电机编码修改
    台达A2B2伺服电机编码器改功率软件台达A2B2伺服电机编码修改,用于更换编码器写匹配电机参数,更改编码器功率匹配驱动器测试维修用"台达A2B2伺服电机编码器改功率软件"是一款用于修改台达A2B2型号的伺服电机编码器的软件。它的主要功能是更换编码器并编写匹配的电机参数,以及修改......
  • 刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+
    前言 大型语言模型(LLMs)最近在代码层面的一系列下游任务中表现十分出彩。通过对大量基于代码的数据(如GitHub公共数据)进行预训练,LLM可以学习丰富的上下文表征,这些表征可以迁移到各种与代码相关的下游任务。但是,许多现有的模型只能在一部分任务中表现良好,这可能是架构和......
  • Arduino连接带按键的编码器ec11使用 Bounce2库 实例代码
    #include<Bounce2.h>//定义编码器引脚constintencoderPinA=2;constintencoderPinB=3;constintbuttonPin=4;//创建编码器对象和按键对象BounceencoderButton=Bounce();BounceencoderPinAButton=Bounce();BounceencoderPinBButton=Bounce();vo......