BÜLENT ÇOBANOĞLU'NUN WEB SİTESİ

 

 

 

a name="#baş">

 

1. PARALEL PORT İLE SERİ ADC'DEN ANALOG BİLGİ ALIŞI

2. I/O KOMUTLARI VE HAFIZA DÜZENEĞİ:

  3. PARALEL PORTUN YAPISI  

  4. PARALEL PORTTAN ANALOG GİRİŞ YAPMAK

 

 

 

 

 

 

 

 

 

PARALEL PORT İLE SERİ ADC'DEN ANALOG BİLGİ ALIŞI  

 

 

ÖZET:

 

            Bu çalışma, dış ortamdan analog bilgi alıp , seri bir ADC ile bir mikrobilgisayarın 25 iğneli paralel portunu kullanır ve 8 örneklem girişe sahiptir. Bilgisayar ile ADC arasında iletişimi sağlayan bir yazılım ise Pascal programlama dili kullanılarak geliştirilmiştir.

 

   2.GİRİŞ:

 

          

       Bilgisayarlardan yazılım açısından yararlanabileceğimiz gibi yeni bir takım özel amaçlı arabirimler yaparak donanım açısından da faydalanabiliriz. Örneğin fax / modem kartı, video kartı gibi arabirimler bugün kullanılmaktadır. Bunlar genellikle bilgisayarın adres ve veri yolları ile bağlantılı olan genişleme yollarına takılmaktadır. Ancak bu yuvaların sınırlı sayıda olması ve bilgisayarın kapasitesi istenilen sayıda arabirimin bilgisayara takılmasına önemli bir sınırlama oluşturmaktadır.

            Bu çalışmada  bütün bilgisayarların standart bir birimi haline paralel portu kullanılmıştır. Çalışmanın devamında, paralel portu kullanarak yapılan bir arabirim devresini kontrol etmek için gerekli bilgilere yer verilmiştir. Önce paralel portun yapısı ve bununla ilgili  olarak bilgisayarın I/O (giriş-çıkış) hafıza  haritası , daha sonra giriş yapabilmek için gerekli komutlar anlatılmıştır. Son olarak da paralel port ile seri ADC' den analog bilgi alışını sağlayan devrenin çalışması ve ADC' ler hakkında bilgi verilmiştir.  

 

2. I/O KOMUTLARI VE HAFIZA DÜZENEĞİ:

            

 

            2.1. I/O KOMUTLARI

            Giriş/Çıkış portlarından bilgisayara veri girişi yapabilmek için assembly dilinde IN komutu bilgisayardan portlara bilgi göndermek için ise OUT komutu kullanılır. Giriş veya çıkış yapmak için önce DX kaydedicisine portun adresi atılmalıdır. Daha sonra  IN ve OUT komutlarıyla bilgi transferi gerçekleştirilebilir. Örneğin paralel porttan bilgi girişi için aşağıdaki komutlar sırasıyla uygulanır.

            Mov DX, 0379H

            IN AL, DX

Paralel porta bilgi göndermek için ise,

            Mov DX, 0378H

            OUT DX,AL

Komutları kullanılmalıdır. Port adresi 00-FF (0-255) olan birimlerden, port adresini DX' e atmadan direkt giriş/çıkış yapılabilir.

Örneğin: IN AL,60H komutu klavyeden giriş yapar.

 

2.2. Giriş/Çıkış Hafıza ( Bellek ) Düzeneği

 

Giriş/Çıkış portlarının kullanacağı hafıza düzenekleri yapılırken iki çeşit yol izlenir. Birincisinde giriş/çıkış hafıza bölgeleri bilgisayarın ana hafızasından ayrı olarak düşünülür. Bu  yüzden bu bölgelere ancak IN ve OUT komutlarıyla erişilebilir. MOV ve benzeri komutlarla erişilemez. Bu durum bir dezavantaj oluşturur. İkinci yöntem giriş/çıkış hafıza bölgelerinin ana hafıza ile beraber düşünüldüğü yöntemdir. Bu yöntemde ana hafızanın belli bir bölgesi giriş/çıkış portları için bir adres bölgesi olarak ayrılır. Bu nedenle  IN ve OUT komutlarının kullanılmasına gerek kalmaz. Hafızanın bir bölgesine ulaşabilen herhangi bir komut  bilgi  transferi için kullanılabilir . Birinci  yöntem yalıtılmış giriş/çıkış hafıza düzeneği

( Isolated I/O) , ikinci yöntem ise hafıza içi giriş/çıkış düzeneği (Memory mapped I/O) olarak bilinir. Şekil. 1' de bu iki yöntemle oluşturulan hafıza düzenekleri görülmektedir.

Kişisel bilgisayarlarda giriş/çıkış için ayrılan hafızanın belirli bölgeleri, çeşitli arabirimler için ayrılmıştır. Şekil 2' de bir bilgisayarın giriş/çıkış hafıza haritası görülmektedir. Dikkat edileceği gibi 0000H-03FFH arası normal olarak bilgisayar sistemi için ayrılmıştır. 0400H - FFFFH arası ise kullanıcının yaptığı arabirimler için port adresi olarak kullanılabilir. Matematik işlemci ise 00F8H-00FDH arasını kullanır.

                    

 

 

            3.PARALEL PORTUN YAPISI

            

            Printer portu  genelde centronics standardında yapılır. 25 pinli ve 36 pinli centronics standardında portlar vardır. Portların dış görünüşleri Şekil. 3' de görülmektedir.

            PC'lerde en yaygın olarak kullanılan 25 pinli konnektörlerdir. Printer portunun adresi genellikle LPT1 için 378H' dir. Ancak bu adresler bilgisayardan bilgisayara değişiklik gösterebilir.

            Centronicss standardındaki 25 pinlik konnektörün pin numaraları ve her bir pinin ne için kullanıldığı (giriş veya çıkış) tablo 1' de verilmiştir. Tablo 2' de ise konnektördeki her bir pinin hangi adresde yeraldığı görülmektedir.

            Dikkat edilirse başlangıç adresi 378H den itibaren 379H ve 37AH adresleri olmak üzere 1'er baytlık 3 adres port için ayrılmıştır.

            Program yazılırken pinlerin hangi adresler de yeraldığı ve giriş için mi , yoksa  çıkış için mi kullanılabileceğine dikkat edilmelidir.

 

 

Tablo 1.  25 pinli Centronics konnektörün pin numaraları ve pinlerin fonksiyonları

 

Pin No

Fonksiyonu

G / Ç

Pin No

 Fonksiyonu

Giriş/Çıkış

1*

Data Strobe

Çıkış

10*

Data Acknowledge

Giriş

2

Data bit 0

Çıkış

11

Busy

Giriş

3

Data bit 1

Çıkış

12

Out of paper

Giriş

4

Data bit 2

Çıkış

13

Selected

Giriş

5

Data bit 3

Çıkış

14

AutoLine feed

Çıkış

6

Data bit 4

Çıkış

15*

Erros status

Çıkış

7

Data bit 5

Çıkış

16*

Initialize

Çıkış

8

Data bit 6

Çıkış

17

Select

Çıkış

9

Data bit 7

Çıkış

18-25

Ground

Çıkış

 

Tablo 1.' De * Karakteri sinyallerin değillerinin alınacağını gösterir.

 

 

 

Tablo 2. Pinlerin yer aldıkları adresler.

 

Bit

Taban adres

Taban adres+1

Taban adres+2

0

Data bit 0

-

Data Strobe

1

Data bit 1

-

Auto line feed

2

Data bit 2

-

Initilise

3

Data bit 3

Error Status

Select

4

Data bit 4

Selected

Interrupt enable

5

Data bit 5

Out of paper

-

6

Data bit 6

Data acknowledge

-

7

Data bit 7

Busy

-

 

Not: LPT1 için taban adres 378H'dir. En küçük değerlikli bit 0.bittir.  

 

4. PARALEL PORTTAN ANALOG GİRİŞ YAPMAK

            

 

            Paralel port üzerinden 8 bit genişliğinde ve 1Khz örneklem aralığında bir veriyi almak oldukça kolaydır. Bu bant genişliğinin ses sinyalleri için yeterli olmayacağı açıktır. Fakat oda sıcaklığı, ışık seviyesi ve pil voltajı gibi ölçümler için yeterlidir.

            Paralel porttan analog girişler yapmak analog çıkışlar yapmaktan daha zor olmaktadır. Çünkü analogtan dijitale çevrilen veri bitlerini okuyabilmek için iki kontrol hattı daha gereklidir. Bu hatlardan biri analogdan dijitale çevirme işlemini başlatırken diğeri çevirme işleminin bittiğini gösterir.

            PC Paralel port sınırlı sayıda giriş ucuna sahip olduğundan dolayı analog giriş daha zor olabilir. Bu problemi çözmek için , bu çalışmada analogtan dijitale seri olarak dönüşüm yapan bir çevirici (ADC 831) kullanılmıştır. Bu A/D çevirici 8 bitlik bir çeviricidir.

            Bu çeviricide her bitin çevrimi bir saat darbesi ile kontrol edilir. Bir de çeviricinin seçme ucu vardır.

            Böylece portun biri giriş ikisi çıkış olmak üzere üç ucu kullanılmış olur. A/D çevirici

8 bitlik çevirme işlemini 17 ms’ de yapar ki bu oran 1KHz’ lik bir veri için yeterli olmaktadır.

 

 

4.1. ANALOG- DİGİTAL ÇEVİRME (ADC)

 

            ADC bir analog giriş voltajını alır ve sonra, zamanın belli bir bölümünde analog girişi gösteren bir dijital çıkış kodu üretir. A/D çevirme işlemi genel olarak , D/A çevirme işleminden daha karışıktır ve çok farklı metotlar geliştirilmekte ve kullanılmaktadır.

            ADC’ nin çoğu önemli tipleri  devrelerinin bir parçası olarak DAC’ dan yararlanır. Şekil 4.’de genel olarak bir ADC’ nin blok şeması gösterilmiştir. İşlem için zamanlama giriş saat işareti ile sağlanır. Kontrol ünitesi, çevirme işlemini başlatan START KOMUTUNA cevap olarak, işlemlerin özel dizisini üretmek için lojik devre içerir. Bir op-amp karşılaştırıcı, iki analog girişe ve bir dijital çıkışa sahiptir.

 

            Bu tip ADC’ lerin  temel işlemi aşağıdaki  adımlardan meydana gelir.

 

1.      START KOMUTU darbesi işlemi başlatır.

2.      Clock’ la saptanan bir hızda(oranda) , kontrol birimi,register da depolanan ikili sayıları sürekli olarak yapılandırır(modifiye eder).

3.      Registerdeki ikili sayı DAC ile bir analog gerilime çevrilir, VAX.

4.      Karşılaştırıcı, analog giriş VA ile VAX' i karşılaştırır. VAX < VA ise, karşılaştırıcı çıkışı HİGH (Yüksek) olur. VAX sonunda VA' yı aştığında ( VT = threshold voltage) , karşılaştırıcı çıkışı LOW olur ve register sayısı yapılandırma  süreci durur. Bu noktada , VAX , VA ’ya yaklaşık olur. VAX’ in  dijital değeri olan registerdeki dijital sayı , VA ’nın da yaklaşık dijital eşdeğeridir. Bu sistemin doğruluğunu ve rezolasyonuna bağlıdır.

5.      Çevirme tamamlandığı zaman kontrol logic  EOC ’ yi aktif hale getirir.

 

Bu A/D çevirme biçiminin  birçok çeşitleri arasındaki en temel fark, registerdeki sayıları sürekli olarak yapılandıran kontrol bölümündeki yapısal farktır. Diğer durumda temel düşünce aynıdır. Çevirme işlemi tamamlandığı zaman gerekli dijital çıkış , register da tutulur.

 

4.2. DİJİTAL RAMP ADC

 

Şekil 4. ’deki genel ADC’ nin en basit versiyonlarından  biri register olarak bir ikili sayıcı kullanır ve VAX ³ VA  oluncaya kadar sayıcının birer birer, bir basamak artmasına izin verir.  Bir dijital ramp ADC olarak adlandırılır, çünkü VAX ’ deki dalga şekli bir adım adım rampa’ dır. Sayıcı tipi ( counter-type ) ADC olarak da adlandırılır.

 

Şekil 5. ’ de bir dijital-ramp ADC ’nin blok şeması gösterilmiştir. Bir sayıcı, bir DAC , bir

analog karşılaştırıcı ve bir kontrol AND kapısı içerir. Karşılaştırıcı çıkışı LOW seviyesinde aktiftir(EOC). Şayet çevrilen analog gerilimin (VA ) pozitif olduğunu varsayarsak , işlem aşağıdaki gibi çalışır:

 

1.      START darbesi ile sayıcı sıfıra resetlenir ve yüksek (high) saat (clock) darbelerinin AND kapısı içinden geçerek sayıcıya gelmesini de yasaklar.

2.      Girişteki tüm sıfırlarla , DAC ’nin çıkışı VAX = 0 V olacaktır.

3.      VA > VAX ise, karşılaştırıcı çıkışı ,  EOC , HIGH olacaktır.

4.      START,  LOW’ a döndüğü zaman , AND kapısına imkan verilir ve clock darbeleri sayıcıya girer.

5.      Sayıcı ilerlerken  , DAC çıkışı , VAX , Şekil 5(b) de gösterildiği gibi birer birer adımlarla artar.

6.      VAX , VT (tipik olarak 10-100 µV) den daha büyük veya eşit miktarla VA’ yı aşan bir adıma ulaşana kadar bu devam eder. Bu noktada EOC , LOW’ a gidecek ve sayıcıya darbe akışına engel olacak ve sayıcı saymayı durduracaktır.

7.      Çevirme işlemi, EOC’ de HIGH- LOW geçişi ile işaretlenerek tamamlanmış olacaktır ve sayıcının içeriği VA’ nın dijital gösterilimidir.

8.      Sayıcı , sonraki START darbesi yeni bir çevirme başlatana kadar dijital değeri tutacaktır .

 

4.3. ÇALIŞMA DEVRESİ

             Devrenin açık şeması Şekil 6’da verilmiştir. Devredeki tüm elemanların çalışması için +5 voltluk bir kaynak gereklidir. Bunun için devrede; gerilimi istenen ac düzeyine çekmek için kullanılan bir transformatör, ac sinyali tam dalga doğrultmak için kullanılan bir köprü diyod ve regülasyonlu bir dc gerilimi sağlayan kondansatörlü bir filtre içerir. Daha sonra regülasyonsuz dc gerilimi, +5 voltluk çıkış dc gerilimi elde etmek için IC 7805 gerilim regülatörüne giriş olarak uygulanır. Bu gerilimle devredeki elemanların çalışması sağlanmıştır. Giriş sinyali daha sonra 2.7 voltluk bir zener diyod ile sınırlandırılmıştır. Böylece devreden 2.7 volt’un üzerindeki gerilimlerin geçmesi önlenmiştir. Aslında ADC831 A/D çeviricisi 5 volta kadar dayanabilmektedir. Bu nedenle 2.7 voltluk zener yerine 4.7 voltluk zenerde kullanılabilir. Böylece A/D çevirici aşırı voltajlardan korunarak bozulması engellenmiş olunur. ADC831’e gelen sinyal burada seri olarak dijital sinyale çevrilir. Dijitale çevrilen sinyal Do ile gösterilen uçdan alınarak paralel portun giriş uçlarından birine verilir.


 


            Şekilde ADC831 entegresinin ilgili bacaklarında görülen dalga şekilleri yer almaktadır. Buna göre  CHIP SELECT (CS) ucu LOW’ da iken CLOCK darbesi uygulandı. ADC831 tarafından çevrilen dijital bilgiyi alabilmek için CS ucu sıfıra düşürülmüştür. Hemen arkasından ilk bit (7. Bit) okundu. Daha sonra 9 defa saat darbesi gönderilerek bir baytlık veri okunarak sonuca gidilmiştir. Paralel portun çıkış olarak kullanıldığı uçları 378H ve 37AH adreslerinde, giriş olarak kullanılan uç ise 379H adresindedir. Hangi adreste hangi bilginin bulunduğu Şekil 7’ de gösterilmiştir. Bu çalışmada ADC831’den okuma yapılan uç 379H adresinden, 7.bit (MSB biti) olan portun 11 numaralı ucu ise Busy’ den alınmıştır. Okunan bit ,bir bit sola kaydırılarak (RCL komutu ile) elde bitine alınmakta ve daha sonra elde ki bit BL kaydedicisine kaydırılmaktadır. Böylece 9 okuma sonunda bir bayt’ lık analog bilgi BL kaydedicisinde dijital olarak elde edilmiş olmaktadır. 9 defa okuma işlemi CX kaydedicisine 9 atılarak ve LOOP komutuyla gerçekleştirilmiştir. Referans voltajı 2.7 volt alındığından bilgisayar 2.7V’ u 255(FF) olarak gösterecektir. Buna göre diğer analog voltaj değerleri (0-2.7V arasındaki) basit bir orantı kurularak hesaplanabilir. Devrede ki   1K ‘lık ayarlı direnç ayarlanarak 0-2.7 volt arasındaki analog gerilim değerleri, bilgisayar ekranından 0-255 (00H-FFH) olarak görülecektir.

                   

   

 

            Şekil .7. Adreslerdeki bilgilerin ilk konumu.          

 

 

4.4. OKUNAN SİNYALİN GÖRÜNÜMÜ İÇİN GEREKLİ YAZILIM

 


Paralel porttan okutulan analog sinyalin ekrandan alınması bir program aracılığı ile başarılmıştır. Bunun için PASCAL programlama dili kullanılmıştır. Bilindiği gibi PASCAL dili oldukça yapısal bir dildir. Programların modüllere ayrılarak yazılması imkanı vardır. Ayrıca içerisinde doğrudan “ Assembler rutinleri ” yazılabilir. Bu ise portlardan giriş çıkış yapma işlemlerinde kullanıcıya büyük kolaylık sağlamaktadır. Programın detaylı bir dökümü aşağıda verilmiştir.

 

 

USES CRT,DOS;

 

       PROCEDURE PORT;

       LABEL BAS,BAS1,BAS2,BAS3,BAS4,YINE,OKU;

       CONST

       DATAPORTADR:WORD=$379;

       CLKPORTADR:WORD=$37A;

       CSPORTADR:WORD=$378;

       CLKON:BYTE=$08;{00001000B}

       CLKOF:BYTE=$00;{00000000B}

       CSON:BYTE=$00; {00000000B}

       CSOF:BYTE=$01; {00000001B}

 

       VAR

       PORTDUR:BYTE;

       X:BYTE;

       BEGIN

       X:=0;

       ASM

 

      MOV DX,CSPORTADR;

      MOV AL,CSON

      OUT DX,AL

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA  {GEC˜KME}

 

      MOV DX,CLKPORTADR

      MOV AL,CLKON

      OUT DX,AL

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA

 

      MOV AL,CLKOF

      OUT DX,AL

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA

 

      MOV BL,00

 

      MOV CX,9

   OKU:

      MOV DX,CLKPORTADR

      MOV AL,CLKON

      OUT DX,AL

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA

 

      MOV AL,CLKOF

      OUT DX,AL

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA

 

      MOV DX,DATAPORTADR

      IN AL,DX

      RCL AL,1

      RCL BL,1

      LOOP OKU

     

      MOV DX,CSPORTADR

      MOV AL,CSOF

      OUT DX,AL

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA

      PUSHA;NOP;POPA;PUSHA;NOP;POPA;PUSHA;NOP;POPA

 

      MOV X,BL

 

 

       END;

       DELAY(20);

       WRITEln('DEGER=  ',X);

       END;

 

 

 

       BEGIN

       REPEAT

       PORT;

       UNTIL KEYPRESSED;

       END.

 

 

| ana sayfa | bulanık mantık | yapay zeka | pic | plc | paralel port | mikroişlemciler | assembly | programlama temelleri | elektronik dergiler | program örnekleri |
| universiteler | resmi kurumlar | sertifika programları | download siteleri | iletişim sistemleri | fotoğraf albümü | özgeçmiş | mesaj panosu| arama motorları | mezunlar

 

Sahibi © Öğr.Gör.BÜLENT ÇOBANOĞLU
Tasarım ve Kodlama © BİLGİSAYAR PROGRAMCISI MEHMET YAVAŞ

İçerik hazırlama: BÜLENT ÇOBANOĞLU
Bu siteyi en iyi IE4.0 ve üzeri browser, 1024x768 ekran genişliği ve yüksek renk modunda izleyebiliriniz.
                                                Her hakkı saklıdır.