CCS C UART DataBits StopBit ve Parity ayarları

Başlatan esensoy, 03 Ekim 2013, 14:00:52

esensoy

CCS te program içinde uartın baud değerini değiştirebiliyoruz, ama data bit stop bit gibi değerleri kendi fonksiyonlarıyla değiştiremiyoruz,
Farklı stream adları vererek bu durum aşılabiliyor, yani;
#use rs232(baud=9600,parity=e,xmit=PIN_C6,rcv=PIN_C7,bits=7,stop=2,errors,stream=bir)
#use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop=1,errors,stream=iki)
fputc(iki, 0x30);
fputc(bir, 0x30);

ile ayrım yapılabiliyor,
Fakat bu durumda da program içerisinde bir den mi iki den mi gideceğini bulabilmek için, if ya da switch ya da uygun seçici fonksiyon kullanmak gerekiyor ve bu da veri gönderirken fazladan işletilen kod dolayısıyla fazladan zaman demek,

Bu durumu herhangi bir aşma yöntemi var mı? örneğin pic18f serisi için eepromdan uart ayarını okutup putc ve getc yi bu ayara göre ilgili satıra dallandırmak mümkün mü?
En tehlikeli an "zafer" anıdır.

yldzelektronik

Selamlar.

putc veya getc tam olarak ccs de nasıl çalışıyor bilmiyorum.Ancak xc8 de gördüğüm kadarıyla yalnızca buffera veri yazıyor yada bufferdaki veriyi kopyalıyor.Tx rx bufferdan söz ettiğim aşikar.Şimdi data sheet incelediğinde ;(kimseye bir göndermem yok  :-[ )

Sayfa 304 de TXSTA registeri var.Bu registerin adresi main.h veya başka bir yerde

#byte TXSTA = getenv("SFR:TXSTA")

şeklinde declare edildiğinde programın istediğiniz herhangi bir noktasında bu registera direkt müdahele edebilirsiniz.Ancak eğer register ile bit düzeyinde işlem yapacaksanız o halde;

#byte TXSTA = getenv("SFR:TXSTA")
#bit TX9D = TXSTA.0
..
..
..
#bit CSRC = TXSTA.7

şeklinde bildirim yapmalısınız.Böyle bir durumda herhangi bir yerde sadece bit ile belirttiğiniz isimlere değer vererek işlem yapabilirsiniz.

TXSTA.0 = 1; vs gibi bildirimler hata mesajı almanıza sebep oluyor.

Genel olarak bu bahsettiğim uygulamayı bildiğim kadarıyla bütün registerler için yapabilirsiniz.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.