avatar_Burak

Baudrate ve BPS Kavramları ile İlgili Hesaplamalar

Başlatan Burak, 01 Temmuz 2016, 03:02:09

Burak

Merhabalar ;

Zaman zaman seri iletişim projelerinde çoğumuzun aklına ve gözüne araştırma sürecinde takılan en önemli iki ifadeden ve birbirileri ile olan bağıntısından uygulamalarınıza yön verebilecek düzeyde bahsedeceğim .

BAUDRATE ve BPS ifadeleri çoğu zaman kafanızda hesap yapmanıza olanak vermemektedir .. Ama halbuki Mikroişlemci frekansının bilindiği durumlarda ve işlemcinin haberleşmeci ile senkron uyuşumunu yakalayabilmek için bunu bilmemiz de gerekmektedir.

Baudrate ifadesini USART ile uğraşan arkadaşlarımız çok yakından tanımaktadırlar ama bunun iletişim hızındaki değeri nedir ? Baudrate bir kural çerçevesinde aktarılan veri yükü demek oluyor ve elbette bu ifade çoğumuz için pekte anlamlı ve açıklayıcı bir ifade olmuyor o yüzden bunu sayısal örneklendirmelerle açıklayalım ..

Diyelim ki haberleşmemizi 9600 Baudrate altında yapıyoruz ve kuralımızda klasik 8N1 kuralı olsun ..

8N1 Nedir ? USART haberleşmede iletişim her zaman bir start biti ile başlar ve bu start biti alçalan kenarla lojik 0'a ulaşan bir bittir yani 0'dır , ardından 8N1 için konuşacak olursak 8 Data biti ile takip eder ve en son bir stop biti ile iletişim nihayet bulur ..
Görüldüğü üzere kuralımızdaki bitleri sayacak olursak : 1 Start Biti + 8 Data Biti + 1 Stop Biti olmak üzere 10 bitlik bir veri yükü sonucunda ancak bir byte'lık karakter aktarımı sağlayabilmekteyiz .. Peki 9600 Baudrate ifadesinin bu denklemdeki hız ifadesi nedir ?

Bir Bitin İletimi İçin Gereken Süre = 1 / Baudrate

Olarak hesap edilir  .....

Yani burada eğer bir bitlik iletişim sağlamış olsaydık , bir bit için geçecek süre  1 / 9600 = 104,16 uS olacaktı ama bizim 8N1 kuralı için ihtiyacımız olan süre 10 adet bitin 9600 baudrate'te iletimi olduğu için bu değeri 10 ile çarpacağız bu durumda ;

10 * 104,16 uS = 1,04 mS olarak karşımıza çıkmaktadır ...

Yani demek oluyor ki 8N1 formatında bir ASCII "A" karakterini 9600 baudrate'te iletiyorsanız ihtiyacınız olan süre 1,04 mS'dir diyebiliriz ...

BPS ifadesinde ise açılımı itibariyle Bits Per Second anlamındaki eşdeğer ifadeyle 1 sn'de iletilen bit sayısı demek oluyor .. Yani 1000 bps ifadesi demek oluyor ki , 1 sn'de 1000 adet bit iletimi gerçekleşmektedir  ... Artık kimsenin bps ile baudrate'i karıştıracağını sanmıyorum ..

Komut gecikmelerini timer'lar ile ölçebilmekteyiz ve zaman zaman iki HSERIN komutu arasında kullandığımız komutların ne kadar süre tuttuğunu hesaplayıp ona göre bir Baudrate seçme şansımız yukarıdaki hesaplardan sonra daha mesnetli olacaktır .. Anladığınız gibi baudrate'in işlemci hızıyla değişmediğini sadece seçilen iletişim formatı ve baudrate ile değiştiğini görmekteyiz ..

Diyelim ki 4 MHz'de çalışan bir işlemcimiz olsun . Bir basit - Single Segment komut assembly'de 4 NOP döngüne tekabül eder ve 4MHz hızında bir işlemci için 1 NOP döngüsü 1 us'dir ve artık ufak bir Timer hesabıyla komut gecikmelerini hesap ederek projelerinize daha mantıklı bir şekilde yön verebilirsiniz .. Buradan yola çıkarak yapacağınız hesaplar sizi iletişimsel aksaklıklardan da ciddi ölçüde kurtaracaktır ..

Burak

Ω Gens Una Sumus Ω

est32


abidin1992


Powered by EzPortal