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.

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;

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.