旋轉(zhuǎn)編碼器使用方法__第1頁(yè)
旋轉(zhuǎn)編碼器使用方法__第2頁(yè)
旋轉(zhuǎn)編碼器使用方法__第3頁(yè)
旋轉(zhuǎn)編碼器使用方法__第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、旋轉(zhuǎn)編碼器使用方法本文來(lái)源:www.yumeng-咨詢電話:021-5413 6071 一個(gè)具體的流接口驅(qū)動(dòng)程序和注冊(cè)表是密不可分的。向WinCE內(nèi)核添加注冊(cè)表項(xiàng)的方法有兩種:一種是直接修改Platform Builder下的reg文件;另一種是自己編寫一個(gè)注冊(cè)表文件,通過(guò)添加組件的方法將動(dòng)態(tài)鏈接庫(kù)文件添加到內(nèi)核中。這里用第2種方法,將OpticalEncoder.dll添加到內(nèi)核中。編寫的注冊(cè)表文件內(nèi)容如下: 3 光電編碼器驅(qū)動(dòng)程序的設(shè)計(jì)3.1 光電編碼器與S3C2410的硬件接口光電編碼器與S3C24lO的接口電路如圖4所示。光電編碼器的A、B相為集電極開(kāi)路輸出,由于S3C2410的I/O

2、口電平為3.3 V,所以將其通過(guò)電阻上拉到3.3V后再分別接到CPU的EINT0和EINT1上;將Pl直接接到3.3V,P2通過(guò)電阻下拉到GND。當(dāng)旋鈕按下時(shí),P2口輸出為高電平,否則輸出為低電平。工作狀態(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ā)的中斷。將EINT

3、2初始化為上升沿觸發(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通常要求越短、越

4、快越好,它的唯一任務(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)用子程序,這些程序反過(guò)來(lái)訪問(wèn)硬件以獲得硬件的狀態(tài)。IST使用InterruptInitialize(函數(shù)來(lái)注冊(cè)自己,然后使用WaitForSingleObject(函數(shù)等待中斷信號(hào)。如果這時(shí)中斷信號(hào)到來(lái),則應(yīng)將光電編碼器的狀態(tài)記錄下來(lái),保存在變量OED_Status中。OED_Status=1表示旋鈕按下,OED_S

5、tatus=2表示旋鈕逆時(shí)針旋轉(zhuǎn),OED_Status=3表示旋鈕順時(shí)針旋轉(zhuǎn)。這里還有一種比較簡(jiǎn)單的鑒相規(guī)則,具體步驟是,當(dāng)創(chuàng)建線程時(shí)讀出EINTl的電平狀態(tài)并保存在變量PreEINTl中,每次中斷到來(lái)時(shí)首先判斷EINT2是否為高電平。如果為高電平,則說(shuō)明按鈕按下;如果EINT2為低電平,則判斷EINTO電平是否與PreEINTl相同。如果相同,則說(shuō)明旋鈕逆時(shí)針旋轉(zhuǎn);反之,旋鈕順時(shí)針旋轉(zhuǎn),判斷的流程如圖5所示。 Windows CE流接口驅(qū)動(dòng)程序模型要求驅(qū)動(dòng)程序開(kāi)發(fā)者編寫10個(gè)接口函數(shù),針對(duì)光電編碼器的驅(qū)動(dòng)主要應(yīng)完成設(shè)備初始化和數(shù)據(jù)讀取2個(gè)函數(shù)的編寫。WindowsCE設(shè)備文件名前綴由3個(gè)大寫字母組成,操作系統(tǒng)使用這3個(gè)字母來(lái)識(shí)別與流接口驅(qū)動(dòng)程序相對(duì)應(yīng)的設(shè)備。這里定義設(shè)備文件名前綴為“OED”(OptICal Encoder,其中設(shè)備初始化函數(shù)OED_Init(在Windows CE裝載驅(qū)動(dòng)程序時(shí)用于創(chuàng)建中斷事件和中斷服務(wù)線程。在函數(shù)OED_Read(中將光電編碼器的狀態(tài)(OED_Status返回。3.4 封裝驅(qū)動(dòng)程序并加入到WinCE中根據(jù)上述方法編譯出動(dòng)態(tài)鏈接庫(kù)(DLL還

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論