UART Kesme Sorunu

Başlatan xfrieyt08, 07 Nisan 2015, 03:06:31

xfrieyt08

Merhabalar.Uart haberleşmesinde sorun yaşıyorum . Donanım olarak Expkit kullanıyorum . Veri göndermede hiç sorun yok. Fakat almada sorun var. Donanımsal bir sorun değil. çok farklı bir hex dosyası ile denedim. Aşağıya denediğim kodları ekliyorum .


void interrupt ISR()
{
    if ((RCIF && RCIE) )         // see if interrupt caused by incoming data
    {
        char temp;
        temp = RCREG;     // read the incoming data
       
       UART_Write_Text(temp);
       PIR1bits.RCIF=0;
   
    }

}


void main()
{
      UART_Init(9600);
      PIE1bits.RCIE=1;
      INTCONbits.PEIE=1;
      INTCONbits.GIE=1;


}

Tagli

Veri geldiğinde kesmeye düşüyor musun? Öncelikle alıcı tarafının çalıştığını bir LED yakarak kontrol et. Mesela gelen veri 'a' karakteri ise LED yansın gibi.

Gelen byte'ı UART_Write_Text ile göndermek bana yanlış geldi. O fonksiyon yanılmıyorsam \0 ile biten bir karakter dizisinin pointer'ını alarak çalışır. Ayrıca gönderme mantığı bayrak yoklama ile olduğu için gönderme işlemi uzun süre işlemciyi meşgul eder. Sen bu fonksiyonu kesme içinde çağırıyorsun. Bu durumda işlemciyi tıkaması kaçınılmaz. Bu arada gelen veri olursa USART donanımı overflow olur ve kendini kapatır.

Ayrıca, bildiğim kadarıyla 8 bitlik PIC'lerde RCIF, eğer donanım buffer'ında başka alınmış byte yoksa donanım tarafından otomatik sıfırlanıyor. Bununla ilgili bir satır yazman anlamsız. 16 bitlik PIC'lerde durum farklı ama.
Gökçe Tağlıoğlu

selimkoc

 UART_Write_Text(temp);

ile karakter olarak bir diziyi (temp) gönder ise göremeyebilirsin. hex olarak göndermeyi ve görmeyi dene.

xfrieyt08

şöyle ki Sadece kesme rutinine girdiğimi görmek istedim. Yani d0 pini high yaptım kesme altprogramında, o da olmuyor .

Gökhan BEKEN

Bu projeyi 16f886 için denemiştim gönderme kısmı çalışıyordu, alma kısmını denememiştim ama bir dene istersen: http://extremeelectronics.co.in/pic16f877a-tutorials/usart-library-for-pic-setup-on-mplab-x-ide/
Özel mesaj okumuyorum, lütfen göndermeyin.

xfrieyt08

Linkteki çalışmayı denedim. Gönderme kısmı gayet güzel fakat alma kısmı gene sorunlu.

xfrieyt08

Gökhan abi Sorun Kullandığım kittenmiş.Daha doğrusu benim sadece bir dip switch i gereksiz on mode a(RS232 donanımsal bağlantıya) almamdanmış. 628a aldım onun rx-tx b1 b2 olduğundan çok rahat çalıştı. Sonradan anladım . Aslında bi açıdan iyi oldu. İnmem gereken her detaya bakmış kütüphane yazmış oldum. Tüm yorumlar için teşekkür ederim.

Gökhan BEKEN

Sorunu çözdüğüne sevindim, tebrikler.
Özel mesaj okumuyorum, lütfen göndermeyin.