Seri haberleşmeler veri transferlerinde en fazla kullanılan protokolleri içeriyor. Çünkü veri transferlerindeki öncelikli amaç en az hat ile en fazla bilgiyi aktarabilmektir.  Seri haberleşmeler kaba taslak iki ana başlık altında toplanır. İlki senkron seri haberleşmedir ki bu haberleşme tipinde veri hattının yanında bir de “clock sinyali” yani kare dalga taşıyan hat vardır.  Verilerin her biti bu “clock sinyali”nin düşen ve ya yükselen kenarında okunur.  İkincisi ise asenkron seri haberleşmedir. Bu haberleşme tipinde ise veriler bir “start” ve bir “stop” biti arasında paketler halinde taşınır.

ifwt_fast_data_speed_transfer

Genellikle küçük verilerin transferi için asenkron seri haberleşme kullanılır ki bu tür seri haberleşmelerin en başında RS232 protokolü gelir.  RS232 protokolü, verileri genellikle 8 bitlik paketler halinde transfer eder.

 

 

RS232 Protokolü
PIC MICROCONTROLLER AND EMBEDDED SYSTEMS BOOK(MUHAMMED MAZİDİ)

 

 

Yukarıda gösterilen şekilde transfer edilen veri, A harfidir. Yani ASC2 kodudur. Bu verinin başına bir start biti konmuş yani ilk önce mantıksal-1 sonra mantıksal-0 gönderilmiş. Daha sonra veri yollanmış ki veri 8 bit, “10000010” dir.  Bu 8 bit lik veriden sonra, sırasıyla mantıksal-1 ve mantıksal-0  ile stop biti gönderilmiş.   Pic mikro denetleyicilerinde bu transferin sağlanabilmesi için özel kaydediciler ve özel input/output üniteleri vardır.

Öncelikle RS232 veri trasnferi protokolünü destekleyen tüm denetleyicilerde “SPBRG” kaydedicisi bulunur. RAM’in “Special Function Register” bölümünde yer alan bu kaydedici, haberleşmenin “Bound Rate” oranını yani hız bilgisini tutar.  Hız formülü şu şekildedir. (Fosc/(64*Hız)-1). Eğer  10 MHZ bir denetleyici kullanarak boundrate oranının 9600 olmasını istiyorsanız hız yerine SPBRG ye 15 yüklemeniz gerekir. 15=(10.000.000/(64*9600)-1).  Bu protokol ile ilgili diğer bir kaydedici “TXREG” dir. Bu kaydedici ise gönderilecek veriyi tutar.  Örneğin gönderilmek istenen veri Assembly dilinde şu şekilde gönderilir.

MOVLV 41H     ;  A harifinin ASC2 kodu gönderilmek üzere Wreg 'e yazılıyor

MOVWF TXREG   ;  A harfi önce TXREG kaydedicisine kaydedilerek gönderiliyor.

Aynı şekilde veriyi almak için de “RCREG” kaydedicisi kullanılır.  Veri RX pini üzerinden geldiğinde “RCREG” kaydedicisine kaydedilir.  Veriyi almak için şuna benzer kodlar yazılır;

MOVF RCREG, W  ; RCREG içerisindeki alınan veri Wreg' üzerine aktarılıyor

MOVWF PORTB    ; Wreg üzerine aktarılan veri PortB ye yazılıyor.

Veri transferini kontrol eden ve durumunu belirten bir kaydedici daha vardır. Bu kaydedici ise “TXSTA” kaydedicisidir.   TXSTA kaydedicisi 8 bittir ve her biti haberleşmenin hızı, modu, kontrolü ile alakalı farklı bilgileri tutar.  Aşağıdaki tabloda TXSTA kaydedicisinin bitlerinin hangi bilgileri tuttuğu gsterilmiş.

RS232 TXSTA
PIC MICROCONTROLLER AND EMBEDDED SYSTEMS BOOK(MUHAMMED MAZİDİ)

 

 

Bu kaydedicinin 0. biti eğer D0=1 olursa, gönderilen 8 bit verinin sonuna bir kontrol biti daha ekler buna parity biti deniyor. Bu bit verinin düzgün gidip gitmediğini kontrol etmek için kullanılır. D0=0 olursa veriyi direk yollar.

Kaydedicinin 1. biti TRMT biti olarak adlandırılır ve verinin gönderilip gönderilmediğini kontrol eder.  Eğer veri tamamen gönderildiyse TRMT biti D1=1 olur ve veri yolunun boş olduğuna işaret eder. Veri gönderilirken TRMT biti D1=o dır.

2. bit BRGH bitidir ve haberleşme hızının yüksek mi yoksa alçak hızda mı olacağı bilgisini tutar. D2=0 ise normal hız, D2=1 ise yüksek hız anlamına gelir.

4. bit SYNC biti olarak adlandırılır ve veri transferinin modunu seçer. D4=1 ise veri transferi senkron, D4=0 ise asenkron veri haberleşme yapılacağı belirtilir.

5.bit TXEN bitidir ve haberleşmenin olmasına izin verir. D5=1 ise haberleşmeye izin verir. D5=0 ise izin vermez.  Bu biti veriyi gönderirken “1” yapıp veri göndermediğimiz de “0” yapıyoruz.

6. bit ilk bitin koyduğu parity biti yani 9. bitin gönderilmesine izin verilip verilmeyeceği bilgisi tutar. D6=1 olursa izin verir. D6=0 olursa izin vermez. Biz Parity biti kullanmadığımız için bunu her zaman D6=0 yapıyoruz.

7. bit CSRC biti clock sinyalinin kaynağını seçmek için kullanılır. Eğer asenkron seri haberleşme yapılacaksa bu bite gerek yoktur.

Bir de alıcının durum bilgilerini tutan kaydedici var. Oda “RCSTA” kaydedicisidir.  Aşağıdaki tabloda da bu kaydedicinin bitlerinin tuttuğu bilgileri görüyorsunuz.

RS232 RCSTA
PIC MICROCONTROLLER AND EMBEDDED SYSTEMS BOOK(MUHAMMED MAZİDİ)

 

RCSTA kaydedicisin en önemli biti 7. bit olan Spen bitidir. Veri alırken bu bit’in “1” olması gerekiyor.  Aynı zamanda 4. bitinin de “1” yapılıp asenkron modun seçilmesi gerekiyor.

Gönderme işlemi için son olarak önemli kaydedici PIR1(Peripheral Interrupt Request Register) kaydedicisidir. Bu kaydedici kesme işlemi için kullanılır.  Bu kaydedicinin içerisinde TXIF ve RCIF bitleri bulunur. Bu bitler gönderme işlemi veya alma işlemi yapıldığında mantıksal-1 olurlar.

Örnek olarak veri göndermek için şöyle program yazılabilir.

MOVLW B'00100000'; TXSTA kaydedicinin 5. biti 1 yapılarak gönderime izin veriliyor
MOVWF TXSTA      ; talimatlar TXSTA kaydedicisine kaydediliyor
MOVLW D'15'      ; Haberleşme hızı 9600 olarak belirleniyor. 
MOVWF SPBRG      ; Hız SPBRG kaydedicisine bildiriliyor.

BCF TRISC, TX    ; C portundaki TX pini output olarak ayarlanıyor.
BSF RCSTA, Spen  ; RCSTA kaydedicinin Spen biti set edilerek alıma izin veriliyo

MOVLW A'Y'       ; Y harfi gönderilmek üzere wreg'e yazılıyor.
Bekle 
BTFSS PIR1, TXIF ; Verinin son biti gidene kadar bekle.
GO TO Bekle      ; Eğer giden veri varsa bekle.
MOVWF TXREG      ; Giden veri yoksa Wreg deki veriyi gönder.
 

 

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz