18F4520 PIR1 Register TXIF Flag

Başlatan emretunali, 01 Aralık 2012, 13:05:13

emretunali

Merhaba arkadaşlar seri haberleşme ile ilgili bir sorunum var.

Örnegin

putc(50); dediğimiz zaman 50 verisi donanımsal modülden gönderiliyor. Benim sorunum ?
// Gönderilinceye kadar bekle .... <<<<<<

Bunu nasıl oldugunu bir türlü bulamadım.

AVR-GCC olsa..

while(!TXIF); Dediğimiz zaman normalde tampon bellek boşalıncaya kadar beklemesi lazım ama bu ccs c de işe yaramıyor.

Kısacası veri gönderilinceye kadar ya da veri alınıncaya kadar beklemesini istiyorum. Bunu CCS C ' de nasıl yaparım ?

JKramer

struct  {
   unsigned int TMR1IF:1;
   unsigned int TMR2IF:1;
   unsigned int CCP1IF:1;
   unsigned int SSPIF:1;
   unsigned int TXIF:1;
   unsigned int RCIF:1;
   unsigned int ADIF:1;
} PIR1;
#byte PIR1 = 0x00C

Buna benzer bir tanımlama (sizin mikrodenetleyicinin kataloğuna bakıp adresi ve register içeriğini değiştirip) yaptıktan sonra PIR1.TXIF şeklinde ilgili bayrağa ulaşabilirsiniz. Böyle tek tek uğraşmamak için ide'den bütün register tanımalamalarını otomatik olarak üretebilirsiniz.

xoom

Alıntı Yapwhile(!TXIF); Dediğimiz zaman normalde tampon bellek boşalıncaya kadar beklemesi lazım ama bu ccs c de işe yaramıyor.
İşe yaramıyor derken ne demek istediniz bilmiyorum ama o kod orda bekler..fakat sizin kullandığınız modül ne bilmiyorum ama büyük ihtimalle fazla beklendiği için TimeOut hatası veriyordur..

emretunali

Alıntı yapılan: JKramer - 01 Aralık 2012, 13:56:44
struct  {
   unsigned int TMR1IF:1;
   unsigned int TMR2IF:1;
   unsigned int CCP1IF:1;
   unsigned int SSPIF:1;
   unsigned int TXIF:1;
   unsigned int RCIF:1;
   unsigned int ADIF:1;
} PIR1;
#byte PIR1 = 0x00C

Buna benzer bir tanımlama (sizin mikrodenetleyicinin kataloğuna bakıp adresi ve register içeriğini değiştirip) yaptıktan sonra PIR1.TXIF şeklinde ilgili bayrağa ulaşabilirsiniz. Böyle tek tek uğraşmamak için ide'den bütün register tanımalamalarını otomatik olarak üretebilirsiniz.

Teşekkür ederim deniyeceğim.

emretunali

Alıntı yapılan: xoom - 01 Aralık 2012, 14:19:07
İşe yaramıyor derken ne demek istediniz bilmiyorum ama o kod orda bekler..fakat sizin kullandığınız modül ne bilmiyorum ama büyük ihtimalle fazla beklendiği için TimeOut hatası veriyordur..

İşe Yaramıyor derken ide derlemiyor. CCS C hazır kütüphane vs vs üzerine kurulu olduğu için bu şekilde direk erişime izin vermiyormuş. AVR studio ile yapılaibliryordu. Atmega serisi mcu'lar için...

xoom

struct  {
   unsigned int TMR1IF:1;
   unsigned int TMR2IF:1;
   unsigned int CCP1IF:1;
   unsigned int SSPIF:1;
   unsigned int TXIF:1;
   unsigned int RCIF:1;
   unsigned int ADIF:1;
} PIR1;
#byte PIR1 = 0x00C

while(!PIR1.TXIF);


Bu Şekilde denedin mi?

esensoy

ccs in büyük bir eksiği aslında, başlık dosyalarına datasheet te ki isimlerle tanımlamalarını yapmalılar,
En tehlikeli an "zafer" anıdır.