Site icon Ercan Koçlar

UART İletişim Protokolü ve MikroC Kütüphanesi

uart-kapak

uart-kapak

This post is also available in: English



UART Nedir

UART İletişim Protokolü

Olumlu Özellikler Olumsuz Özellikler
Sistem maliyetsizdir sadece 2 kablo ve GND ile bağlatı kurulur( kablosuz iletişimde GND olmaz) Yüksek hız istenmeyen uygulamalarda kullanılabilir
Sadece 1 alıcı ve 1 verici ile sistem çalışır Diğer seri iletişim protokolleri gibi aynı hat üzerine birden fazla ünite bağlanamaz. Herhangi bir şekilde master-slave ilişkisi yoktur iletişim ancak 2 ünite arasında gerçekleşir
Karmaşık değildir eşlik biti ile verileri hızlı olarak doğrular Haberleşme sağlayan alıcı ve verici aynı hızda haberleşmek zorundadır
RF verici -alıcı , ethernet , internet gibi sistemlerde ve PC – PIC yada PC – PC bağlantılarında kullanılır Büyük veri gönderimlerinde  zaman alır
 Gerekli tedbirler ile I2C veya SPI gibi seri iletişim protokollerinin aksine uzun mesafelerde kullanılabilir.  Seri iletişim protokolü olduğundan bütüm veri parçalanıp seri olarak gönderilmelidir.
 İletişim esnasında herhangi bir saat darbesine ihtiyaç yoktur.  Tek seferde veri gönderim boyutu en fazla 9 bit ile sınırlıdır

 

UART Protokolü Nasıl Çalışır

 

A-  UART Protokolü Veri Gönderme ve Alma (Tx – Rx)

UART protokolünde uyulması gereken veri kalıbı

 

A1 – Başlangıç Biti

UART protokolünde başlangıç biti gönderilmesi

 

A2 – Ana Veri

UART protokolünde veri gönderilmeye LSB den başlanır

 

A3 – Eşlik Biti

UART protokolünde eşlik biti hesaplama

 

A4 – Bitiş Biti

UART Protokolü bitiş biti gönderilmesi

 

B-  UART Protokolünde Haberleşme için İstenilen Hız ve Gerekli Zamanı Hesaplamak

 

UART Protokolü Sonuç


 

UART Protokolü MikroC Kütüphanesi

Fonksiyonlar

 

UART_VERI_TAMPONU Genel Dizisi

 

– UART_ESLIK_BIT_HESAPLAMA Fonksiyonu

Fonksiyon : unsigned char UART_ESLIK_BIT_HESAPLAMA(unsigned char VERI)

Amacı :

Parametreler :

Kullanım Şekli:

UART_ESLIK_BIT_HESAPLAMA(VERI);//değişken yada direk veri yazılabilir

Geri Bildirim : Gerekli eşlik bitini geri döndürür

 

UART_GONDERILECEK_VERI_AYIKLAMA Fonksiyonu

Fonksiyon: void UART_GONDERILECEK_VERI_AYIKLAMA(unsigned char VERI)

Amacı : Ana veriyi gönderilmeden önce parçalara ayırarak “uart_veri_tamponu” na yükler

Parametreler: 

Kullanım Şekli :

UART_GONDERILECEK_VERI_AYIKLAMA(VERI);

Geri Bildirim :

 

– UART_VERI_GONDER Fonksiyonu

Fonksiyon :  void UART_VERI_GONDER(unsigned char VERI)

Amacı : 8 bitlik veriyi alıcıya gönderir ( eşlik bitini kendi içerisinde hesaplar ayrıca hesaplamaya gerek yoktur)

Parametreler :

Kullanım Şekli :

bilgi=0b00001111;

UART_VERI_GONDER(bilgi) ; // bilgi değişkenine atalı 8 bit veriyi gönderir

Geri Bildirim : Geri bildirimde bulunmaz

 

UART_AYIKLANMIS_VERIYI_BIRLESTIR Fonksiyonu

Fonksiyon: unsigned char UART_AYIKLANMIS_VERIYI_BIRLESTIR(unsigned char *veri_hatasi)

Amaıc: Parçalanmış olarak gelen veriyi bir bütün haline getirip anlamlı bilgiyi taşıyan 8 biti içerisinden alır.

Parametreler:

Kullanım Şekli:

unsigned char hata_kodu;

UART_AYIKLANMIS_VERIYI_BIRLESTIR(&hata_kodu);//hata kodu değişkenine pointerin aldığı değer atanır

Geri Bildirim:

 

– UART_VERI_AL Fonksiyonu

Fonksiyon : unsigned char UART_VERI_AL(unsigned char *hata_kodu)

Amacı : Vericiden gelen 8 bitlik veriyi alır ve kontrol eder

Parametreler :

Kullanım Şekli:

veri=UART_VERI_AL(hata,10000) ;//gelen bigli veri değişkenine atanır

Geri Bildirim :

 

– İletişim Hızının Belirlenmesi

#define UART_ILETISIM_HIZI Delay_us(833);// (1/bps)*1000000 =xxxus

 

Fonksiyonların Uygulanması

Verici Kod Örneği

 
//UART PIN TANIMLAMALARI
 sbit UART_RX at RC7_bit;
 sbit UART_TX at RC6_bit;
 sbit UART_RX_Direction at TRISC7_bit;
 sbit UART_TX_Direction at TRISC6_bit;*/

void  main()
{
    unsigned char veri;
    ADCON1=13;
    CMCON=7;

    veri=0b00001111;//8 bit ham verimiz

    UART_VERI_GONDER(veri) ; //veriler verici Pinden gönderilir  
}

 

Alıcı Kod Örneği

//UART PIN TANIMLAMALARI
 sbit UART_RX at RB2_bit;
 sbit UART_TX at RB3_bit;
 sbit UART_RX_Direction at TRISB2_bit;
 sbit UART_TX_Direction at TRISB3_bit;


void  main()
{
    unsigned char veri =0 ,hata=0;
    ADCON1=13;
    CMCON=7;
   
   //Pinlere bir LED bağlandı ve başlarken söndürüldü
    trisb.rb1=0;
    portb.rb1=0;
  

 do{
     veri=UART_VERI_AL(&hata) ;//veri alma fonksiyonu-
   }while(koşul);
/*not:yukarıdaki döngü koşulu kullanıcıya bırakılmıştır istenirse kablolu iletişimde 0 başlangıç biti beklenebilir ancak kablosuz iletişimde
en az 8 bitlik ön doğrulama verisi kullanılması gerekir bu sebeple veri iletişimine başlama döngüsü buradan ayarlanmaktadır.*/

if(hata==0)//veri aktarımında hata yok ise-pointer okunur sıfır ise hata yok demektir.
  {  
    if(veri==0b00001111)
      {
        portb.rb1=1;// veri doğru gelmiş ise LED i yak
      }
  }
}

SONUÇ


Kütüphane Dosyaları

 


Yararlanılan Belgeler


 

Exit mobile version