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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22811|回復: 10
打印 上一主題 下一主題
收起左側

AB相旋轉編碼器解碼

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

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

  • //! 編碼計數器
  • 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的時候別忘記加入中斷保護。如果要追求效率,可以將計數器類型修改為uint16_t。

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

多年測試,穩定可靠~
記住一句口訣:

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

評分

參與人數 1黑幣 +30 收起 理由
世紀21電源 + 30

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

現在你是大牛了,,可以分享一下代碼嗎?是真的難找啊
回復

使用道具 舉報

6#
無效樓層,該帖已經被刪除
7#
ID:371527 發表于 2021-2-20 20:21 | 只看該作者
精煉的編碼器程序
回復

使用道具 舉報

8#
無效樓層,該帖已經被刪除
9#
ID:430492 發表于 2022-4-7 16:43 | 只看該作者
樓主思路清晰,代碼也很精簡,贊一個!!
回復

使用道具 舉報

10#
ID:168971 發表于 2023-2-2 09:50 | 只看該作者
最近正在琢磨旋轉編碼器,,,借鑒下樓主的
回復

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

13#
ID:1109793 發表于 2024-2-4 14:51 | 只看該作者
網上找到一種這樣的,在定時器中斷里面不斷的調用,可以試試效果怎樣
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++;                        //脈沖數增加
        break;
        case 1:case 7:case 8:case 14:
        counter--;                //脈沖數減少
        break;
        case 3:case 6:case 9:case 12:
        break;
        }
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产一区 | 国产免国产免费 | 久久www免费人成看片高清 | 一区二区三区国产精品 | 亚洲国产精选 | 欧美一级毛片在线播放 | 国产区在线观看 | 羞羞视频在线观看 | 91青娱乐在线 | 成年人视频在线免费观看 | 国产在线精品一区二区三区 | 秋霞在线一区二区 | 日本超碰| 91视频在线观看 | 中文字幕不卡在线观看 | 99av成人精品国语自产拍 | 日日干夜夜操天天操 | 爱爱无遮挡 | 国产高清在线观看 | 国产69精品久久99不卡免费版 | 在线观看免费福利 | 久久国内精品 | 精品国产乱码久久久久久蜜退臀 | 国产精品免费看 | 久久久爽爽爽美女图片 | 中文字幕精品一区 | 久久久久久久一区 | 在线欧美视频 | 亚洲一区二区三区视频 | 欧美日韩国产一区二区 | 国产美女黄色 | 亚洲一区二区在线免费观看 | 亚洲二区在线 | 欧美中文字幕一区二区三区亚洲 | 在线中文字幕视频 | 国产精品一区二区久久精品爱微奶 | 爱爱免费视频网站 | 亚洲色图插插插 | 成人h片在线观看 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 99亚洲 |