Ccs uart sorunu neden interrupt üretmiyor

Başlatan smit, 30 Temmuz 2009, 21:35:59

smit

Herkeze merhaba

rs232 ile uğraşırken hiç beklemediğim bir sorunla karşılaştım çözümünü 2 gündür uğraşmama ramen hala bulamadım.

devrem aşağıdaki gibidir.





baund rateleri 9600 olan 2 tane seri bilgi yollayan birim mevcut, hangisini dinleyeceğimi 74151 multiplexer ile seçiyorum ve pice giriyor. Proteusta devre sorunsuz çalışıyor.

Gerçek hayata geçtiğimde ise #int_rda interrupt\'ını üretmediğini gördüm. Pic gelen bilgiyi göremiyor.

Denemek için max3232 li küçük bir prob yaptım picin RX bacağına deydirdiğimde bilgisayarda bütün bilgileri görebiliyorum yani bilgiler pice ulaşıyor.


18F4620 \'yi 8Mhz kristal ve \"4 x pll\" aktif şekilde kullanıyorum program kısmı ise şu şekilde

#include <18F4620.h>
#FUSES NOWDT,WDT128,H4,NOPROTECT,BROWNOUT,NOPUT,STVREN,NODEBUG,NOLVP,NOWRT,NOWRTB,NOWRTC,NOCPD,NOCPB,NOEBTR,NOEBTRB,CCP2B3
#device ADC=10
#use delay(clock=32Mhz,oscillator=8Mhz)


#use rs232(baud=9600, uart, parity=N, stop=1,bits=8)

#define FAST_GLCD

#include \"HDM64GS12.c\"
#include <MATH.H>
#include \"graphics.c\"
 
.
.
.
.
.

#INT_RDA
void SeriVeriAl(void)
{
veri=getc();
alll=true;
}

void main(void) // Ana program
 
{


set_tris_b(0xFF);
set_tris_e(0xFF);


setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
 setup_timer_0(RTCC_INTERNAL);
 setup_timer_1( T1_INTERNAL | T1_DIV_BY_1);
 setup_timer_2(T2_DISABLED,0,1);
 setup_timer_2(T2_DIV_BY_4, 255,4);
 setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_wdt(WDT_OFF);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
clear_interrupt(INT_RDA);
enable_interrupts(INT_RDA);
disable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
 
setup_adc( ADC_CLOCK_INTERNAL );
setup_adc_ports(  AN0_TO_AN2);

do{

if(alll){sprintf(dene3,\"G\");glcd_text57(15,8,dene3,1,ON);}
}while(TRUE); //Sonsuz Döngü

}


Bu şekilde seri porttan herhangi bir bytelık bilgi aldığında ekranda G yazması lazım. Ama Proteusta olmasına ramen gerçekte olmuyor.

bunun nedeni hakkında birkaçtane yorum yapabilirsek daha kolay çözebilirim.

justice_for_all

kardes
if(alll){sprintf(dene3,\"G\");glcd_text57(15,8,dene3,1,ON);alll=false;}

ayrıca pice hangi bacanğın reciever hangi bacağın transmitter olacağını tanıtmamışsın.

bu programın hatasız derlendiğinden eminmisin çünkü ben değişkenleri tanımlama göremiyorumda.

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın