Bilgisayar Donanımı Paralel Port 16 B İLG İSAYARLI KONTROL Özcan PARALEL PORT 2.1 PARALEL İLETİŞİM Bir verinin alıcıya gönderilmesi sırasında, verinin her bir biti için ayrı bir hat kullanılıyor ise, bu ileti şim yöntemine paralel ileti şim denir. Şekil 2.1’de paralel ileti şim yöntemine uygun olarak iki birim ba ğlanmı ştır. Şekil 2.1’den görüldü ğü gibi , verici ile alıcı arasında , aktarılacak veri içindeki bit kadar hat bulunmaktadır. Ayrıca veri hatlarına ek olarak AL ve HAZIR ba ğlantıları aynı şekilde görülmektedir. Bu ba ğlantıların gerekçesi şöyle açıklanabilir : Verici birim gönderece ği veriyi çıkı şında hazır etti ğinde, aynı veri alıcının giri şinde de olu şur. Ancak bu durumda alıcının haberi olamaz. Yani verici, alıcıya verileri ileti şim yolu üzerinde hazır etti ğini alıcıya söylemelidir. Bunu al ba ğlantısını uygun lojik koruma getirerek alıcıya söyleyebilir. Birbirine ba ğlı birimlerinin çalı şma hızları aynı olması beklenemez. Sözgelimi , verici bir bilgisayar ile alıcı bir yazıcı ise , vericinin hızı do ğal olarak alıcıdan çok çok fazladır. Bu nedenle , verici, bir veri göndermeden önce , alıcının bu yeni veriyi alıp alamayaca ğını sormak durumundadır bir ba şka deyi şle “alıcı bir evvelki veri için yapması gerekenleri yerine getirmiş ve bir yeni veriyi almaya hazır mı ? “diye sormak durumundadır. Bu amaçla , alıcıda bir çıkı ş mevcuttur. Şekil 2.1’de bu çıkı ş hazır çıkı ş olarak belirtilmi ştir. Şekil 2.1:Paralel ileti şim için ba ğlanmı ş iki birim VER İC İ ALICI V7 V0 HAZIR AL BÖLÜM 2 17 B İLG İSAYARLI KONTROL Özcan HAZIR ve AL uçları, farklı isimlerde de anılmaktadır. Sözgelimi AL için ı şıldak ve hazır için ters anlamda ME ŞGUL kullanılmaktadır. İki birim arasındaki ileti şim düzenli bir biçimde akıp gitmesini sa ğlayacak olan bu ba ğlantılara El Sıkı şma ba ğlantıları kullanılarak gerçekle şen ileti şime de el sıkı şmalı ileti şim veya el sıkı şma protokolüne göre ileti şim denilmektedir. Paralel ileti şim, iletilen verinin her bir biti için bir hat gerektirmesi nedeniyle, genellikle kısa mesafelerdeki ilet, ileti şimler kullanılır. Örne ğin bilgisayar ile disk, yazı veya analog/ dijital çevirici arasında kullanılır mesafenin artması durumunda ise kablo masraflarını azaltmak amacıyla seri ileti şim ye ğlenmektedir. Paralel ileti şim , iletilen verinin her bir biti için kullanılır. Örne ğin bilgisayar ile disk, yazıcı veya analog /dijital çevirici arasında kullanılır. Mesafenin artması durumunda ise , kablo masraflarını azaltmak amacı ile seri ileti şim ye ğlenmektedir. Paralel ileti şim , her veri bitini bir hat üzerinden aktarması ve kısa mesafelerde kullanılması nedeniyle , hızlı veri aktarımı için uygun bir yöntemdir. 2.2 PARALEL PORT TEMELLER İ IBM PC’ nin Paralel Port’ u, PC’nin ı/o haritasında , 3 tane pe ş pe şe 8 bit port adresi ile eri şilen, toplam 12 sayısal çıkı şı ve 5 sayısal giri şe sahiptir. Bu giri ş ve çıkı ş a şa ğıdaki gibi hesaplanır: 8 çıkı ş ucu DATA port’u ile eri şilir. 5 giri ş ucu(bir tanesiterslenmi ş-inverted)STATUS port’ u ile eri şilir. Geri kalan 8 uç topraklanmı ştır. 4 çıkı ş ucu CONTROL portu ile eri şilir. A şa ğıda şekil 2.2’de 25 uçlu di şi D tipi konnektörlü paralel port gösterilmektedir. Şekil 2.2 25-uçlu di şi D-tipi konnektör İlk IBM PC’ deki Paralel Port’ tan sonra, de ği şik geli şmi ş port yapıları üretildi. Bunlar : İki yönlü (PS/2) Geli ştirilmi ş paralel port (Enhanced Parallel Port-EDP) 18 B İLG İSAYARLI KONTROL Özcan Geli ştirilmi ş Kapasiteli port (Extended Capability Port-ECP) İlk orijinal Port genellikle Standart Paralel Port (SPP) olarak adlandırılır. Yeni Paralel port’ lar, 1994 yılında IEEE 1284 standardı ile bir standart yapıya kavu şmu ştur. Bu standart 5 çalı şma modu sa ğlar: 1. Uyumluluk(compatibility) modu. 2. 4’lük(Nibble) modu. 3. Byte modu. 4. EPP modu(Enhanced Paralel port). 5. ECP modu(Extended capability port). Bu standarttaki amaç , birbiriyle ve SPP ile uyumlu yeni sürücüler ve cihazlar tasarlanmaktadır. Uyumluluk , 4- lük ve byte modları , orijinal paralel port kartlarında bulunan standart donanımı kullanmasına kar şın , EPP ve ECP modları , daha hızlı çalı şan aynı zamanda SPP ile uyumlu olan ek donanım gerektirir. Bu donanım ile gerekli olan el sıkı şma (handshake)sinyali üretilir. Uyumluluk modu veya yaygın olarak bilinen “Centronics modu” vericiyi sadece ileri yönde , tipik olarak saniyede 50 K Byte kadar da olabilir. Hız saniyede 150 K Byte kadar da olabilir. Veri almak için , çalı şma modu , 4- lük veya Byte moduna de ği ştirilmelidir. 4’lük modunda , ters olarak port’ tan 4-bit giri ş yapılabilir. Yani bir dı ş cihazdan bilgisayara veri okunur. Byte modunda , paralel port’ un (sadece bazı kartlarda bulunan )iki yönlü özelli ğini kullanarak 8 bit veri giri şi yapılır. Uyumluluk modunu kullanarak bir yazıcıya (veya benzeri herhangi bir cihaza ) bir byte göndermek için: 1. Veri portuna byte yazılır. 2. yazıcının me şgul olup olmadı ğı , BUSY giri ş sinyali ile kontrol edilir. E ğer yazıcı me şgul ise , veri kabul etmez ve yazılan veri kaybolacaktır. 3. STORE ucu (1 numaralı uç) dü şük seviyeye getirilir. Bu sinyal yazıcıya veri hatlarında (2-9) uçları veri oldu ğunu söyler. 4. STORE sinyali dü şük yapıldıktan sonra , yakla şık 5 mikro saniye beklenerek , tekrar yüksek seviyeye getirilir. Yukarıda anlatılan i şlem adımları portun çalı şma hızını s ınırlar. EPP ve ECP portlarında , yazının me şgul olma durum kontrolü ve gerekli e şzamanlılık sinyallerin üretimi donanım tarafından yapılır. Yani port haberle şmesinde sadece bir I/Q komutu kullanılarak bu şekilde hız arttırılır. Bu partlar sanyede 1-2 mega byte çıkı ş sa ğlayabilir. ECP port’ u DMA kanalları ve FIFO bufferl ’ları kullanma avantajına sahiptir. Bu sayede I/O komutları kullanılmadan veri akı şı sa ğlanır. 2.2.1 PARALEL PORT S İNYALLER İ Tablo 2.1’de D-tipi 25 uçlu konnektör ve Centronics 36- uçlu konnektör uçlarını göstermektedir. D-tipi 25 uçlu konnektör, bilgisayarın paralel portunda , Centronics konnektör ise genellikle yazıcılarda bulunan en yaygın konnektördür. 19 B İLG İSAYARLI KONTROL Özcan Tablo 2.1’de SPP sinyali sütundaki 4 sinyal için “ *” i şareti kullanılmı ştır. Bu i şaret donanım tarafından tersleri alınan (“hardware inverted”) sinyalleri gönderilir. Bu sinyaller paralel port’ un donanım tarafından tersleri alınarak yorumlanır. Örne ğin BUSY ucuna +5V(lojik1) uygulanır ve durum port’ u okunur ise , durum saklayıcısının 7 numaralı bit’ i lojik 0 olur. IEEE 1284 standardı paralel port ile kullanılmak üzere 3 farklı konnektör tanımlamaktadır. İlk 1284 Tip A standardı, birçok bilgisayarın arkasında bulunan, D- tipi 25-uçlu konnekterdür. İkincisi 1284 Tip B, birçok yazıcıda 36 uçlu centronics konnektördür. Tablo 2.1 D-tipi 25 uçlu paralel port sinyalleri Uç No (25- uç) Uç No (Cent.) SPP Sinyali Yön (in-out) saklayıcı Açıklama 1 1 STROBE* ın/out control Normalde 1'dir.0'da okuma yapılır. 2 2 Data 0 out data 8-bit port vericisi. 3 3 Data 1 out data 4 4 Data 2 out data 5 5 Data 3 out data 6 6 Data 4 out data 7 7 Data 5 out data 8 8 Data 6 out data 9 9 Data 7 out data 10 10 ACK In status veri alındı ve yazıcı veriye hazır. 11 11 Busy* In status yazıcı veri almaya hazır de ğil 12 12 paper empty In status ka ğıt bitmi ş. 13 13 select In status yazıcı seçili durumu. 14 14 AUTO FEED* ın/out control basmadan sonra ka ğıt otomatik olarak bir satır beslenir. 15 32 ERROR In status ka ğıt sonu,yazıcı kapalı veya bir hata döndürür ise. 16 31 INIT ın/out control yazıcı sıfırlanır. 17 36 SELECT PTR SELECT -IN ın/out control 18 - 25 19 - 30 Ground Gnd IEEE 1284 Tip C, centronics gibi 36-uçludur fakat daha küçüktür ve daha iyi elektriksel ve fiziksel özelliklere sahiptir. Bu konnektör, di ğer cihazın ba ğlı olup olmadı ğını ve gücün oldu ğunu gösteren sinyaller için iki ek uca sahiptir. Paralel Port’ un çıkı şı TTL lojik seviyesindedir. Port ’un akım çekme ve sürme kapasiteleri bilgisayardan bilgisayara de ği şir. ASIC olarak gerçekle ştirilmi ş birçok port, 12 mA akım çekme ve sürme kapasitesine sahiptir. Bununla beraber, 4mA, 20 B İLG İSAYARLI KONTROL Özcan 6mA, 16mA ve 20mA kapasitelerinde port’ lara sahip bilgisayarlarda bulunur. En iyi pratik bir kural, paralel port kullanırken, port’ tan az akım çekmek için, bir buffer devresi kullanmaktır. 2.2.2 YAZICI S İNYAL D İYAGRAMI Centronics, bilgisayardan bir yazıcıya veri transfer etmede eski bir standarttır. 0Yazıcıların bütün bir ço ğunlu ğu bu standardı kullanır. Bilgisayar ve yazıcı arasındaki el-sıkı şma(hand-shake) centronics sinyallemesi, bir standart paralel port kullanarak yazılım kontrolü altında yapılır. Şekil 2.3’te basitle ştirilmi ş ‘centronics’ protokolünün sinyal diyagramını göstermektedir. Centronics protokolünde önce, 8-bit veri, paralel port’ un uçlarına (2 ile 7 arasındaki uçlara) uygulanır. Daha sonra, bilgisayar, yazıcının me şgul olup olmadı ğına bakar. Yazıcıdan gelen BUSY hattı dü şük olmalıdır. Program sonra, STROBE sinyalini dü şük seviyeye getirir ve en az 1 µs bekler. Daha sonra bu sinyal pasif yani lojik 1 yapılır. Normalde veri, yazıcı veya dı ş cihaz tarafından, STROBE sinyalinin yükselen kenarında okunur. Yazıcı veriyi i şlemekle me şgul oldu ğunu, BUSY sinyalini lojik 1 yaparak belirtir. Yazıcı veriyi kabul ettikten sonra, bu durumu ACK sinyali ile yakla şık 5 µs süreli bir negatif darbe üreterek bilgisayara haber verir. veri STROBE BUSY ACK Şekil 2.4 Centronics protokolü el- sıkı şma sinyal diyagramı Genellikle bilgisayar ACK sinyalini zaman kazanmak için ihmal eder. Örne ğin, ECP port’undaki hızlı centronics modunda, el-sıkı şma i şlemleri donanım tarafından yapılır. Programcının bütün yaptı ğı I/O port’una veriyi yazmaktır. Donanım yazıcının hazır olup olmadı ğını kontrol etmekte ve di ğer gerekli sinyalleri üretmektedir. Bu modda ACK sinyalide kontrol edilmez. 21 B İLG İSAYARLI KONTROL Özcan 2.2.3 PARALEL PORT ADRESLER İ Bir PC’ de bulunan her bir paralel port, tane port adresine sahiptir. Bu adreslere kar şı gelen port’ lar veri, durum ve kontrol port’ larıdır. Veri port’ unun adresi taban, yani ilk adres olup di ğerleri bu adrese göre sıralanır. Örne ğin, e ğer bir bilgisayarda paralel port’ un ve dolayısıyla veri port’ unun adresi 378h ise, ilgili durum port’ u 379h’da ve kontrol port’ u 37Ah’dir. Tablo 2.2 PC paralel port atamalarını göstermektedir. Tablo 2.2 PC Paralel port adres atamaları. Yazıcı Veri(R/W) Durum(R) Kontrol(R/W) Açıklama LPT1 LPT2 LPT3 3BCh 378h 278h 3BDh 379h 279h 3BEh 37Ah 27Ah Video kartlardaki portlarda kullanılır. Ayrıca portlar için di ğer bir seçenektir. Genellikle LPT1 olarak kullanılır. Genellikle LPT2 olarak kullanılır. Tablo 2.2’de LPT1 için verilen 3BCh adresi , PC ’lerde ilk video kartlardaki paralel Portlar’ dan kullanıldı. Daha sonra video kartlardan Paralel portlar çıkarıldı ğından, bu adres bir süre ortadan kalkmı ştır. Şimdi bu adres tekrar Paralel Portlar için bir seçenek olarak tekrar ortaya çıkmı ştır ve ayarı BIOS tarafından de ği ştirilebilmektedir. 378h ve 278h adresleri genelde Paralel Portlar için kullanılmı ştır. Normalde LPT1, LPT2, LPT3 ve LPT4 sembollerini atar. İşletim sistemi (BIOS) ilk önce 3BCh adresine bakar. E ğer burada bir paralel port bulunur ise , LPT1’i bu Porta atar. Daha sonra , 378h adresine bakar. E ğer bu adreste bir paralel port bulunur ise , bir bir sonraki kullanılabilir cihaz sembolünü atar. Bu e ğer daha önce 3BCh adresinde port bulunmamı ş ise LPT1 , bulunmu ş ise LPT2 olur. En son port aramadaki adres 278h aynı şekilde belirlenir. Bu yüzden LPT2, umulan adresi 278h yerine 387h adresinde de bulunabilir. Herhangi LPT port’ una BIOS tarafından atanmı ş adresi ö ğrenmek için , BIOS tarafından belirlenen , Tablo 18.3’te görülen adres Tablosu kullanılabilir. Her bir yazıcı için hafızada belli bir alan kullanılır. BIOS veri alanındaki LPT4 için olan adres , PS/2 ve yeni Bıos’ larda farklı amaçla kullanılabilir ve bu yüzden bu alan geçersiz olabilir. Tablo 2.3. LPT için BIOS I/O adres atamaları. I/O Adresi LPT 0040 :0008 -- 0040 : 0009 0040 :000A – 0040 : 000B 0040 :000C – 0040 : 000D 0040 :000E – 0040 : 000F LPT1 LPT2 LPT3 LPT4 22 B İLG İSAYARLI KONTROL Özcan Bir bilgisayardaki Paralel Port’lara atanmı ş olan adresleri ö ğrenmek için de ği şik yöntemler vardır. Örne ğin , sistem ayarlarına bakılarak adresler ö ğrenilebilir. A şa ğıdaki örnekte, DOS debug programı ile 0040 :0008 adreslerine bakılarak LPT atamaları ö ğrenilmektedir. >debug -d 0040 : 0008 L8 0040 : 0008 78 03 78 02 00 00 00 00 Yukarıda verilen örnekte , LPT1 378h ve LPT2 278h adreslerine atanmı ş olup LPT3 ve LPT4’e bir atama yapılmı ştır. Yukarıdaki örnek için adres atamaları Tablo 2.4 ‘te gösterilmektedir. Tablo 2.4 .Bir bilgisayarın Paralel Port adres atamaları. Yazıcı Veri Port’ u Durum Port’ u Kontrol Port’ u LPT1 LPT2 LPT3 LPT4 378h 278h Yok Yok 379h 279h 37Ah 27Ah A şa ğıda verilen örnek C programı ile , yazıcı port’ ları için BIOS tarafından atanan adresleri nasıl okuyabilece ğimiz gösterilmektedir. #include #include void main(void) { unsigned int far *ptr_addr; unsigned int adres; int i; ptr_addr =(unsigned int far * ) 0x00000408; for ( i=0 ; i<4; i++) { adres = *ptr_addr; if (adres ==0) printf( *lpt%d için Port bulunmadı \ n”, i+1); else printf(“LPT%d için atanan adres % xh\n”, i+1, adres); *ptr_addr++; } } 23 B İLG İSAYARLI KONTROL Özcan Yukarıdaki verilen C programı, daha önce debug programı ile paralel port bulunan bilgisayarda çalı ştırıldı ğında a şa ğıdaki çıkı ş elde edilir. LPT1 için atanan adres 378h LPT1 için atanan adres 278h LPT3 için port bulunamadı LPT4 için port bulunamadı Şekil 2.5‘ te Paralel Port’ taki, veri durum ve kontrol port’ ları nın sinyal atamaları gösterilmektedir. Kontrol Port’ unun D5 DIRECTION bit ’i extended(ECP) modunda kullanılır .Bu mod, veri bitleri D7-D0’ın iki yönlü veri yolu olarak kullanılmasını sa ğlar. Her PC bu çalı şma modunu desteklemez. A şa ğıda bir paralel port’ ta bulunan veri, durum ve kontrol port’ ları sırasıyla açıklanacaktır. a) Veri Port’ u Paralel Port’un taban adresi , genellikle veri portu veya veri sakl şayıcısı olarak adlandırılır.Bu port2tan dı şarıya normalde çıkı ş yapılır.E ğer port’tan bir okuma i şlemi yapılır ise , en son gönderilen byte okunur. E ğer port iki yönlü ise, okuma i şlemi ile dı ş dünyadan bir veri byte’ı okunur. Şekil 2.5 Paralel port’ un veri , durum ve kontrol portları. Şekil 2.5 Paralel port’ un veri , durum ve kontrol portları. b) Durum Port’ u Taban adresinden sonra gelen Durum(status) Port’u sadece okunabilir bir port’tur. Bu pert’a yazılan veri ihmal edilir.Durum port’u 5 giri ş hattı (10, 11, 12, 13 ve 15 numaralı uçları), bir IRQ durum saklayıcısı ve iki ayrılmı ş bitten olu şur. 0 7 D0 D1 D2 D3 D4 D5 D6 D7 0 7 Ayrılmı ş Ayrılmı ş IRQ ERROR SELECT PE ACK BUSY 0 7 STROBE AUTOFEED INT SELECT IN IRQ Enable DIRECTION Ayrılmı ş Ayrılmı ş Veri Port’u Durum Port’u Kontrol Port’u 24 B İLG İSAYARLI KONTROL Özcan c) Kontrol Port’u Taban adrese 2 eklenmesi ile adresi belirlenen Kontrol port’ u , sadece yazılabilir port olması dü şünülmesine ra ğmen , bu port’ tan okuma yapmakta mümkündür. Paralel port!a bir yazıcı ba ğlandı ğı zaman , 4 kontrol sinyali kullanılır. Bunlar strobe, Auto Line Feed, Intialize ve select printer sinyalleridir. Bu 4 çıkı ş sinyali aynı zamanda giri ş sinyali olarak kullanılabilir. Bu portlar “open colllector”(veya CMOS cihazları için “open drain “) çıkı şlara sahiptir Yani çıkı şlar iki duruma sahiptir, dü şük durum(0V) veya yüksek empedans durumu (açık devre). Kontrol port’ undaki bit 4 ve 5 kontrol için kullanılır. Bir 4 IRQ ‘yu ve bit 5 iki yönlü çalı şmayı aktif eder. İki yönlü port çalı şması , ancak bilgisayar Paralel port’ unun bunu desteklemesi ile olur. Bit 6 ve 7 ayrılmı ş olup bu bitlere yazma ihmal edilir. 2.2.4 İK İ YÖNLÜ PORT’ LAR Şekil 2.6’da verilen devre paralel port veri saklayıcısının basitle ştirilmi ş yapısını göstermektedir.PC’deki ilk orjinal paralel port’un gerçekle ştirilmesi , 74LS Lojik devre elemanları ile yapılmı ştır. Bu günlerde bu devreler bir ASIC içine yerle ştirilmesine ra ğmen çalı şma prensibi aynıdır. Şekil 2.6 Standart paralel port’ ta iki yönlü çalı şma 25 B İLG İSAYARLI KONTROL Özcan İki yönlü olmayan port’ lar , üretildiklerinde , 74LS374 çıkı ş aktif (Output Enable) OE giri şi sürekli olarak dü şük yapılarak , Veri port’ u her zaman çıkı ş olur. Böyle bir port’ un veri port’ undan bir okuma i şlemi yapıldı ğında , veri çıkı ş veri uçlarına ba ğlı olan 74LS 374 okuma sırasında aranan kaldırılırsa iki yönlü port elde edilir. İki yönlü port’ lar , Kontrol saklayıcısının 5 numaralı bit’ ini , 74LS37 çıkı ş aktif OE kontrolünde kullanılır. Bu bit OE giri şine ba ğlıdır.74LS374 bu bit ile pasif yapılarak , 74LS374 çıkı ş sürücülerinin Paralel Port’ un dı ş uçlarıyla ba ğlantısı kesilir. Bu yöntem ile , yol çatı şmaları ve fazla akım dalgalanmaları olmadan , Paralel Port’un uçlarında okuma yapılabilir. Kontrol Port’ unun 5 numaralı bit’i Paralel Port’ un iki yönlü çalı şmasını aktif veya pasif yapar. Bu çalı şma sadece gerçek iki yönlü portlar için bulunur. Bu bit Lojik 1 yapıldı ğında , paralel port’ un 2 ile 9 numaralı uçları yüksek empedans durumuna gelir. Bu durumdayken veri port’ undan veri, giri şi yapılabilir. Bu durumda veri port’ unu yazılan veri saklanır., fakat parlel port’ un veri uçlarına ba ğlanmaz. İki yönlü çalı şma modunu pasif yapmak için Kontrol Port’ unun 5 numaralı bit’ i Lojik 0 yapılır. Bütün Portlar yukarıda anlatılan şekilde çalı şmaz. Bazı portlasrda kontrol port’ unun 6 numaralı bit’ i ile iki yönlü çalı şma aktif yapılarak bit –5 iki yönlü çalı şma modu pasif yapılır. Farklı üreticiler iki yönlü çalı şma aktif yapılarak , bit 5- ile iki yönlü çalı şma modu pasif yapılır. Farklı üreticiler iki yönlü port’ ları de ği şik yöntemlerle üretir. E ğer iki yönlü port çalı şması yapılacaksa bir test cihazı ile port’ un iki yönlü çalı şma için uygun olup olmadı ğının test edilmesi gerekir. 2.2.5 PARALEL PORT’ TAN 8-B İT G İR İŞ E ğer paralel port iki yönlü çalı şma modunu desteklemiyorsa paralel port’ tan bir anda 9-bit’ e kadar veri giri ş yine yapmak mümkündür. Bunun için durum Port’ unun 5 giri ş hattı ve kontrol Port’ unun (open collectör’ lü) 4 giri ş kullanılabilir. Paralel Port yoluyla bilgisayara 8-bit veri giri şi yapmak için bir örnek devre şekil 2.7’de görülmektedir. Örnekteki paralel port giri şleri, daha sonra görülece ği gibi, programlamayı kolayla ştırmak için bu şekilde seçilmi ştir. BUSY Duruum Port’ unda bit 7’dir.Daha sonra azalan sırayla gelen bit’ ler ACK, PE ve SELECT, Durum Port’ unun en de ğerli yüksek 4-bit’ ini olu şturur. 26 B İLG İSAYARLI KONTROL Özcan Şekil 2.7 Standart Paralel Port’a 8-bit veri giri şi. Sinyallerin önündeki “*” i şareti, daha önceden de belirtildi ği gibi donanım tarafından tersleri alınan (“hardware inverted”) sinyalleri gösterir. Bu sinyaller paralel port’un donanımı tarafınsan teresleri alınarak yorumlanır. Örne ğin BUSY ucuna +5V (Lojik 1) uygulanır ve durum port’u okunur ise , durum saklayıcısının 7 numaralı bit’ i lojik 0 olur. Kontrol Port’ u dü şük dü şük de ğerli 4-bit’ i okumada kullanılır. Daha önceden anlatıldı ğı gibi , Kontrol Port’ u “open collector” çıkı şlara , yani yüksek empedans ve lojik 0, sahiptir. ADC 0804 gibi totem poele” çıkı şlara sahip bir cihazı do ğrudan Paralel Port’un bu 4-bit’ineba ğlarsak ve giri ş yüksek olur ve Port’ ta a şa ğıya (Lojik 0 )çekmek isterse bir yol çatı şmaları olu şur. Bu yüzden “open collector” çıkı şlı innverter’lar kullanılmaktadır. Yukarıda anlatılan yöntem her zaman gerekmeyebilir. Örne ğin Port’ a “pull up” dirençleri ile tek kutuplu anahtarlar ba ğlanacaksa , bu tür korumaya gerek yoktur. Ayrıca program ile kontrol Port’ una xxxx0100 yazılırsa , kontrol port’ undaki uçlar yüksek (Lojik 1)olur. Bu durumda da koruma gerekmeyebilir. Ancak yazılım ile bu ilk i şlem yapılmadan önce , dı ş cihaz paralel Port’ a ba ğlı ise bir problem ile kar şıla şılabilir. Şekil 2.7’deki giriş sinyalleri kullanılarak, paralel Port’ tan yapılacak giri ş i şlemleri için , önce bir program satırı ile Kontrol Port’ una xxxx100 yazılr. Bu i şlem bütün kontrol port’ undaki uçları yüksek yapar. Bu sayede giri ş verisinin Paralel Port uçlarını Lojik 0’a çekmesi mümkündür. outportb(CONTROL, inpotb(CONTROL) & 0xF0 | 0x004) ; Yukarıdaki i şlemlerden sonra , Durum Port’ undan 8-bit verinin yüksek de ğerli 4- bit’ini (Msnibble) okuyalım .Okunan verideki (MSn, ible) okuyalım .Okunan verideki MSnibble kısmı ile ilgilendi ğimiz için , sonuç 0xF0 ile AND’ lenir. Bu sayede Lsnibble temizlenir. 27 B İLG İSAYARLI KONTROL Özcan Data=(inportb(STATUS) & 0F0 ); / * read Msnible */ Okuna veri içinde BUSY giri şinin tersi alınmaktadır. Bunun düzeltilmesi gerekir ve bu i şlem daha sonra yapılacaktır. Şimdi 8-bitlik verinin Lsnible kısmı okunabilir. Bu 4-bit kontrol Port’ unun Lsnible kısmıdır. Data= data | inportb(CONTROL) & 0x0F) ; / * read Lsnible */ Bu kez port’un üst 4-bitlik kısmı ile ilgilenmedi ğimizden, bu kısmı AND i şlemi ile temizlemekkteyiz. Bu i şlemden sonra , iki byte , OR i şlemi ile birle ştirilir. Son i şlemden sonra a şa ğıda verilen bit düzeltme i şlemi yapılır. Data= data ^ 0x84; /*Bit 2 ve 7’nin terslerini al */ Yukarıda XOR i şlemi yapılarak bit 2 ve bit 7’nin tersleri alınır. Bazı kontrol port’ ları “open collector” çıkı şlarına sahip olmayıp “totem pole” çıkı şlara sahiptir.Bu durum EPP ve ECP Port’ ları için de geçerlidir. Normalde Paralel Port EPP ve ECP moduna programlandı ğında , Kontrol Port’ u sadece “totem Poele “çıkı şlara sahip olur. Bu durumda bir dı ş cihaz yukarıda anlatıldı ğı gibi Paralel Port’a ba ğlanamaz. Bir çok bilgisayarda kullanılabilirli ği açısından , bir sonraki bölümde anlatılan, bir anda 4-bit okuma sa ğlayan devre daha uygundur. 2.2.6 İK İ 4-B İT OKUMA YÖNTEM İ Bu yöntem , paralel port’u ters moda sokmadan 8-bit veriyi okumada tercih edilen di ğer bir yöntemdir. Bu yöntemde Şekil 2.8’de görüldü ğü gibi , bir anda bir dörtlü okumak için ikili (Quad) 2-hat’ tan 1-hata (2 line to 1 –Line) MUX (Multiplexer kullanılır. 74LS157 4’lü anahtar gibi çalı şır. A/B giri şi Lojik o oldu ğunda , A giri şleri , Lojik 1 oldu ğunda ise B giri şleri seçilir. İki 4-bit okuma yönteminde , önce bir dörtlü okunduktan sonra di ğeri okunur. Daha sonra , yazılım okunan iki dörtlüden bir byte olu şturur. Bu tekni ğin tek avantajı biraz yava ş olmasıdır. Bu yöntem daha fazla I/0 komutu ve harici bir tüm devre gerektirir. 28 B İLG İSAYARLI KONTROL Özcan Şekil 2.8 Bir Mux kullanarak Standart Paralel Port’ a 8-bit veri giri şi. Yukarıda verilen devreyi kullanmak için , önce A veya B giri şlerinden birinin seçilmesi gerekir. Program ile Lsnible okunaca ğı için A/B giri şinin lojik 0 olması gerekir. STROBE donanım tarafından terslendi ğinden , Paralel Port’ unun DO bit’ i Lojik 1 yapılır. Outporb(CONTROL, inportb(CONTROL) | *0X01); / * Lsinble */ Dü şük 4-bit seçildikten sonra , Durum Port’ undan okunabilir. Bu okumada da BUSY hattı donanım tarafından terslenmektedir. Bu daha sonra düzeltilecektir. Okunan sürücünün yüksek 4-bit’ i ile ilgilendi ğimiz için , sonucu AND i şlemine tabi tutup dü şük 4-bit temizleniyor. Data= (inportb(STATUS) & DxFO); /*Dü şük 4-bit’i oku */ Daha sonra yüksek 4-lü bulunması gereken konuma 4-bit kaydırılıyor. Data = data >> 4; /* Sa ğa 4-bit kaydır */ Bu noktada okunması gereken verinin 4-bit’ i bilgisayara alınmı ş oldu. Di ğer yüksek 4-bit’ in okkunması için bu kez MUX giri şine lojik 1 uygulanır. Mux kanal seçiminden sonra veri okunur ve en son olarak BUSY hattından okunan bit’ lerin düzeltilmesi yapılır. 29 B İLG İSAYARLI KONTROL Özcan Outporb(CONTROL, inportb(CONTROL) & 0xFE) ; /* Msnibble */ Data=data ? (inportb(STATUS) &0 XFO); /* Yüksek 4-bit */ Data=data ^0x88; 2.3 PARALEL PORT UYGULAMALARI 2.3.1. BAS İT G İR İŞ / ÇIKI Ş Şekil 2.9’da 1-bit giri ş ve 1-bit çıkı ş uygulamasının devresi görülmektedir. Giri ş bir anahtar ile BUSY ucuyla (Durum Port’ u, Bit 7) yapılmaktadır. Anahtara basılması ve devam edilmesi durumunda , PC’ de çalı şan C programı , Veri port’ unun D0 bit’ i ile bir LED’ i sürekli yakıp söndürmektedir. D0 ucunun 0 yapılması ile LED yanmakta , 1 olması ile sönmektedir. Şekil 2.9 Paralel Port ile basit giri ş/çıkı ş. /* LED_FLSH.C */ # İnclude # İnclude /*delay fonksiyonu için */ #define DATA 0x0378 #define STATUS DATA+ 1 #defıne CONTROL DATA +2 void main(void) { int in; while(1) 30 B İLG İSAYARLI KONTROL Özcan { in=inpotb(STATUS) ; if (((in ^0x80) & 0x80)==0) /*Eger BUSY bit 0 ise (SW kapali) */ { outportb(DATA, 0X00); /*LED on */ delay(100); } else {outportb(DATA, 0x01); /* Eger SW kapalı de ğil ise, LED off */ } } } 2.3.2 PARALEL PORT TEST DEVRES İ Şekil 2.10’da paralel port test devresi görülmektedir. Bu devre ile Paralel port bit’ lerinin durumunu ö ğrenmek mümkündür. Yani hangi bit’ lerin terslenmi ş ve hangilerinin normal çalı ştı ğı bu devre ve aşa ğıda verilen C programı ile anla şılabilir. Şekilde pek çok bilgisayarda yaygın olan terslenen sinyal durumları ‘*’ sembolü ile gösterilmi ştir. Bu terslenen sinyaller STROBE*, AUTOFEED*, SELECT_IN* ve BUSY* sinyalleridir. Bu sinyallerin durumları programda göz önüne alınmı ştır. Şekil 2.10.Paralel port test devresi . 31 B İLG İSAYARLI KONTROL Özcan Program ile önce veri ve Kontrol Portlarına ba ğlı 12 LED yakılmaktadır. Daha sonra D0’dan ba şlayarak sıra ile bir LED söndürülmektedir. Bir LED sönükken di ğerleri yanmaktadır. Program daha sonra Durum Port’ undan giri ş anahtarlarını gözlemekte ve durumlarını bilgisayar ekranına yazmaktadır. Bilgisayar klavyesindeki bir tu şa basma sonucu , anahtar gözlenen döngüden çıkılır ve program biter. /*PortTest.c */ #include #define DATA 0x378 /*Kullanılan PC’ye göre de ği şmeli */ #define STATUS Data+1 #define CNTROL DATA+2 void main(void) { int in , n; outportb(DATA, 0X00); /*Veri port’ u LED’leri ON */ outporb(CONTROL, 0x00); /*Kontrol Port’u LED’leri ON */ /* Simdi sıra ile veri port’ undaki her bir LED’ i sondur (OFF) * Bunun için her bit ’e Lojik 1 gönder */ for (n=0; n<8; n++) {outportb (DATA, 0x01 << n);} outportb(DATA , 0x00); /* Sira ile Kontrol Port’ undaki her bir LED’ i sondur (OFF) *Donanım terslemesinin düzeltilmesi için XOR i şlemi yap */ outportb(CONTROL, 0x01^0x0b); /*bit 0 */ delay(1000); outportb(CONTROL, 0x02^0x0b); /*bit 1 */ delay(1000); outportb(CONTROL, 0x04^0x0b); /*bit 2 */ delay(1000); outportb(CONTROL, 0x08^0x0b); /*bit 3 */ delay(1000); outportb(CONTROL, 0x0b); /*LED’lerin hepsini yak */ /*Sürekli anahtarları tara ve sonucu hex olarak yaz */ While ( !kbhit()) { in = (inportb(STATUS)^ 0x80)& 0xF8; /* BUSY (Msbit ) terslenmi ş durumda ve sadece *Durum Port’undaki en de ğerli 5 bit gösterilmekte */ printf(“&x\n”, in); } }