<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 光電旋轉(zhuǎn)編碼器的原理及應(yīng)用方法

          光電旋轉(zhuǎn)編碼器的原理及應(yīng)用方法

          作者: 時(shí)間:2012-03-13 來源:網(wǎng)絡(luò) 收藏


          3 驅(qū)動(dòng)程序的設(shè)計(jì)

          本文引用地址:http://www.ex-cimer.com/article/168291.htm

            3.1 與S3C2410的硬件接口

            與S3C24lO的接口電路如圖4所示。光電編碼器的A、B相為集電極開路輸出,由于S3C2410的I/O口電平為3.3 V,所以將其通過電阻上拉到3.3V后再分別接到CPU的EINT0和EINT1上;將Pl直接接到3.3V,P2通過電阻下拉到GND。當(dāng)旋鈕按下時(shí),P2口輸出為高電平,否則輸出為低電平。

            

          光電編碼器與S3C24lO的接口電路

            工作狀態(tài)下,將EINTO、EINTl配置成上升沿和下降沿均觸發(fā)的外部中斷,將EINT2配置成上升沿觸發(fā)的中斷,旋鈕按下時(shí)EINT2引腳產(chǎn)生上升沿觸發(fā)中斷。

            3.2 外部中斷初始化及中斷服務(wù)程序的編寫

            首先必須完成CPU的I/O口和中斷的初始化工作,然后再編寫中斷處理程序。具體分為4個(gè)步驟:

            初始化I/O口。在Port_Init()函數(shù)中,將EINT0和EINTl初始化為上升沿和下降沿均觸發(fā)的中斷。將EINT2初始化為上升沿觸發(fā)的中斷。

            添加中斷號(hào)。在oalint.h下添加光電編碼器中斷向量的宏定義。代碼為#define SYSINTR_OED(SYSINTR_FIRMWARE+20)

            添加中斷的初始化、禁止、復(fù)位等函數(shù),分別在OEMInterruptEnable()、OEMInterruptDisable()、OEM-InterruptDone()等函數(shù)中加入相關(guān)代碼。

            返同中斷標(biāo)識(shí),由OEMInterruptHandler()函數(shù)返回中斷標(biāo)識(shí)(SYSINTR_OED)。

            3.3 編寫流接口驅(qū)動(dòng)程序

            Windows CE.net把中斷處理分成兩個(gè)部分:中斷服務(wù)程序(ISR)和中斷服務(wù)線程(IST)。TSR通常要求越短、越快越好,它的唯一任務(wù)就是返回中斷標(biāo)識(shí)。正由于ISR很小,只能做少量的處理,因此中斷處理器就調(diào)用IST執(zhí)行大多數(shù)的中斷處理。中斷服務(wù)線程(IST)在從waitForSingleObject()函數(shù)得到中斷已經(jīng)發(fā)生的信號(hào)前一直保持空閑;當(dāng)接收到中斷信號(hào)后,它就在本機(jī)設(shè)備驅(qū)動(dòng)程序的PDD層調(diào)用子程序,這些程序反過來訪問硬件以獲得硬件的狀態(tài)。IST使用InterruptInitialize()函數(shù)來注冊(cè)自己,然后使用WaitForSingleObject()函數(shù)等待中斷信號(hào)。如果這時(shí)中斷信號(hào)到來,則應(yīng)將光電編碼器的狀態(tài)記錄下來,保存在變量OED_Status中。OED_Status=1表示旋鈕按下,OED_Status=2表示旋鈕逆時(shí)針,OED_Status=3表示旋鈕順時(shí)針。

            這里還有一種比較簡(jiǎn)單的鑒相規(guī)則,具體步驟是,當(dāng)創(chuàng)建線程時(shí)讀出EINTl的電平狀態(tài)并保存在變量PreEINTl中,每次中斷到來時(shí)首先判斷EINT2是否為高電平。如果為高電平,則說明按鈕按下;如果EINT2為低電平,則判斷EINTO電平是否與PreEINTl相同。如果相同,則說明旋鈕逆時(shí)針;反之,旋鈕順時(shí)針旋轉(zhuǎn),判斷的流程如圖5所示。

            

          判斷的流程

          51單片機(jī)相關(guān)文章:51單片機(jī)教程




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();