Bilgisayar Donanımı Seri Port 32 B İLG İSAYARLI KONTROL Özcan SER İ PORT 3.1 SER İ HABERLE ŞMEN İN SEBEPLER İ Seri Port’ un ula şımını ve genel olarak seri haberle şme , Paralel Port’a ve Paralel veri haberle şmesine göre daha zordur. Bir çok kereler , Seri Port’a bir cihaz ba ğlandı ğında verinin kullanılabilmesi için seri ileti şimin Paralele dönü ştürülmesi gerekir. Bunu için bir UART (Universal Asynchronus Receiver Transmitter) tüm devresi kullanılır. Yazılım kısmında ise , Paralel Port’ a göre daha çok i ş yükü ve kullanılan saklayıcı bulunur. Seri Port veya seri haberle şmenin bütün bu kadar olumsuz yönlerine kar şın ne gibi avantajları bulunur. 1. Seri kablolar Paralel Kablolara göre daha uzun olur. Seri Port Lojik 1 seviyesini 3 ile-25 volt ve lojik 0 seviyesini +3 -+25 volt arasında iletir. Buna kar şın , Paralel Port’ a “0” 0 volt “1” 5V olarak iletir. Bu nedenle seri Port , 50V maksimum voltaj de ği şim aralı ğına sahip olmasına kar şın , Paralel Port 5V maksimum aralı ğa sahiptir. Bundan dolayı kabloda olu şan kayıp , seri kablolarda paralel ‘e göre çok önemli de ğildir . 2. Seri ileti şimde Paralele göre daha az tel kullanılır. E ğer bu cihaz bilgisayara uzak bir yerde ise , bu cihaza giden , çekirde ğine 3 telli kablo , 19 veya 25 telli kabloya göre çok daha ucuzdur. Bununla beraber, her uçtaki ara birim fiyatı da hesaba katılmalıdır. 3. Seri haberle şme kullanan kırmızı ötesi (Infra Red) günümüzde çok popüler hale gelmi ştir. Bu cihazlarda bir anda ancak bir bit veri seri olarak iletilebilir. Böyle bir haberle şmenin Paralel olması mümkün de ğildir. 4. Günümüzde , Tümdevresi üzerinde dı ş dünya ile ileti şimde kullanılan , seri haberle şme arabirimi bulunan mikrodenetleyiciler çok yaygınla şmı ştır. Seri haberle şme uçları, mikro denetleyicilerin tümdevre uç sayısını azaltmaktadır. Genelde TxD (Transmit Data) ve RxD (Recive Data) aolarak adlandırılan 2 uç kullanılmaktadır. Buna kar şın (-bit veri ileti şiminde , 8 uç ve ço ğu zaman bir darbe (strobe ) ucu gerekir. 3.2 SER İ HABERLE ŞMEN İN TEMELLER İ Bir mikroi şlemci dı ş dünyaya (hafıza veya I/0 birimleri)ile genelde 8-bit’ lik Parçalarla (8, 16, 32 ve 64 gibi )haberle şir. Şekil 3.1 (a)’da görüldü ğü gibi , bu şekilde yapılan veri aktarımı paralel veri aktarımı (transfer) olarak adlandırılır. Bazı durumlarda örne ğin PC’nin yazıcı ile haberle şmesinde , veri yolunda 8-bit veri ile paralel haberle şme yapılabilir. BÖLÜM 3 33 B İLG İSAYARLI KONTROL Özcan E ğer mesafe uzunsa paralel veri aktarımı pek uygun de ğildir. Ayrıca 8-bit veri yolu pahalıdır. Bu gibi durumlarda seri haberle şme daha uygun olur. Şekil 3.1 (b)’ de görüldü ğü gibi yapılan bir veri aktarımı , seri veri aktarımı olarak adlandırılır. Tek bir veri hattının kullanıldı ğı bu tür haberle şmenin ucuz olmasının yanında , iki farklı şehirde bulunan iki bilgisayarın telefon üzerinde , bu yöntem kullanarak haberle şmesi de mümkün olur. Şekil 3.1 Seri ve Paralel veri aktarımı Seri haberle şmede, gönderici kısmında 8-bit veri , paralel’den seriye çevrilir. Ve daha sonra tek bir hattan kar şıya gönderilir. Alıcı seri veriyi Paralele çevirerek 8-bit veriyi olu şturur. E ğer veri telefon hattından iletilecekse , 0 ve 1’ler ses tonuna çevrilir.Bu çevrim modem (modularor/Demulator) olarak adlandırılan bir cihaz tarafından yapılır. E ğer mesafe ksa ise syısal sinyal modulasyonuna gerk duyulmadan , basit bir hat üzerinden veri iletilir.IBM PC ‘de klavye ile anakart haberle şmesi bu şekilde yapılır.Telefon giibi veri Transferi , haberle şme hatlarını kullanır. Bu tür haberle şmede , gööndericide 1 ve 0’lar modulator ile ses toonlarına çevrilir;alıcıda ise , bu ses tonları demodulator ile 0 ve 1’lere dönü ştürülür. 3.2.1 SENKRON VE ASENKRON HABERLE ŞME Seri veri haberle şmesinde senkron ve asenkron iki yöntem kullanılır. Senkron haberle şmede bir anda bir veri blo ğu (Karakterler dizisi )aktarımı yapılırken , asenkron haberle şmede bir anda sadece bir byte iletilir. Her iki haberle şme yöntemi yazılım ile gerçekle ştirilebilir. Bununla beraber , bu şekildeki haberle şmede programlar uzun ve zor olaca ğı için , genelde seri veri Gönderici Alıcı 34 B İLG İSAYARLI KONTROL Özcan iletiminde özel tümdevreler kullanılır. Bu tümdevreler yaygın şekilde , UART (Universal Synchronus Asynnchronus Receiver Transmitter) olarak adlanndırılır. IBM PC’de kullanılan Com port’u, daha ilerki blümlerde detaylı olarak sunulacak olan , 8250 UART’ını veya günümüzde daha geli şmi ş sürümlerini kullanmaktadır. 8251 ise bir USART tümdevresidir. 3.2.2 SER İ VER İ AKTARIM KANALLARI Seri veri ileti şim tek yönlü oluyorsa , PC’den yazıcıya oldu ğu gibi , bu veri iletimi simplex olarak adlandırılır. Veri hem gönderiliyor hem alınabiliyorsa bu yönteme dublex denir.Bu ileti şimde e ğer veri bir anda sadece bir bit aktarılabiliyorsa half dublex haberle şmede , bir hat gönderme ve bir hat ta alma için olmak üzere , toplam iki tane hat kullanılır. Seri veri aktarımındaki kullanılan kanal durumuna göre yapılan haberle şme çe şitleri şekil 3.2’de görülmektedir. Şekil 3.2 .Seri veri aktarım yöntemleri . 3.2.3 ASENKRON SER İ HABERLE ŞME Seri veri haberle şmesinde , veri gönderen ve alan uçların belli kurallarına göre haberle şmesi gerekir.Protookol olarak adlandırılan bu kurallar, verinin nasıl paketlenece ği , bir karakterdeki bit sayısı ve verinin ne zaman ba şlayıp biteceği gibi bilgileri belirler. Asenkron seri veri haberle şmesi, karakter-tabanlı ileti şimlerde yaygın olarak kullanılır. Asenkron yöntemde , her gönderilecek karakter , ba şlama(START) ve bitime (STOP) bit’lerinin arasına yerle ştirilir.Bu i şlem çerçeveleme (framing) olarak adlandırılır. Gönderici Gönderici Alıcı Gönderici Alıcı Alıcı Alıcı Gönderici Alıcı Gönderici Simplex Half Dublex Full Dublex 35 B İLG İSAYARLI KONTROL Özcan Asenkron haberle şmesindeki veri çerçeveleme (framing) olarak adlandırılır. Asenkron haberle şmesindeki veri çerçeveleme i şleminde , ASCII karakterler bir START ile bir STOP bit’i arasında paketlenir. Start bit’i her zaman bir bit’tir , fakat STOP bit’i bir veya iki bit’tir. Şekil 3.3 ‘te görüldü ğü gibi , START bit her zaman lojik 0(dü şük), Stop bit lojik 1’dir(yüksek).Verilen ASCII ‘A’, ikili olarak 01000001, START bit ile 2 STOP bit arasında çerçevelenmi ştir. Seri ileti şimde önce en ddü şük de ğerli bit D0(LSB) dı şarı gönderilir. Şekil 3.3 ASCII’A’ (41H) Karakterinin çerçevesi. Şekil 3.3 te solda görüldü ğü gibi, seri veri aktarımının yapılmadı ğı durumda, sinyal seviyesi 1 dir(yüksek ) ve bu durum i şaret (mark ) olarak adlandırılır. Lojik 0(dü şük) ise bo şluktur(space). Veri iletimi bir start biti ile ba şlar ve bunu takiben D0 (LSB) daha sonra D7 ye (MSB) kadar geri kalan bitler ve son olarak “A” karakterinin sonunu belirten iki Stop Biti gelir. Asenkron seri haberle şmede kullanılan tüm devreler ve modemler 5, 6, 7 ve 8 bit veri uzunlukları için programlanabilir. Veri, uzunlu ğuna ek olarak bir veya iki tane STOP biti kullanılır. Eski sistemlerde ASCII karakterler 7 bit idi. Yeni uzatılmı ş ASCII karakterler yüzünden bir ASCII karakter için 8 bit gerekir. Bazı ASCII olmayan klavyeler 5 veya 6 bit klarakterleri kullanır. Bazı eski sistemlerde, veri alan cihazın yava şlı ğından dolayı , cihaza, kendini ayarlamaya yeterli zaman vermek için iki stop bit kullanıldı. Günümüzde modern PC’lerde genellikle 1 STOP bit kullanılır. Bir seri haberleşmesinde, iletilen verinin dı şında fazladan kullanılan bitler 1 fazladan zaman(overhead) ve yük olu şturur. Örneğin , ASCII karakterin iletiminde, e ğer iki STOP bit’i kullanılıyorsa, her bir 8-bit ASCII kodu için toplam 11-bit iletilir. Yani her 8-bit için, ileti şim hattından fazladan 3- bit veya %30 ek yük bulunur. Bazı durumlarda, veri bütünlü ğünü korumak için karakter byte’ nın e şlik(Parity) bit’ i veri çerçevesine eklenir. Yani her karakter için(sisteme ba ğlı olarak 7-bit veya 8-bit ) START ve STOP bitlerine ek olarak bir tek e şlik bit’ i eklenir. E şlik bit’ i tek (odd) veya 36 B İLG İSAYARLI KONTROL Özcan çift (even) olur. Tek- e şlik bit durumunda , e şlik bit’i dahil, veri bit’lerinin sayısı bir tek sayıdır. Örne ğin , ASCII “A” karakteri ikili 0100 0001 olarak 0 çift e şlik bit’ine sahiptir. UART tümdevreleri daha sonra görülece ği gibi, tek , çift veya e şliksiz.(no-parity) olarak programlanabilir. E ğer bir sistem e şlik bit’i gerektiriyorsa , e şlik bit’i verideki en de ğerli bit’ten (MSB) sonra gönderilir. Bunun STOP bit’i takip eder. 3.2.4 VER İ AKTARIM HIZI Seri veri haberle şmesinde veri aktarım hızı saniyedeki bit sayısı(BPS-bit Per second) olarak belirtilir. Veri aktarım hızını belirtmede di ğer yaygın olarak kullanılan İngilizce terim baud rate’dir . Bununla beraber bu iki ifadenin bir birine e şit olması gerekmez. Çünkü, baud rate bir modem terminolojisidir ve saniyede sinyaldeki de ği şim olarak tanımlanır. Modemlerde bazı durumlarda bir sinyal de ği şimi ile bir çok veri bit’i transfer edilir. İleti şim teli dü şünüldü ğünde , bps ve baud rate aynıdır. Bu yüzden kitapta ikisi kar şılıklı de ği şmeli olarak kullanılmaktadır. Bir bilgisayarın seri veri transfer hızı haberle şme Port’larına ba ğlıdır. Örne ğin eski IBM PC/XT 100 ile 9600 bps hızlarında veri transfer edebilmekteydi .Bununla beraber. Hızlı PC’ler 19200 BPS gibi yüksek hızlara çıkabilmektedir. Asenkron veri haberle şmesinde , baud rate genellikle 100000 bps ile sınırlıdır. 3.2.5.VER İ HABERLE ŞME SINIFLARI Seri haberle şmeyi kullanan cihazlar iki sınıfa ayrılmaktadır. Bunlar DTE (Data Terminal Equipment) ve DCE(Data Communication Equipment) olarak adlandırılır. DTE, bilgisayar ve ya terminal gibi veri gönderen veya alan cihazlardır. Buna kar şın DCE , modem ve yazıcı gibi veri aktaran cihazlardır. Daha sonraki bölümde Tablo 3.1’de gösterilen sinyaller DTE yönünden tanımlanmı ştır. DTE ve DCE arasındaki en basit ba ğlantı , Şekil 3.4 (a)’da görüldü ğü gibi en az üç tane uç , TxD, RxD ve toprak gerektirir. İki PC gibi , iki DTE cihazı arasındaki minumum ba ğlantıda , 2 ve 3 numaralı uçlar, Şekil 3.4 (b)’deki gibi , kar şılıklı çapraz ba ğlanır. TxD RxD GND (a) DTE – DCE ba ğlantısı (b) DTE-DTE ba ğlantısı Şekil 3.4 DTE –DCE ve DTE- DTE ba ğlantıları. DTE DCE DTE DTE TxD RxD GND 2 3 7 2 3 7 2 TxD 3 RxD 7 GND 2 TxD 3 RxD 7 GND 37 B İLG İSAYARLI KONTROL Özcan 3.3 RS232 STANDARDI De ği şik üreticiler tarafından yapılmı ş veri haberle şme cihazlarının uyumlulu ğunu sa ğlamak amacıyla , EIA ( Elektronik İndustries Association ) tarafından RS232olarak adlandırıldı .Daha sonraları 1965 ‘te RS232B ve 1969 da RS232C standartları ilan edildi. Kitapta bu standart için kısaca RS232 kullanılacaktır . Günümüzde RS232 en yaygın kullanılan seri I/O arabirim standardıdır. Bu standart TTL lojik ailesinden çok önceleri belirlendi ği için , giri ş ve çıkı ş voltaj seviyeleri TTL uyumlu de ğildir. RS232 ‘de lojik 1-3V ile –25 volt arasında, Lojik 0+3V ile +25V arasında tanımlanır. –3v ile +25 v arası tanımsızdır. Bu yüzden herhangi RS232 cihazını , bir mikroi şlemci –tabanlı sisteme ba ğlamak için , MC1488, MC 1489 veya TSc232 gibi voltaj çeviriciler kullanılır. Bu tümdevreler hat sürücüler /alıcıları (Line driver /receiver) olarak adlandırılır. 3.3.1.RS232 S İNYALLER İ RS232 için , Şekil 3.5’te görülen , bir DB-25 konnnektörü ile eri şilen toplam 25 uç tanımllanmı ştır. Bu uçların hepsinde sinyal bulunmaz. Kullanılan konnektörü belirlemede , DB25P(Plug) erkek konnektör, DB25(sovket) di şi konnektör için kullanılır. Şekil 3.5. RS232 DP-25P erkek konnektör. Modem bilgisayarda bütün 25 uca gerek olmadı ğı için , IBM şekil 3.6’da görülen, DP-9 seri I/O standardını tanımlamı ştır. Şekil 3.6 IBM PC-9 uçlu erkek konnektör. 38 B İLG İSAYARLI KONTROL Özcan Tablo 3.1 ‘de IBM PC 9-uçlu konnektör’de bulunan RS232 sinyalleri verilmi ştir. Tablo 3.1 9 ve 25 uçlu konnektörler içinRS232 sinyalleri 1 2 3 4 5 6 7 8 9 8 3 2 20 7 6 4 5 22 Data Carrier Detect(DCD) Receive Data (RxD) Transmite Data (TxD) Data terminal Ready (DTR) Signal Ground(GND) Data set Ready(DSR) Request to Send(RTS) Clear To Send(CTS) Ring Indicator(RI) 3.3.2. RS232 senkronizasyon sinyalleri İki cihaz arasında güvenli veri ileti şimin olabilmesi için , veri aktarımın düzenlenmesi gerekir.Bu amaçla seri veri haberle şmesinde senkronizasyon sinyalleri kullanılır. Bu sinyal çok yaygın olarak kullanıldıkları için , bilinmeleri herhangi UART tümdevresi veya modem cihazının çalı şmada çok önemlidir. Bu senkronizasyon sinyalleri a şa ğıda tanıtılmaktadır. 1. DTR (Data Terminal Ready): DTE(PC COM port’u) çıkı ş modem giri ş ucudur. Bu hat modem’e , terminalin (Bir PC com Port’u , dolayısıyla UART) veri iletimi için hazır oldu ğunu belirtir. COM port’unda bir problem var ise , bu sinyal aktif yapılmaz. 2. DSR (Data Set Ready): DTE (PC COM port’u) giri ş , modem çıkı ş ucudur. Bu hat terminele(Bir PC COM port’u , UART), modem’in veri ileti şimi için hazır oldu ğunu belirtir. E ğer modem herhangi bir nedenden dolayı telefon hattına ba ğlanmıyorsa , bu sinyaller pasif yapılarak , veri göndermek veya almak için modem’in hazır olmadı ğı PC’ye belirtir. 3. RTS (Reques To Send): DTE (PC gibi) gönderece ği verisi oldu ğunda, bu uçla modeme haber verir. 4. CTS (Clear To Send): RTS sinyaline cevap olarak , modem alaca ğı veri için yeri oldu ğunda , bu sinyali DTE’ye (PC UART’ına) göndererek veri almaya hazır ooldu ğunu belirtir. 5. DCD (Data Carrier Detect): Modem , telefon hattından bir ta şıyıcıyı (carrier) belirledi ğinde , bu hattı akktif yaparak DTE ‘ye (PC) bu durumu haber verir. 6. RI (Ring Indigator): Telefon çaldı ğıında , modem DTE’ye(PC) bu sinyalle haber verir. Altı Senkronizasyon sinyalinden en az kullanılanı bu sinyaldir. Çünkü telefona modem cevap verir. E ğer telefona PC’nin cevap vermesi isteniyorsa bu sinyal kullanılabilir. 39 B İLG İSAYARLI KONTROL Özcan Yukarıdaki tanımlamalardan sonra, PC ve modem haberle şmesi şu şekilde özetlenebilir. DTR ve DSR sinyalleri , PC ve modem tarafından çalı şmakta ve hazır olma durumlarını belirtmede kullanılır. Buna kar şın , RTS ve CTS veri akı şını kontrol etmede kullanılır. PC veri göndermek istedi ğinde , RTS hattını aktif yapmakta , buna cevaben , modem veri kabul etmek için hazır ise (veri için yeri var ise ), CTS sinyalini gönderir. E ğer yer yok ise , modem CTS’yi aktif yapmaz. Bu durumda PC’nin tekrar aynı şekilde denemesi gerekir. 3.3.3. BO Ş MODEM BA ĞLANTISI Bo ş (null ) modem ba ğlantısı iki DTE cihazını ba ğlamada kullanılır. Bu yöntem Zmodem veya Xmodem protokolü gibi bir protokol kullanarak, a ğ haberle şmesi veya bilgisayarlar arası dosya aktarımında kullanılan ucuz bir yoldur. Bu yöntem ayrıca bir çok mikroi şlemci geli ştirme sistemlerinde kullanılır. Şekil 3.7’de bo ş modem ba ğlantısı için , bir örnek verilmi ştir. Görüldü ğü gibi sadece 3 hat (TD, RD ve GND) gerekir. Bu verilen ba ğlantı ile amaçlanan , bilgisayarın di ğer bir bilgisayardan ziyade , sanki bir modem ile konu şuyor gibi dü şünmesini sa ğlamaktır. TD ve RD veri hatları , kar şılıklı çaprazlama ba ğlanmı ş ve topraklar ortaklanmı ştır. Her iki makine de DTR sinyalleri aktif yapıldı ğında , DSR ve DCD hemen aktif olur. Bu nokta da , bilgisayar ba ğlı oldu ğu bir sanal modem’in hazır oldu ğunu ve bu modem’in DCD sinyalini aldı ğı dü şünür.Her iki bilgisayar aynı hızda haberle şti ği için kontrolüne gerek yoktur.. Bu yüzden RTS ve CTS sinyalleri her iki makinede birbirine ba ğlanmı ştır. Bir bilgisayar verisini göndermek istedi ğinde , RTS sinyalini aktif yapar. Bu sinyal CTS’ye geri ba ğlı oldu ğundan , gönderme için tamam cevabını hemen alır ve bu i şlemi yerine getirir. RI sinyali her iki uçta ba ğlanmı ştır. Bu sinyal telefon hattında çalma i şlemini bilgisayara bildirir. Telefon hhattına ba ğlı bir modem olmadı ğı için bu hhat ba ğlantısız bırakılmı ştır. D9 D25 D25 D9 3 2 TD RD 3 2 2 3 RD TD 2 3 5 7 GND GND 7 5 4 20 DTR DTR 20 4 6 6 DSR DSR 6 6 1 8 DCD DCD 8 1 7 4 RTS RTS 4 7 8 5 CTS CTS 5 8 Şekil 3.7. Bo ş modem ba ğlantısı. 40 B İLG İSAYARLI KONTROL Özcan 3.3.4.GER İ BESLEME BA ĞLANTISI Geri besleme (loop –back) ba ğlantısı , özellikle seri RS232 haberle şme programları yazarken , geli ştirme a şamasındaki test’lerde çok faydalıdır. Bu ba ğlantı da , Şekil 3.8’de görüldü ğü gibi , almma ve göndermme hatları birbirine ba ğlanmı ştır. Seri olarak dı şarı gönder, len veri yine aynı port’tan içeri alınır. 3.3.5.DTE/DCE HIZLARI Daha öncede belirtildi ği gibi , tipik bir veri terminal cihazı (DTE) bir bilgisayar ve tipik bir veri ileti şim cihazı ( DCE) bir modemdir . Genellikle DTE’den DCE’ye ve DCE’den DCE’ye olan veri hızları söz konusu olur. DTE ile DCE arasındaki hız, bilgisayar ile modem arsındaki hızdır ve bazen terminal hızı olarak belirtilir. Bu hız DCE-DCE hhızından fazla oolmalıdır. DCE-DCE arası, nodemler arası bir ba ğdır ve bu aradaki veri hızı bazen hat(line) hızı olarak belirtilir. D9 D25 3 2 TD 2 3 RD 5 7 GND 4 20 DTR 6 6 DSR 1 8 DCD 7 4 RTS 8 5 CTS Şekil 19.8. Geri besleme ba ğlantısı. Günümüzde 28.8 K ve 56K gibi hızlardaki modemler yaygındır. Yani, bu modemlere göre , iki DCE arası hızın, 28.8 K, 33.6K ve 56K olması beklenir. Yüksek hızdaki bir modem için , DTE –DCE hızının yakla şık 115200 BPS (16550A UART’ının maksimum hızı) olması gerekir. Bu nokta genellikle pek çok ki şinin hataya dü ştükleri husuustur. Kullanılan hhaberle şme programları DTE-DCE ayarlarını alır. Böylece 9.6 K BPS, 14.4K BPS gibi hızlar görülür ve bunların modem hızı oldukları dü şünülür. Günümüzde modemler veri sıkı ştıırma ve açma fonksiyonlarına sahiptir. Sıkı ştırma oranları olarak 1:4 ve hatta daha yüksek oranlar yaygındır. Bu 1:4 ooranı bir metin dosyası(text fiele) için tipik bir de ğerdir. E ğer bir metin dosyası 28.8 K(DCE-DCE) hızında aktarılıyor ve kullanılan modem sıkı ştırma yapıyor ise , gerçekte bilgisayarlar 115.2 K hızında veri aktarımı yapılır. Aynı zamanda DTE-DCE hızı mmoodem’in ba ğlantı hızından çok daha fazla olmalıdır. Bazı modemler üzerinde 1:8 maksimum sıkı ştırma sa ğlayabileceği yazılır. E ğer bu modem 33.6 K ise , modem ile UART arasında , maksimum 268800 BPS veri aktarım hızı sa ğlanır. Bununla beraber , e ğer bir bilgisayarın UART’ı en fazla 115200 41 B İLG İSAYARLI KONTROL Özcan BPS hızına sahip 16550A ise, modemimizin fazla performansından yararlanamayız. E ğer maksimum 230400 BPS hızı sa ğlayan 16C650 UART’ı kullanır ise bu problem olmaz. Yukarıda bahsedilen yüksek oranlar bazı durumlarda elde edilmez. Çünkü modemlerin üzerinde olan sıkı ştırma oranları maksimumdur. Örne ğin sıkı ştırılmı ş bir dosya gönderilir ise , modem bu doosyayı sıkı ştıırmak için çok zaman harcar. Böyle bir durumda modem’in veri sıkı ştırma özelli ğinin kapatıılması daha uygundur. Ayrıca , bazı dosyalar di ğerlerinden daha kolay sıkı şır. Bunun sonucu daha yüksek sıkı ştırma oranlarına sahip olunur. 3.3.6 VER İ AKI Ş KONTROLÜ DTE-DCE arsındaki hız DCE-DCE hızından çok fazla ise , PC’nin gönderdi ği veri modem’deki buffer alanını k ısa zamanda doldurdu ğundan bir veri akı ş kontrolü gerkir. Akı ş kontrolü için yazılım ve donanım olmak üzere iki yöntem vardır. Yazılım akı ş kontrolünde , bazı yerlerde Xon |Xoff olarak belirtilen iki karakter kullanılır. Xon olarak normalde ASCII 17 ve Xoff olarak ASCII 19 karakteri kullanılır. Modem’in için sınırlı bir allaan oldu ğundan , bilgisayar bu alanı doldurdu ğunda, modem Xoff karakteri göndererek bilgisayara daha fazla veri göndermesini belirtir. Modem veri için yeri oldu ğunda bilgisayara bir Xon karakteri gönderir. Bunun sonucunda bilgisayar daha fazla veri gönderir.Bu çe şit akı ş kontrolünün avantajı , veri iletimin yapıldı ğı TD/RD hatlarına ek olarak ba şka hatlara gerek olmasıdır. Bununla beraber, yava ş hızlarda olan haberle şmede , bu tür kar şılıklı el sıkı şma senkronizasyonu , ileti şimi daha da yava şlatır. Donanım veri akı ş kontrolü , aynı zamanda RTS/CTS akı ş kontrolü olarak ta bilinir. Bu yöntemde yazılım yöntemindeki veri hatlarından aktarılan fazladan karakterler yerine , seri kablodaki iki hat kullanılır.Bu şekilde yapılan bir akı ş kontrolü ileti şim hızını yava şlatmaz . Bilgisayar veri göndermek istendi ğinde RTS( Reguest to Sent ) hattını aktif yapar .E ğer modemde veri için yer var ise , CTS (Clear to Sent ) hattını aktif yapar ve bilgisayar veri göndermeye ba şlar. E ğer modem yere sahip de ğıl ise CTS sinyalini göndermez . 3.3.7 DİĞER STANDARTLAR Bir RS232 kablosunun uzunlu ğu arasında , sinyalde kapasitif yük artmaktadır. Bunun sonucu , yüksek veri hızları güvensiz olmaktadır. E ğer kablo uzunlu ğu 5 feet veya daha az olursa , RS232 ile 10000 BPS ile veri aktarım hızı elde edilebilir. Eri hızını ve kablo uzunlu ğunu arttırmak için RS232 ‘nin elektriksel özellikleri yeniden tanımlanmalıdır. Bunun sonucu , RS422 ve RS423 gibi yeni standartlar çıkmı ştır. Tablo 3.2 RS232 ile bu standartların kar şıla ştırılmasını göstermektedir. 42 B İLG İSAYARLI KONTROL Özcan Tablo 3.2. RS232’nin RS422 ve RS423 ile kar şıla ştırılması. RS232 RS422 RS423 Maks.Kablo Uzunlu ğu (m) Maksimum Hız (baud) 15 20K 1200 10M/12 m 1M/ 120 m 100K/1200 m 1200 100K/9 m 10K/90 m 1K/1200 m 3.4 PC SER İ PORT’U Bir PC Seri Port’u , daha sonra anlatılacak olan, bir UART tümdevresi kullanılır. DOS ve BIOS , 8250 gibi bir UART tümdevresinin detaylarından programcıları kurtararak , IBM PC’nin Seri Port’una kolay eri şim sa ğlar. PC’deki INT 14 kesmesi seri veri ileti şimde kullanılabilir. DOS kesmesinin yanında Seri Port’ların veri uzunluklarını belirleme ve hızlarını ayarlama gibi fonksiyonları , DOS’ta MODE komutuyla programlanabilir. 3.4.1.SER İ PORT ADRESLER İ Bir IBM PC, COM olarak belirtilen 4 tane taneye kadar Seri Port’a sahiptir. Bu port’lar 1, 2, 3 ve 4 (BIOS numaraları 0, 1, 2, 3) olarak numaralanmı ştır. PC açıldı ğında POST(Power-On Self –Test) esnasında , 4 COM adresleri görülmektedir. Her UART için atanan I/O adresi 16-bit oldu ğundan, UART ba şına 2 byte gerekir. Tablo 3.3.PC Seri Port adres atamaları COM Taban Adresi İsim 0000:0400 0000:0402 0000:0404 0000:0406 COM1 COM2 COM3 COM4 Tablo 3.4’te PC seri Port standart I/O adres adres atamaları gösterilmektedir. Bu adresler Birçok bilgisayar için geçerlidir. Tablo 3.4 PC seri Port I/0 adres atamaları İsim Adres IRQ COM1 COM2 COM3 COM4 3F8h 2F8h 3E8h 2E8h 4 3 4 3 43 B İLG İSAYARLI KONTROL Özcan Bir port’a atanmı ş olan adresi ö ğrenmek için de ği şik yöntemler bulunur. Örne ğin, sistem ayarlarına bakılarak bu ö ğrenilebilir. A şa ğıda DOS debug programı ile 0040:0000 adresine bakılarak COM atamaları ö ğrenilmektedir. >debug -d 0040:0000 L8 0040:0008 F8 03 F8 02 00 00 00 00 Yukarıda verilen örnekte , COM1 3F8h ve COM2 2F8h atanmı ş olup COM3 ve COM4’te bir atama yapılmı ştır. A şa ğıda verilen örnekte C programı ile , Seri portlar için BIOS tarafından atanan adresleri akuyabilece ğimiz gösterilmektedir. #incllude #include void main(void) { unsigned int far *ptr_addr; unsigned int address; int i; ptr _addr = (unsigned int far *) 0x00000400; for ( i=0; i<4; i++) { address = *ptr_addr; if (address= 0) printf(“COM%d için port bulunaamadı \n”, i+1); else printf(“COM%d için atanan adres %Xh\n”, i+1, address); *ptr_addr++; } } Yuakarıda verilen C programı , daha önce debug programı ile Seri Port adresleri bulunan bilgisayarda çalı ştırıldı ğında a şa ğıdaki çıkı ş elde edilir. COM1 için atanan adres 3F8h COM2 için atanan adres 2F8h COM3 için port bulunamadı COM4 için port bulunamadı 3.4.2 UART İLE SER İ HABERLE ŞME Seri haberle şme programı yazarken iki yöntem bulunur. Birinci yöntemde UART’ ın durumu okunarak , verinin hazır olup olmadı ğı anla şılır. Bu yöntem ingilizce polling olarak adlandırılır. Di ğer yöntemde , UART ile PC arasındaki haberle şmede bir 44 B İLG İSAYARLI KONTROL Özcan kesme üretilir;bunun sonucu kesme hizmet programında veri işlenir. İlk yöntemdeki UART’ ın durumunun okunması yava ş bir i şlemdir ve CPU’yu çok me şgul eder. Bu yöntemle en fazla 34.8 K BPS veya yeni pentium Pro ve daha üst i şlemcilerde biraz daha yüksek hızlar elde edilir. Kesme proogramı kullanan di ğer yöntemde dü şük hızlı makinelerde bile 115.2K BPS hızları kolay şekilde desteklenir. Daha önce Bölüm 19.6’da Asembly dili kullanarak iki PC’nin haberle şmesi için basit bir program örne ği verilmi şti. O programda seri haberle şmede BIOS INT 14 kesmesi kullanılıyordu. A şa ğıda verilen iki farklı C programı ile , benzeri şekilde iki PC birbiriyle konu şmaktadır. Bir PC’ den klavye yolu ile girilen karakkterler di ğer PC’ nin ekranına gönderilir. İlk program UART’ ın okunması (polling) yöntemi kullanılır. İkinci programda kesme alt programı ile veri i şlemi yapılır. Program kodunun açıklamalarında , yapılanlar izah edilmektedir. /*seri_port.c *Polling yöntemi ile UART çalı şması */ #include #include #include #define PORT1 0x3F8 /* Seri Port Taban adresleri */ /* COM1 0x3F8 */ /* COM2 0x2F8 */ /* COM3 0x3E8 */ /* COM4 0x2E8 */ void main (void) { int c; int ch; outportb(PORT1 +1 , 0); /* Kesmeler pasif */ /* PORT1 - Haberle şme ayarlari */ outportb(PORT1 +3 , 0x80); /*DLAB = 1 */ outportb(PORT1 +0 , 0x03); /* Baud Rate Ayeri - Divisor Latch Low Byte */ /*Defult 0x03 = 38.400 BPS */ /* 0x01 = 115.200 BPS */ /* 0x02 = 56, 700 BPS */ /* 0x06 = 19, 200 BPS */ /* 0x0C = 9600 BPS */ /*0x18 = 4, 800 BPS */ /* 0x30 = 2, 400 BPS */ 45 B İLG İSAYARLI KONTROL Özcan outporb (PORT1 +1 , 0x00); /* 8-Bit, NO parity, 1 Stop Bit */ outporb(PORT1 +3 , 0x03); outportb(PORT1 +4, 0x0B); /*Turn on DTR, RTS, and OUT2 */ printf(“\nSeri Haberle şme Programi\n” printf(“Cikmak için ESC tu şu gerekiyor...\n”); do { c= inportb(PORT1 +5); / *Line Status Register */ /* Karakterlerin alınıp alınmadı ğını kontrol et */ if (c & 1) { ch = importb(PORT1); /* Veri Hazır, okku */ printf( “%c, ch); /* ve ekrana yaz...*/ } if (kbhit()) {ch = getch (); /*Tu şa basıldıysa oku */ outportb(PORT1, ch);} /* ve seri port’a gönder */ } While (ch !=27); /*ESC(ASC 27) basıldı ğında cık */ }