Rs232- aynı anda veri alışverişi

Başlatan PROTECH_, 04 Ocak 2009, 14:27:17

PROTECH_

merhaba arkadaşlar,
Kafama bi soru takıldı sizinle paylaşayım dedim soru şu:
Pic'in Usart modülü tx ten veri gönderdiği sırada rx gelen veriyi aynı anda alabiliyormu acaba ?
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

Tagli

Emin olmamakla beraber alabilir diye düşünüyorum. Aklıma takılan tek mesele Baud Rate Generator'un (BRG) ortak olması, ama datasheet'ten anladığım kadarıyla alım sırasında RSR (Receive Shift Register), BRG'nin 16 katı hızında çalışıyor, böylece arada gelen veriyi de yakalayabiliyor (olayı doğru anladıysam tabi).
Gökçe Tağlıoğlu

Macera

PIC'in USART modülü full dublex çalışır.

Alıntı YapThe USART can be
configured as a full-duplex asynchronous system that
can communicate with peripheral devices,
Yukardaki açıklama 16F87xA datasheet de bulunmaktadır.
"Art without engineering is dreaming; engineering without art is calculating." -- Steven K. Roberts

PROTECH_

Bende BRG nin ortak olmasından dolayı ne zaman başlarsa başlasın alacağını düşünüyorum tek sorun tranfer kesmesinin işlendiği sırada recive kesmesinin gelmesi...
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

Tagli

RCREG iki katlıdır. Eğer gönderme kesmesini çok uzun tutmazsan (ki normalde tutmaya da gerek yoktur, sadece verinin bulunduğu yerden alınıp TXREG'e atılmasını içermelidir) sorun olmaz. RCREG iki katlı olduğu için içinde 2 byte'lık veri tutabilir, aynı anda da RSR 3. byte'ın alımını yapabilir. Ancak 3. byte'ın alımı sonlandığında RCREG okunmamışsa (hâlâ tam doluysa) taşma olacaktır.

Bu arada şunu da belirtmekte fayda var ki şu ana kadar gönderme kesmesini kullanmam gerekmedi. Gönderme kesmesine ancak gönderme sırasında PIC'in başka işler de yapması gerekiyorsa ihtiyaç olacaktır. İki durum söz konusu:
1) PIC'te bulunan bir X işlemi gönderilecek veriyi seri iletişim hızından daha hızlı olarak üretiyor. Ve verilerin gönderimi bitmeden istenilen sayıda (ki burda bir hafıza sınırlaması olacak) veriyi önceden hazır etmek, fırsat buldukça da veriyi bekleme yapmadan göndermek istiyor. Gönderme kesmesi bu durumda işe yarayacaktır. "Böyle bir şeye neden ihtiyaç duyulsun ki?" diyesim geliyor ama bu çok dar görüşlü bir yaklaşım olur. İhtiyaç olmuş ki koymuşlar demek...
2) PIC'te bulunan bir X işlemi gönderilecek veriyi seri iletişim hızından daha yavaş üretiyor. Bu durumda zaten kesmeye gerek yok. Seri iletişim modülü yeni veri üretilene kadar boş beklemek durumunda. X işlemi veriyi üretir üretmez TXREG'e atabilir, çünkü zaten TXREG boş olacaktır.
Gökçe Tağlıoğlu