通信電纜 網絡設備 無線通信 云計算|大數據 顯示設備 存儲設備 網絡輔助設備 信號傳輸處理 多媒體設備 廣播系統 智慧城市管理系統 其它智慧基建產品
深圳市扎克貿易有限公司
E53-124C
kistler1999A1A0,5
HascoZ807HT/13*16*1.5
Schlick36691
SALTUS4027000017
tesch2500PF-16A 02100138
RechnerK-130/3-E-10 NR.N00008
德企直銷,歡迎采購【德國公司直接采購】
垂詢洽談:
深圳市扎克貿易有限公司
:王文強
手機:
:
:
地址:中國深圳市深南中路2038號愛華大廈607
深圳市扎克貿易有限公司——專注歐美工控備件進口
1.德國法蘭克福設有專門采購分部,歐洲公司身份獲得更低產品折扣。
2.正規渠道,所有產品*原廠*保障,出廠、清關等手續。
3.選擇與服務優質的物流合作,一周多次航班,貨期更準、更快。
4.歐美3000多個合作品牌,只需客戶提供正確品牌、型號/銘牌,剩下的交給我們。
5.全程ERP辦公,詢復價更及時,選擇精捷高效+售后保障,請認準深圳扎克!
Honsberg HD1K-015GM010
PMA TB45-111-22000-000
BLEICHERT STR.65-B40-ST
Keller 8000223169-LACK 2,2/400/50-1000m3/h-400daPa
kistler 1999A1A0,5
Hasco Z807HT/13*16*1.5
Schlick 36691
SALTUS 4027000017
tesch 2500PF-16A 02100138
Rechner K-130/3-E-10 NR.N00008
IFM AC1258
Walther MD-007-0-WR517-19-2
EMHART M153 504/03/25
WinCE下光電編碼器的驅動程序設計
近年來,嵌入式技術發展迅速,嵌入式系統在各行各業得到了廣泛的應用。然而,由于嵌入式計算機的性,系統的硬件、軟件結構千差萬別,其輸入設備也不再像通用計算機那樣單一。嵌入式計算機的輸入沒備一般有鼠標、鍵盤、觸摸屏、按鈕、旋鈕等,而光電編碼器(俗稱“單鍵飛梭”)作為一種輸入設備,由于其具有輸入靈活,簡單可靠等特點,因此特別適合應用在嵌入式儀器和手持式設備上,整個系統可以只用一個鍵作為輸入。觸摸屏由于其方便靈活、節省空間、界面直觀等特點也備受青睞,但存在壽命短,長時間使用容易產生誤差等缺點。如果用光電編碼器輔助觸摸屏作為輸入設備,必將大大增強系統的可靠性,使得人機接口更加人性化。但由于光電編碼器并不是WinCE的標準輸入設備,因此其驅動程序在嵌入式操作系統Windows CE Platform Builder中并未給出。本文以三星公司S3C2410(ARM9芯片)為CPU的嵌入式系統開發板為平臺,詳細闡述了嵌入式操作系統WinCE下光電編碼器驅動程序的設計方法,以供同行參考。
1 光電編碼器的工作原理
光電編碼器(OptICal Encoder)俗稱“單鍵飛梭”,其外觀好像一個電位器,因其外部有一個可以左右旋轉同時又可按下的旋鈕,很多設備(如顯示器、示波器等)用它作為人機交互接口。下面以美國Greyhill公司生產的光電編碼器為例,介紹其工作原理及使用方法。光電編碼器的內部電路如圖1所示,其內部有1個發光二極管和2個光敏三極管。當左右旋轉旋鈕時,中間的遮光板會隨旋鈕一起轉動,光敏三極管就會被遮光板有次序地遮擋,A、B相就會輸出圖2所示的波形;當按下旋鈕時,2、3兩腳接通,其用法同一般按鍵。
sew BSAF202 CMP50M/BP/KY/AS1H/SB1
B&R X20DI4371
Bucher QX41-050/32-010R09
pall RC0373CZ090H
Spieth MSA90×2.0
Phoenix 1553307
GHR K31-P8-S-N
Vishay Nobel KIS-2,20kN
INA XSU080318
GMC SINEAX CAM
Murr 56220
BALLUFF BOS 6K-PU-1HA-S75-C
IFM E43910
TEE Q2E 112 M4C 41
WENGLOR Y1TA100QXT3
heidenhain ERN 1387 ID:385488-02
Sommer COR0480150
Kytola GMBH VEH-FL44-D Qn-400l/min
wachendorff IFMA0035
Vahle SA-BLS200-2-01 0590000
halder 22030.0106
WENGLOR CP70QXVT80
BAUER ETB E008B5HN GS 180 V 5 NM
PARAT Art.Nr.433.000.171
binks 502710
Jaeger 638017566
Baumer OG71 DN 256 CI,Nr.1526223
Tesa 04100-00227-00
weidmueller IE-CDR-V14MSCPOF/VAPM-C ,Nr :1253240000
Rexroth 4WRZE25E325-7X/6EG24N9ETK31/A1M S-NR:R901017352
PMA 9407-240-01101
SIEMENS 6EP1961-2BA11
hydac PPV10145/B1NRMMP0/1L14600
P+F 195887 LKL-P2-G53A-P1E5N-NA L=1300MM
BORRIES 53400080
EM-TECHNIK 2N100MN4014PP
PILZ 750008
Rose+Krieger 30330020196
heidenhain LC 195S 340 5,0 DQ01;760912-02
Wuerges HV 0,1/2 82050 3000RPM,20W
Theodor 4121
SCH NEIDER XSA V11801TQ
ASS 1-412-03-00 GRZ 10-12
Rexroth 1827020284
Turck RKC4T-12/ Nr.6627709
MTC NFS425-25
Powernet Typ ZAT 27,4/10/3/- (ADC 5483) Artikel Nr.: 06430122-101
Sterling SIHI GmbH ZLND 200500 D2 BJS 0B 2A0 10174862
SUCO 1.66408E+11
Datasensor 957801060 SG2-30-105-OO-X
OTT-JAKOB 9560003326 HS-A/E 63-B/F 80-B-DA=36,7
Beckhoff BK2000
Di-soric DCCKR 6.5V 1.5 PSLK
SIEKERKOTTE ET1100-23/1101905
Phoenix DEK-REL- 5/I/1 Nr.2941183
Beck 16645-0066 90121111L4 set point -26kPa,send signal-16kPa,low limit
Kral AG(Volumeter) BEM 300.0002
BAMO IER 784406 FFG 6/A
heidenhain LC 483 120 ID:557649-02
BALLUFF BTL6-E500-M1200-PF-S115
Wehrle WH10 485 008
Murrelektronik GmbH 7000-12481-0000000
Phoenix SACC-M12MS-5CON-PG 9-SH - 1694266
Tognella FT1251/5-01-G1/4
ODU 178.606.100.201.000
Tekon-prueftechnik Gmbh D-050A.
MICHAEL RIEDEL RSTN500UL-CSA 0,5KVA AC480//220V 50/60HZ
FEBROTEC 0X-DF2461
TR-Electronic GmbH ART NR:100-00734
ROTH+CO.AG W339.4L.04,0X0315.1-00050.027.1S.106.99
NELSON 92-19-17
STROETR G 26 F-90L4 IE2 NR.GM4004590B81A0
ORGATEX LG-50-L-07
Rexroth 4WREE 6 V08-2X/G24K31/A1V;R900909367
Leuze RT 412M/P-200-S12
trumpf 341110
OMRON E3T-ST14M5J03M
SCHNEIDER XESD1291
Warmbier 3110.85
LORENZ K-K450/N520-G23
STUCCHI STUCCHI-F-VP17P 1 BSP-D11
EBSO 31551
IFM KI0203
ADDA ANTRIEBSTECHNIK GMBH 2TB18M4200004 Type TFCP 180 M-4 18,5 kW, S1, IP 55
suco 0184 457 031003
Converteam PCB029-152892
Honsberg SK-050GR195
heidenhain LC193F 340 ID:557677-03
Murrelektronik GmbH 56620
MBS ASK 31.4 75/5A 1,5VA Kl.1 Art-No.: 8041
Bedia 421742
Euchner CET3-AR-CRA-CH-50X-SG-110906
Baumer UNDK 10N8914/S35A
ROTEX D02029001, 28 AL-D φ19/1:8 φ17.2-3.2/4
Aquametro CALEC light 93366
parker LCM2PP02V
EMHART M066 909
ganter 543.3-23-G1
Montabert 86269909
VEAM 27977-16T50
OMAL D415A067
ROSSI MR 3I 180 UP2A-42X350-39,9, B3
soyer DMS-1 P08021
A.T.S SP3216 550X590X20 L2
ACE GS-22-50-AA-900N
FSG 1708Z03-096.052 Typ:PW70/A/IP40 Drehwinkel:40°
B&R 7NC161.7
heidenhain 735117-61
PILZ 777609 PNOZ X9P 24VDC
Cosmotec TB350002200W00
ABB 769143
ZEISS 626103-0300-033
Datalogic POWERSCAN M8300 910MHz RB
hydac ZBE06
SCHUNK PZN-plus125-2-IS ID:0303643
MBS ASK 41.4 Art-Nr.: 13061
GRIP G-MGW063-2OE
tuenkers 264650
Krautzberger 1300-010-0679
Sensopart FT50RH-PAL4,Nr.572-51004
Corbetta MEM56ST.
rohmann 600217 KDS 2-2 Metall
Ahlborn Mess- und Regelungstechnik GmbH ZR7838SH
Dopag C-400-26-01
Baumann BAUMANN 3.2x23x61 NO.634
HIRSCHMANN GDML2016-LED24GB-GRAU
Schlueter SLG-18-L1/1000P
Bosch Rexroth SE-B3.055.030-00.000
SIEMENS 6QM2020
Fuchs MKFTEU5
BADGER TYP RC200(807)
Wema S3115/20x20x300
Vahle KSWSA 4/60-5 HS 0600416/00-5
KTR GS28-98SHA-6.0-28-6.0-32(ST) RotexGS28 6S
TAPFLO T50PTT-5EC
B&R 3AO350.6
elektrogas VMR 1-5, Rp ?“, 500 mbar, 230V AC
hydac 0240 R 010 BN4HC
KLASCHKA GMBH. & CO.KG SIDENT/B 13.14-30-001
SIEMENS 6AG1322-1BH01-2AA0
Honsberg UR3K-020GM085 with Protective bellows
SCHMERSAL IFL 15-30-10T
EMHART M066 643 21/3
heidenhain LC183/10nm ML240 ID557679-02
dunkermotoren GR63X55,8844203100+8873601000+8884203789
HOMMEL-ETAMIC 507696
hydac 0160 DN 025 BN4HC
VEM No.6568901
IFM IE5336
SMW 18345
END-Armaturen GmbH & Co. KG IN5225
poeppelmann GPN 700 M 16 x 1,5
Rexroth R412007251 AS3-DIS-G012-NC3
HEB Z100-101-25/12/50,00-206/B1/S16
Mahr NHT 6-100; 6111501
J.DARBYSHIRE & SON MS3106F-16S-1S 1002523-013
heidenhain SG25M ID:317436-01
WENGLOR IM020BM45VB8
GMC U1289 D0 F0 G1 H0 M1 P8 U6 V2 W1 Z0
Rexroth DBDS20 G10/315 R900424174
Sturm Praezision GmbH KRDV-050077
ABB 5DLN533151-AAJ
IBR IBRit-rf1-232 F604 008
CEAG GHG 543 2306 V 0000
Mecatraction DE 185-10
drbreit 405040006
Murrelektronik GmbH MPS3-230/24 Nr.87760
prominent 1001441
heidenhain LS 603C 820 10,0 C001,Id.336973-83
Knoll 128278
SCHUNK PGN-plus 125-1-AS Nr.0371403
Herion 820760
lika SM5-R-3
Multi-Contact CT-E1-26/S
Honsberg Omni-HD1K-025GM060E
AirCom 1050XP
HBM 1-C9C/200N
Staubli N00234113
hydac 0160 DN 003 BN4HC
B&R 7TB718.91
ATOS ARAM-32/10/350-24VDC
SMW 200691
IFS IFZ0781 for pos.5
hydac 1300R010BN4HC
Turck BI15U-CP40-FDZ30X2, NO:4280600
heidenhain LC493F 720mm ID:557642-14
Phoenix 1689080
Schmidt DX2-400
Herkules (Part.133991 (Serial Number):93290
heidenhain 526971-16 LS187 ML1640
Contrinex DW-AS-503-M12
PMA KS45-113-22000-000
Ahlborn Mess- und Regelungstechnik GmbH ZB2490GS1
SICK DFS60B-S1AA0064 Nr. 1067009
Indu-Sol PB-Diagnosestecker 10050006(vormals Art.-Nr. 00010503)
SMW 129000
Mahle PX37-13-2-Smx 10
NORBRO 30RDA40-1SD1E0-D
HYDROTECHNIK 2101-06-17.00
Montech LEP-320-2B/H Nr.40870
Elobau 129310
ATLANTA 16 12 018
ELECTRONICON 1030020 E62.C58-102E10
AFRISO-EURO-INDEX GmbH DMU 03 VM
HOMMEL-ETAMIC 537855
Vision & Control RK1220-R(No.29513007)
Mink ZZB6517-136974
Rexroth 0822406001 KHZ-SA-008-0004-O
heidenhain ROD 426 ID:376846-M6
SCHMERSAL BNS 260-11Z-ST-L Nr.101184379
SALTUS 29/2 Vierkant 1/2" X 45 (DSG), NO:8439002222
Phoenix MACX MCR-SL-2NAM-T-SP Nr.2924281
當順時針旋轉時,光電編碼器的A相相位會比B相超前半個周期;反之,A相會比B相滯后半個周期。通過檢測A、B兩相的相位就可以判斷旋鈕是順時針還是逆時針旋轉,通過記錄A或B相變化的次數,就可以得出旋鈕旋轉的次數,通過檢測2、3腳是否接通就可以判斷旋鈕是否按下。其具體的鑒相規則如下:
A為上升沿,B=0時,旋鈕右旋;
B為上升沿,A=l時,旋鈕右旋;
A為下降沿,B=1時,旋鈕右旋;
B為下降沿,A=O時,旋鈕右旋;
B為上升沿,A=0時,旋鈕;
A為上升沿,B=1時,旋鈕;
B為下降沿,A=l時,旋鈕;
A為下降沿,B=0時,旋鈕。
通過上述方法,可以很簡單地判斷旋鈕的旋轉方向。在判斷時添加適當的延時程序,以消除抖動干擾。
2 WinCE提供的驅動模型
WinCE操作系統支持兩種類型的驅動程序。一種為本地驅動程序,是把設備驅動程序作為獨立的任務實現的,直接在頂層任務中實現硬件操作,因此都有明確和專一的目的。本地設備驅動程序適合于那些集成到Windows CE平臺的設備,諸如鍵盤、觸摸屏、音頻等設備。另一種是具有定制接口的流接口驅動程序。它是一般類型的設備驅動程序。流接口驅動程序的形式為用戶一級的動態鏈接庫(DLL)文件,用來實現一組固定的函數稱為“流接口函數”,這些流接口函數使得應用程序可以通過文件系統訪問這些驅動程序。本文討論的光電編碼器就屬于流接口設備。
2.1 流設備驅動加載過程
WinCE.NET系統運行時會啟動負責流驅動的加載進程DEVICE.exe。DEVICE.exe進程對驅動的加載是通過裝載注冊表列舉器(RegEnum.dll)實現的。在WinCE.NET中,所有設備的資源信息都由OAL負責記錄在系統注冊表中,RegEnum.dll一個一個掃描注冊表項HEKY_LOCAL_MACHINEDriverBuiltIn下的子鍵,發現新設備就根據每個表項的內容進行硬件設備初始化。
2.2 中斷與中斷處理
如果一個驅動程序要處理一個中斷,那么驅動程序需要首先使用CreateEvent函數建立一個事件,調用InterruptInitialize函數將該事件與中斷標識綁定。然后驅動程序中的IST就可以使用WaitForSing|eObject函數來等待中斷的發生。在一個硬件中斷發生之后,操作系統進入異常處理程序,異常處理程序調用OAL的OEMInterruptHandler函數,該函數檢測硬件并將中斷標識返回給系統;系統得到該中斷標識便會找到該中斷標識對應的事件,并喚醒等待相應事件的線程(IST),然后IST進行中斷處理。處理完成之后,IST需要調用InterruptDone函數來告訴操作系統中斷處理結束,操作系統再次調用OAL中的OEMInterruptDone函數,zui后完成中斷的處理。圖3為WinCE.NET中斷處理的流程框圖。
JAQUET DSF 1210.00 SHV (5m)
IFM E12261
brinkmann STA604/760+001
Rexroth VT-VACAP-500-20/V0 0811405157
Holthausen ESW-Mini-050
ATOS AGMZO-A-10-210+SP667
Hengstler 1405491
Hawe EXG 3-1 G 24ex
Sommer SF74-180N-C
Rexroth R900902537 4WRA 6 W1-30-2X/G24N9K4/V
SCHMERSAL BNS 260-11Z-ST-R 101184363
Tevema D12110
Bucher CINDY 20-B-PVS-S300-A-G9-1
Beck 901.77 111L4 + 6371
JUMO 202990/11-95-5-11
Puls QS20.481
Dopag C-418-01-00-02
SAUTER 118746
Norgren SXE9675-Z50-60/23N
B&R 3DM486.6
EMHART M158 111
Phoenix SAC-4P- 3,0-PUR/M 8FS - 1681855
KTR RotexGS19 6.0
hydac FCU1310-4-U-AS-1
Turck NR:1537821 NI25-CK40-LIU2-H1141
Contrinex DW-AS-521-M8-001
Hoentzsch UNI
ODU 172.582.100.201.000
SKF CARR40*500*2/D24DB
Turck Nr.4600555 Bi1,5U-EGT08-AP6X-H1341
indusa LE0000023 0009
VIBRO-METER V-M002034 244-704-000-042-A2-B01-C10-D50-E5-F20000-G0-H0-I0
Contrinex DW-AD-509-C8-390
ABB 1SVR450056R6000
SCHMIDT-KUPPLUNG P 2880.55
mbo 10 08 0000 0016/014 16 mbo 08
Rohde SG-73.100.B4
APPOLDT POK24/7.5-2P 7.5A NR.2107-1P 15-24VDC
Bucher QX62-100/52-050R140
Turck TP-206A-CF-H1141-L450 Nr.9910610
Bucher RVSAE3/6-112-4-V
schmalz 10.02.02.03731 SXMPi 30 IMP Q PC 2xM12-5
WIKA Typ A-10,0-6 bar,NO:Nr.13222171
GKN Typ 687.40 Ausf. 0.02 la=110mm,Beugungswinkel=25°lz=1596
SPI UB0052-05 / C 8.5 max 80 bar drawing No. 110.05.01 - R1
SIEMENS 3TC4417-0AB4
Murrelektronik IMPACT67-PDI16(Art-No.55345)
HYPERTAC 031.UL0221.2000
Cosmotec TB350002200W00
KOSTYRKA 5350.070.120
Beck 930.83
Horst Knaebel GmbH C0600-007-C+AK02.1
Aerzener 133582001
heidenhain LC483 ML1140 +/-5um Nr:557647-19
Murrelektronik GmbH 56613
Gemue 807R40D 72114 169 5000
Hawe GS 2-4-G24
TECNA 60019320
Stromag AG Typ BG 270-5 431-0008
weidmueller 8432160000
BOSCH 820024990
coax 501277; 10 6C6 3/8DC 24L 10
oiltech GR-40-SMT16B-150L+RF2
Mahle PI 23006 RN PS 10 Nr.77924020
sunfab SC-056-R
OTT 95.600.073.9.2
ATOS DHI-0711 24DC
GMC SINEAX I552 -411A220
WOLFCRAFT 4.00689E+12
motrona ZU252
heidenhain LC 483 ID:557649-12
CT DUM4-11.3-24R.94-5R8
Revo RD5012005000D50
IWIS chain,16b L=5M
BERNSTEIN 6008354026 C2-SU1Z ST
MAINA GO-2AMM
ATOS SP-COI-230/50/60AC
UNHING RG3-20-2MCRF F = 160 N right
Leine & Linde 514813-01
Datasensor 957401000 SE4-RA1-PP-W
Buschjost gmbH 8452500.0000.00000
Ahlborn Mess- und Regelungstechnik GmbH SW5600WC3
AREVA 3394024410 Type SS ND/DN80-R C-Steel
Foxboro 871CR-A2T1H1B1
Rexroth 820038652
HEISS HBZ500-80/50/160-AD2.120.003.X1.XZ
ELSO Elbe GmbH & Co. KG 0.148.131.0001
STUCCHI STUCCHI-M-VP15P 3/4 BSP-G10
ElringKlinger RWDR 28X40X7 HN2390;HS21037-black seal
INA 6308-2Z 61000506
Rexroth FESE 40 CA-3X/670LK0G1M;R900701432
PULSOTRONIC Nr.9962-2330
Walther MD-007-0-L1016-19-2.
ATOS AGRL-10
imr-le SL 4
SIEMENS US2:2021784-001
BIKON DOBIKON 1012-040-065
AKO VFX080.03SFLF.31.30GLA
Contrinex DW-AS-523-M12
heidenhain SG25M ID:317436-01
Fife CDP-01-MH MS: 609285 SM:609286-020
Woerner 160.207-45
SIEMENS 6SL3957-6RX45-0AA4
Argenta Elektronik GmbH 8PMQ212AP026
Buhler UNN -44046-309
Rexroth 822010664
EA KA26-EE55
Rexroth 5610141520
Bosch Rexroth 820055601
HERVIEU 250-662-200B35
GISMA 24.06.2S07.2.00.0
PMA KS90-102-0010E-000
MicroSYST KEV1LE8:HEAB305H-V14
Honsberg RRI-025AVQ080V10KNK
PMV P2000NE-23F01-PV9DA-ZN NR 5102385
SIEMENS 6AG1322-1FF01-7AA0
heidenhain ROQ 425 512 ID:631703-01(old ID:320200-07)
ARCA 827A.E2-00H-M10-G
Phoenix PSR-SPP- 24UC/ESA4/3X1/1X2/B - 2963941
Gemue 610 15D 7 15611/N
Walther MD-007-0-S1220-19-2
SCHMERSAL BPS 260-1 Nr.101184395
KISSLING L408.2116.25 10-30V
riesbeck 330408 100m
Honsberg MR1K-020GM010 1-10L/min
TIMMER 79010119
Debnar PQR48 0-250μA
Flaig + Hommel E835 FS DIN980-M12-A4-70
SALTUS DSG-1,,NO:8439000209
ATOS RZGO-TERS-PS-010/210
Matador 31159210 (31150003)10(3/8)
Dopag C-418-01-00-02
item 0.0.387.11
SCHUNK KSP-LH plus 250 0405520
Murrelektronik GmbH 7000-13401-0000000
Ahlborn Mess- und Regelungstechnik GmbH ZK9029FB
brinkmann STC 63/440-MVX+314
Kraus & Naimer KG80 T103/D-A094 STM
Osborn International GmbH 9906030302
Murr 7000-18111-2271000
Rexroth R412007231 AS3-LBS-G012-PBP-LA
SICK DOS-2312-G Nr.6027538
Phoenix 1662298
ZANDER LS3
Icotek 36696
Beck 901.21111L4 Nr.16645-0038
STROMAG GSSG 400/5 060?00512
LAPPORT FORM 9020 8x100 Id.Nr. 101149
POWER-HYDRAULIK GmbH 300er:75,92*1,78
Tiefenbach IK177L215D L5M
ETA ESS20-003-DC24V-2A
Leuze LSS 96M-1070-43
ABP BKXS 2035 95/10
JUMO 702044/88-888-000-25/210
SenoTec Ochmann GmbH R3T-5/7 L10W
VEGA WAVES61.EEJ2RA
BOSCH 34291644
Phoenix 2856317
ADZ NAGANO GmbH SML-10.0 (0…16)bar G1/4 4....20ma
LAPPORT FORM 9011 10x10x100 Id.Nr. 100318
Helmholz 700-600-CAN01
Dopag C-418-00-00
Bremer IGE100 BV:28018BG
Phoenix VS-RJ45-RJ45-94P-0,5 - 1418028
Beckhoff IP-4GVI63 Nr.C9900-B326
GUTEKUNST D-257B
heidenhain 534855-10
CAMLOC 991S01-36-1AGV
SAUTER 116388
hydac 0160 MA020BN 315485
Mahle 77925019 PI 13006 RN MIC 10
ROTEX , R 28 SPIDER 98SHA
3 光電編碼器驅動程序的設計
3.1 光電編碼器與S3C2410的硬件接口
光電編碼器與S3C24lO的接口電路如圖4所示。光電編碼器的A、B相為集電極開路輸出,由于S3C2410的I/O口電平為3.3 V,所以將其通過電阻上拉到3.3V后再分別接到CPU的EINT0和EINT1上;將Pl直接接到3.3V,P2通過電阻下拉到GND。當旋鈕按下時,P2口輸出為高電平,否則輸出為低電平。
工作狀態下,將EINTO、EINTl配置成上升沿和下降沿均觸發的外部中斷,將EINT2配置成上升沿觸發的中斷,旋鈕按下時EINT2引腳產生上升沿觸發中斷。
3.2 外部中斷初始化及中斷服務程序的編寫
首先必須完成CPU的I/O口和中斷的初始化工作,然后再編寫中斷處理程序。具體分為4個步驟:
初始化I/O口。在Port_Init()函數中,將EINT0和EINTl初始化為上升沿和下降沿均觸發的中斷。將EINT2初始化為上升沿觸發的中斷。
添加中斷號。在oalint.h下添加光電編碼器中斷向量的宏定義。代碼為#define SYSINTR_OED(SYSINTR_FIRMWARE+20)
添加中斷的初始化、禁止、復位等函數,分別在OEMInterruptEnable()、OEMInterruptDisable()、OEM-InterruptDone()等函數中加入相關代碼。
返同中斷標識,由OEMInterruptHandler()函數返回中斷標識(SYSINTR_OED)。
3.3 編寫流接口驅動程序
Windows CE.net把中斷處理分成兩個部分:中斷服務程序(ISR)和中斷服務線程(IST)。TSR通常要求越短、越快越好,它的*任務就是返回中斷標識。正由于ISR很小,只能做少量的處理,因此中斷處理器就調用IST執行大多數的中斷處理。中斷服務線程(IST)在從waitForSingleObject()函數得到中斷已經發生的信號前一直保持空閑;當接收到中斷信號后,它就在本機設備驅動程序的PDD層調用子程序,這些程序反過來訪問硬件以獲得硬件的狀態。IST使用InterruptInitialize()函數來注冊自己,然后使用WaitForSingleObject()函數等待中斷信號。如果這時中斷信號到來,則應將光電編碼器的狀態記錄下來,保存在變量OED_Status中。OED_Status=1表示旋鈕按下,OED_Status=2表示旋鈕逆時針旋轉,OED_Status=3表示旋鈕順時針旋轉。
這里還有一種比較簡單的鑒相規則,具體步驟是,當創建線程時讀出EINTl的電平狀態并保存在變量PreEINTl中,每次中斷到來時首先判斷EINT2是否為高電平。如果為高電平,則說明按鈕按下;如果EINT2為低電平,則判斷EINTO電平是否與PreEINTl相同。如果相同,則說明旋鈕逆時針旋轉;反之,旋鈕順時針旋轉,判斷的流程如圖5所示。
KLEINMICHEL L09993246
B&R Industrie-Elektronik GmbH 0TB103.91
KUHNKE D53 ROL-F 24VDC *ED 0828 ROHS
Ropex UPT-640-L/400UAC
VEM 136346/0002H
zimmer KHA64100-12
Bar GmbH PKN-5/4-032-C078 PN100
INOVATOOLS 30410000
Rexroth 3842527868,GS 14-1,I=20:1
Staubli MPX19.7105/JV
Leuze IHRT 46B/4.21-S12 Artikel-Nr. 50112941
SIEMENS 6DD1681-0EB3
OTT-JAKOB 9560003726
G-BEE 933-1/4" PN65
Staubli MPX12.1104/JV
Epro PR9376/010-011
ATLANTA 2029320
IFM LK1024
Universal Hydraulik EKM-712-T-R-CN-G1-1/2"-UH
THIES 2.1280.00.000
KUEBLER 8.5824.0822.5000.5089
sunfab SC-064-R
Buhler UNN -44028-451
Hawe PS2-1
SCHMERSAL AZM 415-22ZPK-2652 24VAC/DC Nr. 101204319
SIEMENS 6SL3353-3AG41-8BA0
PAULY PP2441q/308/R153E /e2
heidenhain 0.25m cable Nr.535046-N2
Honsberg RRI-025GVQ080V10KPS-10
Ahlborn Mess- und Regelungstechnik GmbH ZT9431KV
VOLKMANN G1/4-10 104329
legrand 4880
SNRI 4963-43-015
Hawe VP 1 R-1/2-G 24
Beck Nr.6372
heidenhain 2m cable Nr.547300-02
heidenhian Nr.337147-01(DA 300)
SMW SLU-4-Z,ID:122185
BIELER+LANG Typ : 8022
CEAG 417 1102 R 0002
allweiler NI 25-200/22/179 U3D-W135-19/200
PMA 9407-927-30001
GKN Driveline 6.10515E+11
Eaton COM-PDP-TP
Hawe SG 0 G-AK
hilscher CIF 50-DPS
JAHN SAG10/R1/4 499452300000
Vahle 155025-1
Multi-Contact 30.0066
Dopag C-470-16-03
Euchner CES-A-UEA-02B
heidenhain 533631-06
Debnar ASK31.4 200/5A 7,5VA Kl.1
Honsberg VM025GR060
PFANNENBERG 21041807000
PB RIV 463
tuenkers 221668 T6-02
RUKO 229087
PILZ PSS SB2 3006-3 ETH-2 DP-S,Nr:301710
Contrinex DW-AS-503-M5
Moeller STE 3.0/W/TA Knr:224125/03
STEMMER IMAGING Z-LASER Z15M18S3-F-640-7L5
BUSAK & SHAMBAN RT0200300-T46N,30x40.7x4.2
Mecatraction DE 150-14
ATOS AQFR-32
Keller Type: 9703210045
TAS SCHAFER TAS 50-3071
Vahle 315050, VS 2
SCHNEEBERGER GmbH A20226020 SMA 30-SU
JUMO 201020/51-18-07-22-120/837,Teile-Nr.: 00300151
TECNA 60041600RS232
POGGI CA-36746 RPP? 20-RPP3-9 - 6F aus Alu
GEWES 4416-43-50/03x0300
WENGLOR HN33PA3
EnviroChemie GmbH 5866 ASIC DMD 250
Turck BMWS8151-8,5 ID:6904721
GSR 063.001735,A6324/1104/7105-VU
HASBERG 0.03*50*300MM
BREMER Transformatoren GmbH IGE100
ATR VM237
rohmann KA-2H-132.54.1
Contrinex DW-AS-503-M30-002
HEYD AH32-2H-50X45-02 / 27599
SIEMENS 6DD1688-0AE0
Bucher MAG-SP D36 24D 27W
Italvibras MVIS 15/400P-S90
SIEMENS 6SL3352-3AG37-4AA0
heidenhain 232714-02.
BICKER BEA-640
heidenhain LS 187C 940; 526974-09
CO PA 11 B 303T
Proxitron LLK4 ART Nr:6436I
BD sensor DMP 331P-500-1002-1-3-100-K31-1-0-2-200
BOSCH 258104002
Gemue 410 25D 7 1 41 OR
B&R 3TB170.91
MP Filtri MF-100-2-A10-H-B-P01
JBW S036057.0030.12
PILZ PNOZ X7 24VACDC 2n/o 774059
trumpf old type:915755;new type:1654928
PULSOTRONIC 9964-1565
Buschjost gmbH 8251080.9150.40050
keystone 10TG89
Eberspaecher 3-00341D02-01
STROMAG Typ.5 NE-452 FV Nr.150414
Wagner 3AC 5,1mH 10,8A NR:0216316
BICKER ELEKTRONIK GmbH BEA-640 400W/90-264V/PFC/ATX12V
Ahlborn Mess- und Regelungstechnik GmbH FKA013B01
LANICO 3-W337-004A166A Profil: F5114B30FS
BORRIES 322 Nr.100026495
parker P17B296NB**33-65/P11BBE**16-17 3339532005
EM-TECHNIK 1A100MN4014PP
HAHN+KOLB 23698010
LUBBERING GMBH T95111183 Sicopoint 9000
heidenhain ID.385480-05
Stenflex RS1-DN150/PN16/OU/ROT/BLAU/BL130MM
IFM PA3027
Desoutter 6151655160; EME40-180 OF
DEUTRONIC DXC3000/3-18
Mahle KE 2431 SMX VST 25
ROEMHELD 2954420
Murr MCS-B 5-110-240/24
WENGLOR RE8222BA
GUTEKUNST VD-429
BOEHLER UTP665 2.5*350mm (42.9KG)
Held AG DA12-SD (2XSD08)
Electramo ILSM160M-4 No.B00481
hydac ETS326-2-100-000
PMA KSVC-104-00341-U00
Contrinex DW-AD-702-M12-298
PAULSTRA 722507
SALTUS 3100200010,DSG-2,100NM
Rico-Werk DT30NF/3150
ADAPTRONIC NK000610
ADDA Type FC 112 M-6,2,2 kW, S1, IP 55 Serien-NR. A6003527
SCHMERSAL PROTECT-IE-02-SK
KENNEDY KEN2551100K
ARI ARI-PACO 0,85kN Art-Nr: 910900000G191
ganter 543.3-23-G1
microsonic crm+130/IU/TC/E ,NO:29320
Fibro 206.71.019.045
Rexroth R909890143 PVR 24F/11
SCHUNK 39371092 PGN-plus 64-1-AS-V
MESSKO 67003-00-001
HASBERG 0.3*100*500MM
SCHMERSAL AZM300B-ST-1P2P-A
Murr 27867
SIEMENS 6SL3352-3AG31-2AA0
brinkmann STA404/350+001
Hawe AL21D10VM1-C240/260-2
WINKEL W2R 600.10.R.R8.E12 Anwendungsrichtung: vertikal nach unten
Rotronic HC2-S
RITTAL 3301570
Windows CE流接口驅動程序模型要求驅動程序*編寫10個接口函數,針對光電編碼器的驅動主要應完成設備初始化和數據讀取2個函數的編寫。WindowsCE設備文件名前綴由3個大寫字母組成,操作系統使用這3個字母來識別與流接口驅動程序相對應的設備。這里定義設備文件名前綴為“OED”(OptICal Encoder),其中設備初始化函數OED_Init()在Windows CE裝載驅動程序時用于創建中斷事件和中斷服務線程。在函數OED_Read()中將光電編碼器的狀態(OED_Status)返回。
3.4 封裝驅動程序并加入到WinCE中
根據上述方法編譯出動態鏈接庫(DLL)還不夠,因為它的接口函數還沒有導出,還需要告訴鏈接程序輸出什么樣的函數,因此必須建立一個后綴名為def的文件。在本設計中為OpticalEnccder.def。下面是此文件的內容:
一個具體的流接口驅動程序和注冊表是密不可分的。向WinCE內核添加注冊表項的方法有兩種:一種是直接修改Platform Builder下的reg文件;另一種是自己編寫一個注冊表文件,通過添加組件的方法將動態鏈接庫文件添加到內核中。這里用第2種方法,將OpticalEncoder.dll添加到內核中。編寫的注冊表文件內容如下:
zui后編寫一個CEC文件,完成對定制內核注冊表部分的修改并將OpticalEncoder.dll添加到系統內核中去,然后在Platform Builder中就可以直接添加已經編寫好的驅動程序了。
結語
本文主要介紹了光電旋轉編碼器的原理及應用方法,并詳細介紹了WinCE驅動程序的結構,成功地開發出了光電編碼器在嵌入式操作系統WinCE下的驅動程序。實驗證明,該方法正確可行,程序運行穩定可靠。
parker P2M2V4EE2CV
MOLLA MOLLA COMPR.D12320 ACCIAIO DIM
Sommer MFS103KHC87
Phoenix 2964186
SCHNEIDER 880005-M
PILZ PNOZ X2P 24VACDC 2n/o,777303
ABNOX 3755000 MURALT AX-II
Jokab 2TLA030054R0100
SCHROFF 10713099
Stoerk ST48-WHDVM.04FP
hydac EDS344-3-250-000
Leuze LVSR 325K/P-402-S8 50081301
L+B GEL2443Y036
RICKMEIER 421492 RSNE1.1/2 SAE
Camozzi 10-1780-040301 27M2A25A0040S01
SNR DIV BGXH25BESSNZ2-N
Murr 8000-80010-3840300
ELECTRONICON 276.173-502301/221108
Stuewe AS-25-22x24xA
SCHMERSAL IFL 10-30L-10TP
PMA TB40-102-0000E-D00
ATOS DLOH-2C/NPT-AO 24VDC 22/BT
SIKO AP04-0045
Rexroth 820038602
weishaupt 402387
ETA Y 307 016 11
E-T-A ESX10-S103-DC24V-1A-10A
Bucher RVE-G-04-03-D06
MAX MueLLER AG fibroLUX5035 NR.43601+NR.70012+NR.04493,004+NR.70042
wago 750-626
HASBERG 0.04*50*300MM
Block PVSE 400/24-40
waldmann RL70CV-136 1X36W/230V/50HZ/IP67
legrand Nr.080299
tecsis GmbH TEP11X121814
Honsberg VFR-008-GM-013
Eltex KA / RR100
ENERPAC STLS-92
ATOS SP-COU-24DC/80
TOX 104858
Bucher ELVAL SRE817/22-TV/23-HC
RSF Elektronik Ges.m.b.H MS20.04-2M
Mahle D-satz/Seal kit PI 2015-2045 NBR Nr.77550221
ROTEX 20421000042
Sea-Land ONDINA 60 NCA2F
Phoenix TT-2-PE- 24DC - 2838186
Honsberg HD1K-020GM010
PULSOTRONIC KJ4-G8-MB35-X0303,Nr.:9912-0010
BLEICHERT 1.40.304.1
SIEMENS 6SY8102-0GC30
DANFOSS MBS3100-2411-6BB04, (0 -25 bar, relativ) Art.-Nr. 060G1467
GEA HG 34/11.5/5.8-5 POS,DLT0895240
ROLAND ELECTRONIC GmbH P42AGS
Contrinex LLK-1180-000 620-200-541
Beck 930.8022251
Hawe VZP 1G 22-X 24
BRECOFLEX 25 T10/2500 NR9510025000016
coax Art.-Nr.541223 KB15NC
Turck TNSLR-Q42TWD-H1147 7030424
Guehring 4209 10,063
Rexroth 5772555302 CD04-3/2NC-SR-NONE-I-G018-G018
Cantoni TYP:90S-2
Stoerk TF K 6x100mm 0/600°C an Spitze 3m
JASTA GD-6 E/S DN600 PN6
Hagglunds R928006809.
Hawe G3-1-A24
SANKYO SWE50.20.20
Contrinex DW-AS-523-M8
hydromec P050FB03CORB3
hydac 2600 R 010 BN4HC/-KB 263073
RAFI GmbH & Co. KG 1.30.074.281/0300
ASM WS1.1-500-10-PP530-KAB
Phoenix 2941714
TEKAWE GmbH SCS 250 CCM
heidenhain 0.25m cable ID:535046-N2
ETA 17PLUS-Q02-00
TER CESKA s.r.o. PRSL1003PI
DELTA SM35-45
SIEMENS 6SL3350-6TK00-0EA0
Gemue 817 40D 72114 169 5000
ROTEX Zahnkranz 42/92
HBM K-WA-T-050W-32K-K1-F1-2-8+D-MONT+2-9278.0379
INTORQ BFK458-16E
Rexroth 830100630
SALTUS DSG-1, 25NM,NO:8439000209
Verder 139.0012
mpfiltri MR6304A10AP01
SCHUNK 9641211
PAULY PLG4761210216/39/3/60x30/-/20/14E i/1stM10
SCHUNK IN 80-S-M8 0301478
Phoenix Nr.2320102 QUINT-PS/24DC/24DC/20
RC Kalle GmbH Reipo - Reinigungs- und Polierpaste 1 kg
Rexroth R412006200
Murr 8000-80010-3840300
sunfab 20108
heidenhain APK 01 ID:547300-06
relay Master MR003 USB
wago 750-651/006-000
Kral AG(Volumeter) OMG20.700044(0.3..30 l/min,PNP)
SCHUNK PSH 42-2 Nr.0302143
Bosch Rexroth 820055601
Aris Nano M 40-60 Nr.VA03.00002
FLUID-TEAM ZEPDR3-06-115-1-24V
SWEP B25THx30/1P-SC-S 4x1" 3924-030
Staubli RBE06.6150
heidenhain ERN 1387 2048 ID:749147-02
Spieth MSA35×1.5
Leybold 252014V01
Vulkoprin Deutschland GmbH & Co. KG VK.TP 85/86,5/6204 ZZV/EL=89 VKTK085865020V
Fibro 223.3.0120.080
FILTON FILTON Roto-Speisekopf 17422 Artikel-Nr.: S1171/6 LH
Vossen PTB0-03
IPF OS126020
Rauh SL2TE25/2TE 25-2200-DKOL-DKOL
IFM PN 2021
TUCKER M068 015
Spieth MSR 35.1,5
Murrelektronik 7000-41121-0000000
SITEK SAJ120
Zimmer-automation NR98
brinkmann SFL1850/440-W9MVX+378
Hasco Z 48705/ 4
ganter 6336.4-TE-63-M12-50
Hoentzsch NT SN.:A000/560
SCHUNK MMS 22-S-M8-PNP Nr.0301032
DENISON R5V08 513 12 A1
Dieter Kriz Sensortechnik IN5-18HTPS
HBM K-C9C-01K0-05M0-Y-S
Phoenix PSI-MOS-DNET CAN/FO 850/BM - 2708083
ALTHEN ALF210CFR0K0-15kN
tuenkers 264650
ATOS E-ATR-7/100/I
pall HC2296FKS18H50
DELTA SM35-45..
SAUTER 58082
heidenhain 533631-03
MOOG GmbH D662-4014/D01JABF6VSX2-A
hydac 2600 R 003 BN4HC
Vahle PAD-K 20 PH (241035165),NO:2820969/00
PARVEX F9T 57270
ATOS JPQ-312
SMW UGE 20 Nr.087414
GJC 5025000 calibrated at 0.5&1.0 ml/min
STAHL 9170/10-12-11
CEAG GHG 511 4306 R 0001
Sommer BGUM020600
geta TX-5114
B&R 7DI138.70
Ahlborn Mess- und Regelungstechnik GmbH FPA10L0100+OPK01L0050+OPG10
SERTO SO-42521-12-1/2
Hultafors Group AB (HQ) 407401 Schienen für Libella 2000, 1800 mm
PILZ PSEN cable M8-8sf, 5m 533151
HEGENSCHEIDT 1014562-4
Staubli MPX06.1101/JV
BAUER GBR56/1-A4 (C915) Nr. 68138100
weidmueller SAI-6-S 5P M12,9456010001
fischer DE505641B91E
Keller LE01/-1~30bar
Mayr 7033251,899.000.02
BB01025
binder 8661114H00-0021
Murrelektronik GmbH 7000-08381-0000000
hydac KHB-38SR-1112-01X-SW14
Phoenix NR:2320157
BALLUFF BTL5-E17-M0065-J-DEXB-K05
INFRAPOINT Fühlerverl?ngerungskabel 5 m lang
kaiser DNK 100L/2sFI
Walther SERIE SP-009-0-SL013-21-1
Kemkraft 435-1011-566
kistler 9103A
EPCOS B25667C3497A375
BALLUFF BCC05F9 BCC M415-0000-1A-003-EX44T2-050
Staubli REA13.9022.30,18.3011
hydac EDS 348-5-016-000 + mit ZBE08
SBA-TrafoTech GmbH 168-0125
Baumer NR:11002638
ETA SB-S11-P1-01-1-1A
Rexroth R900426993 ZDR 6 DA7-43/75YM
Murrelektronik GmbH 51120
CT CTM4-14.3-20R.94-5F6
Murr 7000-44511-7960200
GJC 5025000 calibrated at 1.0 ml/min
LIEDTKE FAT 120
BALLUFF BCC M415-M414-3A-304-VX44T2-030
wago 750-602/006-000
Phoenix VS-MSD-IP20-93E/1,0 - 1403498
Rexroth 822344010
Bartec 05-0003-000900
heidenhain 511395-03 ST1277 TTL*5 100KHZ
Dopag 402.25.19
Sommer GULG26300
HAHN+KOLB 50540359
Phoenix NBC-R4RC/10,0-93B/R4RC Nr.1408976
GEDRUCK PTX5072-TC-A1-CA-H0-PA, 0-10 bar gauge
RK Rose+Krieger GmbH FNA5023TA0145
BALLUFF BCC M415-M414-3A-304-VX44T2-050
CENTA Antriebe Kirschey GmbH 10341130 CF-X-016-0G L=1562MM d1=48mm d2=45mm 14*3.8mm Der Preis ohne die beiden Naben (Pos. 4 und Pos. 6
Murr 7000-12241-2550500
W. GESSMANN S14LM-01ZC-A05C64
NELSON 66-07-77
heidenhain 0.25M Adapter cable Nr.607720-N2
Bartec 07-2951-4330/10(3m cable) Nr. 103364
THIEDE 9-4086.1
HALDEX GPA2-16-E-30R
norelem 03140-07
ROSS RESK5207.0
Huebner FG 40 K-1024G-90G
parker SCP01-400-24-07
OMAL D415A069
kistler 9133B21
Doedijns International B.V ACL93R
poeppelmann GPN 700 M 8 x 1
B&R Industrie-Elektronik GmbH X20CDO9322
Staubli RME16.1154/JV
Phoenix SAC-5P-M12MS/ 0,5-920/M12FS - 1507531
SOCLAIR RTM80D
Phoenix 1607685
KUEBLER 8.5000.8358.1024
heidenhain APK 02 ID:310128-03
Phoenix SUBCON-PLUS-PROFIB/90/IDC - 2313672
Woerner VOE-B/2/2/7/7/P
HIGHYAG Lasertechnologie GmbH 39-99-00-0205
CAPTRON CHT3-151P-H/TG-SR
Contrinex DW-AS-503-M12
Honsberg HD1K-020GM020
Honsberg UM3K-015GM070
Ahlborn Mess- und Regelungstechnik GmbH MA25904S
Rexroth 5750020002
ARGO-HYTOS GMBH 3.36142E+11
Rose+Krieger 90915
heidenhain 511395-03 ST1277
Keller 8000225868
Bonfiglioli BMD65-1,7-3000-400 75 11
Turck Nr.6905407 HA8141-0
Schweizer DF-1341
SSB BFSDP-0311.06267.00
Vahle SK-DSW2/40-04-14-FN 0168151/00
schmalz 10.01.06.00940
binder 8661114H00-0021
Rexroth 4WE 6 D62/EG24N9K4
Barksdale 9653-1-WA Art.Nr.:0406-041
Novotechnik MUP-110-1
Honsberg HD1KV-020GM025
Haug 05.8801.007
emecanique Type:XSE-C1071334
PILZ Nr.774709 PNOZ X10 24VDC 6n/o 4n/c 3LED
Murrelektronik GmbH 4000-68223-0000000.
Martor 69111.0 0
Mahle PI 1710/ 9 Snr: 77661671
VIBRA MASCHINENFABRIK VST 6-230-36
您感興趣的產品PRODUCTS YOU ARE INTERESTED IN
智慧城市網 設計制作,未經允許翻錄必究 .? ? ?
請輸入賬號
請輸入密碼
請輸驗證碼
請輸入你感興趣的產品
請簡單描述您的需求
上傳附件
請選擇省份