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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

求增量式正交旋轉(zhuǎn)編碼器的Verilog HDL鑒相代碼

查看數(shù): 5963 | 評論數(shù): 8 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2018-12-28 13:22

正文摘要:

求增量式正交旋轉(zhuǎn)編碼器的Verilog HDL鑒相代碼       需要使用大約13個(gè)增量式正交旋轉(zhuǎn)編碼器設(shè)定值,stm32的定時(shí)器不夠用,用中斷需要13個(gè)中斷,不太方便,stm32的引腳也不太好分配。想用EPM ...

回復(fù)

ID:328014 發(fā)表于 2019-1-10 00:29
mark幫頂下
ID:199427 發(fā)表于 2018-12-31 08:56
      if ((buffer0[3:3]==buffer1[0:0])&& (buffer0[2:2]==buffer1[1:1])) // D3和D0相同(D2和D1不同)
修改為

      if ((buffer0[3:3]==buffer1[0:0])&& (buffer0[2:2]!=buffer1[1:1])) // D3和D0相同(D2和D1不同)
ID:199427 發(fā)表于 2018-12-30 19:18
添加代碼后,排版格式亂了。再發(fā)一次。
wire A, B;
reg [1:0] ABtimes;
reg period;
reg [3:0] shift_register,  [3:0] buffer0,   [3:0] buffer1;
reg [15:0] Counter;


always @(posedge A or posedge B or negedge A or negedge B)     
begin
   ABtimes = ABtimes +1;
   shift_register[3:0] = {shift_register[2:0], 1};   //  拼接1到最低位


   if(ABtimes == 3)  //  00-01-10-11  編碼器經(jīng)過了 A上升、B上升、A下降和B下降四步
   begin
           if(period == 0)
           begin
                  period = 1;    // 第二個(gè)周期
                  buffer1 =  shift_register;     //  暫存第二個(gè)周期的移位寄存器值
           end
           else
           begin
                 period = 0;     // 第一個(gè)周期
                 buffer0 =  shift_register;     //  暫存第一個(gè)周期的移位寄存器值
           end
   end
     
   if((ABtimes == 3)&& (period == 1))  //  編碼器經(jīng)過四步和第二個(gè)周期
   begin
       if ((buffer0[3:3]==buffer1[0:0])&& (buffer0[2:2]==buffer1[1:1])) // D3和D0相同(D2和D1不同)
            Counter <= Counter + 1;
      else
            Counter <= Counter - 1;


      shift_register <=  0;   //  清零
   end  


end



ID:199427 發(fā)表于 2018-12-30 15:37
謝謝 bucker 答復(fù)!沒有完全理解您的思路。簡單寫了如下代碼:


復(fù)制代碼
沒有測試。不知道對不對?



ID:439075 發(fā)表于 2018-12-30 11:18
簡單的代碼比較好做,可能對于抖動(dòng)濾波做的不好,真正的消抖效果需要靠實(shí)際環(huán)境考核才能驗(yàn)證。
說個(gè)簡單方法,先設(shè)法獲取A、B相的上升沿和下降沿,每個(gè)沿都觸發(fā)同一個(gè)移位寄存器,取本次(D1、D0)及上次(D3、D2)的鎖存值共四位,即D3、D2、D1、D0。判斷方式為D3和D0相同(D2和D1不同)則正向,相反則為反向。這個(gè)方法你通過波形圖分析就可以推導(dǎo)出來。
ID:199427 發(fā)表于 2018-12-29 13:38
本帖最后由 wxyz 于 2018-12-29 15:04 編輯

旋轉(zhuǎn)編碼器的A和B分別用5.1K電阻上拉到3.3V,再用0.1uF電容對地濾波消除抖動(dòng)和干擾。
借助單片機(jī)中斷模式的思路:

在上升邊沿觸發(fā)模式下,A和B進(jìn)行電平比較:
對A觸發(fā)的中斷:同加異減
對B觸發(fā)的中斷:同減異加

采用對A觸發(fā)的上升沿中斷模式,簡單的Verilog HDL如下:

  1. always @(posedge RotaryEncoder01Aphase)  // A的上升沿
復(fù)制代碼

根據(jù)以前單片機(jī)中斷模式的調(diào)試經(jīng)驗(yàn),編碼器有漏計(jì)數(shù)情況,計(jì)數(shù)不連續(xù)遞增或遞減,編碼器的抖動(dòng)干擾會(huì)造成漏計(jì)數(shù)情況。單片機(jī)可以采用延時(shí)消除抖動(dòng)干擾,但Verilog HDL中不知道如何解決?




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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人免费视频网站高清观看视频 | 中文字幕在线观看 | 日韩三级在线 | 91精品国产乱码久久久久久久久 | 青青草原综合久久大伊人精品 | 手机看片在线播放 | 国际精品久久 | 亚洲精品9999久久久久 | 亚洲精选一区二区 | 激情91 | 人人爽日日躁夜夜躁尤物 | 中文字幕91av | 精久久久 | 九九久久久 | 在线天堂免费中文字幕视频 | 在线视频一区二区三区 | 国产一区不卡 | 欧美成人精品 | 久久久久久亚洲精品 | 日韩成人一区 | 欧美精产国品一二三区 | 国内91在线 | 日本一区二区三区视频在线 | 亚洲一区二区在线播放 | 久久久精彩视频 | 精品国产乱码久久久久久丨区2区 | 国产在线精品免费 | 一区二区三区在线播放 | 美女露尿口视频 | 日韩欧美久久 | 91久久精品一区二区二区 | 91影院在线观看 | 精品久久久久久久久久久久 | 国产成人精品福利 | 一区二区三区四区国产 | 久久这里只有精品首页 | 亚洲精品一区中文字幕 | 国产毛片久久久 | 亚洲精品国产偷自在线观看 | 蜜桃毛片| www.黄色片视频 |