CCS de RDA int sorunu

Başlatan burak_82, 04 Şubat 2006, 08:02:52

burak_82

Arkadaşlar CCS de 18F452 de RDA_isr interrptunu kullandığım bir program var. Proteusta denediğimde sürekli interruptu yenilediğini görüyorum. CCS nin kendi örnek dosyasında da aynı şeyi yapıyor.

gambit1244

arkdaşlar bende aynı sorunu yaşıyorum yardım edebilecek kimse varmı
bu kodu yazıyorum
return komutunu sonradan ekledim acaba olurmu diye ama olmadı
bikez data gonderiyorum led sürekli yanıyor durmadan :((
kesmeden çıkamıyorum
başına sonuna clear_interrupts(int_rda); koydum bicok versiyon denedim
nerde yanlış yapıyorum sizce

#include <18F458.h>
#fuses Hs,NOPROTECT,NOLVP,NOWDT
#use delay(clock=32000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(b) // Port yönlendirme komutları B portu için geçerli
#define led pin_b5    // "led" adında "pin_b5" kelimesine eşit bir sabit tanımlanıyor

#int_rda
void kesme()
{  

disable_interrupts(int_rda);

       delay_ms(1000);
     output_high(led);
     
       delay_ms(1000);
     output_low(led);
 clear_interrupt(int_rda);

}     
void main() {

set_tris_b(0x00);    // B portu tümüyle çıkış olarak ayarlandı.
output_b(0x00);
   enable_interrupts(GLOBAL);
   while(TRUE) {

enable_interrupts(int_rda);
   }
}
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

since1990

rx pinini toprağa bağlayıp denediniz mi? Öyle deneyin. Birde kodunuzu paylaşırsanız dha verimli olur. Kesmeye girdiğinde ledi yakıp söndürmek için
output_toggle(pin_D5);

komutunu kullanırsanız daha verimli olur sizin için. Kesmede vakit kaybetmezsiniz.
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

gambit1244

#3
teşekkür ederim kodun tamamı bu paylaştığım
bu şekilde yükleyip deniyorum

sormak istediğim,
disable interrupts  ve clear interrupts aynı andamı kullanılmalı doğrusu nedir acaba
yada hangisi üstte hangisi altta olmalı
ve kesme fonksiyonunun  başındamı sonundamı olmalı

şimdi tx i topraga verip deneyecegim sonucu yazıcam

edit. topraga verip denedim sonuç aynı :/
son kod bu
break kullanıyorum kesmeden çıksın diye
sonra while true kısmına sürekli b portuna 00 gonderiyorum ama led yanık kalıyor :SS
#include <18F458.h>
#fuses Hs,NOPROTECT,NOLVP,NOWDT
#use delay(clock=32000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(b) // Port yönlendirme komutları B portu için geçerli
#define led pin_b5    // "buton" adında "pin_A4" kelimesine eşit bir sabit tanımlanıyor

#int_rda
void kesme()
{  

disable_interrupts(int_rda);

    output_toggle(led);
 break;

}     
void main() {

set_tris_b(0x00);    // RB0 portu tümüyle çıkış olarak ayarlandı.
output_b(0x00);
   enable_interrupts(GLOBAL);
   while(TRUE) {

enable_interrupts(int_rda);
output_b(0x00);
   }
}
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

ferdem

RCIF interrupt flagi read only dir, kod ile 0 yapılmaz, RCREG den data okunduğunda donanım tarafından temizlenir. Sonuç: Kesme bayrağının temizlenmesi için data=getc(); ile gelen veriyi okumalısınız. clear-disable vs yazmanıza gerek yok, güncellenecek kısım:
int data=0;
#int_rda
void kesme()
{  
data=getc();
output_toggle(led);

}

burak_82 kodunuzun ilgili kısmını görebilir miyiz? Görmeden bir şey söylemek zor. İyi çalışmalar.

gambit1244

#5
diğer arkadaş yazıyı  3 4 ay once yazmış ben konu pisliği olmasın diye buraya yazdım
bilginize şimdi deneyip bilgi vericem

bu bilgi için çok teşekkür ederim ferdem hocam

evet sorun halloldu Allah razı olsun bişey daha öğrendim

dikkatli inceledim ccs c kitabında bu bilgiyi bulamadım
çok teşekkür ederim
bilgi için
programın çalışan son halini ekledim
sorun yaşayan diğer arkadaşlar için yardımı olması dileği ile
program aldığı datanın aynısını ledi yakarak geri gönderiyor

#include <18F458.h>
#fuses Hs,NOPROTECT,NOLVP,NOWDT
#use delay(clock=32000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(b) // Port yönlendirme komutları B portu için geçerli
#define led pin_b5    // "buton" adında "pin_A4" kelimesine eşit bir sabit tanımlanıyor

#int_rda
void kesme()
{  
int data;
data=getc();
output_toggle(led);
printf("%c",data);

} 
void main() {

set_tris_b(0x00);    // RB0 portu tümüyle çıkış olarak ayarlandı.
output_b(0x00);
   enable_interrupts(GLOBAL);
   while(TRUE) {

enable_interrupts(int_rda);

   }
}
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.