久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22522|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

AB相旋轉(zhuǎn)編碼器解碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:26188 發(fā)表于 2015-6-23 14:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    AB相旋轉(zhuǎn)編碼器有兩根信號腳,為A和B。當(dāng)編碼器旋轉(zhuǎn)時,編碼器內(nèi)部兩個開關(guān)交替通斷,兩個開關(guān)公共端接電源時,A、B腳輸出方波;當(dāng)A超前(或滯后)B時,為正轉(zhuǎn),反之為反轉(zhuǎn)。以下是摘抄至小孩子的解碼算法,簡單高效。
假設(shè)函數(shù)IS_PIN_A_HIGH()和IS_PIN_B_HIGH()是讀取A,B兩個引腳的狀態(tài)
假設(shè)有兩個外中斷INT0和INT1都已經(jīng)配置為雙邊沿觸發(fā)模式,則解碼如下:

  • //! 編碼計數(shù)器
  • static volatile uint32_t s_wQDCounter = 0;
  • ISR(INT0_vect)
  • {
  •     if (IS_PIN_A_HIGH() && IS_PIN_B_HIGH()) {
  •         s_wQDCounter++;
  •     } else {
  •         s_wQDCounter--;
  •     }
  • }
  • ISR(INT1_vect)
  • {
  •     if (IS_PIN_A_HIGH() && IS_PIN_B_HIGH()) {
  •         s_wQDCounter--;
  •     } else {
  •         s_wQDCounter++;
  •     }
  • }



讀取全局變量s_wQDCounter的時候別忘記加入中斷保護。如果要追求效率,可以將計數(shù)器類型修改為uint16_t。

--------------------------
以上就是中斷法,可以用引腳電平變化中斷來做。上面的代碼是4倍頻。如果要2倍頻,去掉任何一個中斷處理程序即可。
如果要單倍頻,選擇任意一個外中斷,并選擇只對某個邊沿觸發(fā)即可。

多年測試,穩(wěn)定可靠~
記住一句口訣:

任意邊沿觸發(fā)模式下,A和B進行電平比較:
對A觸發(fā)的中斷:同加異減
對B觸發(fā)的中斷:同減異加
反之亦然

評分

參與人數(shù) 1黑幣 +30 收起 理由
世紀(jì)21電源 + 30

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏19 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:149451 發(fā)表于 2016-11-29 15:44 | 只看該作者
初學(xué)者想找個完整的C51檢測EC11編碼器的程序,真不好找。大牛們通常只畫“點睛”之筆,搞得我等菜鳥云里霧里的...........能給個完整的學(xué)習(xí)學(xué)習(xí)嗎?
回復(fù)

使用道具 舉報

板凳
ID:288865 發(fā)表于 2018-3-9 17:14 | 只看該作者
對啊送福送到家,別藏著掖著的
回復(fù)

使用道具 舉報

地板
ID:221051 發(fā)表于 2020-1-16 21:40 | 只看該作者
感謝分享!
回復(fù)

使用道具 舉報

5#
ID:696335 發(fā)表于 2021-1-20 10:49 | 只看該作者
w1179benp 發(fā)表于 2016-11-29 15:44
初學(xué)者想找個完整的C51檢測EC11編碼器的程序,真不好找。大牛們通常只畫“點睛”之筆,搞得我等菜鳥云里霧 ...

現(xiàn)在你是大牛了,,可以分享一下代碼嗎?是真的難找啊
回復(fù)

使用道具 舉報

6#
ID:371527 發(fā)表于 2021-2-20 20:21 | 只看該作者
精煉的編碼器程序
回復(fù)

使用道具 舉報

7#
ID:430492 發(fā)表于 2022-4-7 16:43 | 只看該作者
樓主思路清晰,代碼也很精簡,贊一個!!
回復(fù)

使用道具 舉報

8#
ID:168971 發(fā)表于 2023-2-2 09:50 | 只看該作者
最近正在琢磨旋轉(zhuǎn)編碼器,,,借鑒下樓主的
回復(fù)

使用道具 舉報

9#
ID:774081 發(fā)表于 2024-1-26 14:54 | 只看該作者
s_wQDCounter被樓主定義為無符號整型,但是在代碼中卻使用了--運算符,意味著可能要存儲負(fù)值,基于此,就可以對樓主的責(zé)任心打問號。實測樓主的代碼確實不好用,只能說有反應(yīng),要說實用,完全不可。另外樓主所述“雙邊沿觸發(fā)模式”就是指電平變化觸發(fā)吧?
回復(fù)

使用道具 舉報

10#
ID:1109793 發(fā)表于 2024-2-4 10:33 | 只看該作者
shennognshi 發(fā)表于 2024-1-26 14:54
s_wQDCounter被樓主定義為無符號整型,但是在代碼中卻使用了--運算符,意味著可能要存儲負(fù)值,基于此,就可 ...

實際上這種中斷模式在使用時是極其不可靠的。
回復(fù)

使用道具 舉報

11#
ID:1109793 發(fā)表于 2024-2-4 14:51 | 只看該作者
網(wǎng)上找到一種這樣的,在定時器中斷里面不斷的調(diào)用,可以試試效果怎樣
static uchar temp;
temp <<= 2;
if(sig_a)temp += 2;
if(sig_b)temp += 1;
switch(temp&0x0f){
        case 2:case 4:case 11:case 13:
        counter++;                        //脈沖數(shù)增加
        break;
        case 1:case 7:case 8:case 14:
        counter--;                //脈沖數(shù)減少
        break;
        case 3:case 6:case 9:case 12:
        break;
        }
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九久久这里只有精品 | 97国产精品视频 | 欧美不卡在线 | 国产精品呻吟久久av凹凸 | 日韩国产在线 | 国产精品自产拍 | 成人在线观| 精品免费在线 | 国产伦一区二区三区视频 | 久久久精品国产 | 久久久久久久久久久高潮一区二区 | 色综网 | 亚洲精品在线免费观看视频 | 91不卡在线 | 免费精品| www.蜜桃av | 欧日韩在线 | 久久久国产精品视频 | 一级片免费视频 | 99久视频| 激情在线视频 | 天天躁人人躁人人躁狂躁 | 欧美日韩在线观看视频 | 国产婷婷精品av在线 | 最新中文字幕在线 | 伊人免费观看视频 | 日韩免费 | 一区二区三区视频在线观看 | 精品视频在线免费观看 | 欧美日韩精品一区二区三区视频 | 国外成人在线视频网站 | av入口| 夜夜爽99久久国产综合精品女不卡 | 日韩欧美一区二区三区 | 91亚洲精品在线 | 国产乱码高清区二区三区在线 | 999精彩视频 | 亚洲精品天堂 | 成人欧美一区二区三区在线播放 | 日韩在线综合网 | 一区二区三区在线电影 |