rs232 bağlantısı ile veri gönderme sorunu

Başlatan atunc09, 11 Nisan 2010, 17:11:06

atunc09

Merhaba arkadaşlar, seri porttan devreye veri gönderip led yakmak isyorum,mesela devreye a karakteri yolladığımda bir ledin yanmasıni istiyorum. Arayüz programından gönderdiğim a harfini ya algılamıyor ya da çok denememeden sora algılıyor. Algıladıktan sora devreyi resetlemeden bir daha almıyor. Kod aşağıdadır yardımcı olursanız çok memnun kalırım.

#use delay(clock=4000000)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1 )

char islem;

#int_rda
void kesme()
{
disable_interrupts(int_rda);
islem=getchar();
if(islem=='a')
{
output_d(0x00);
output_toggle(pin_d4);
delay_ms(500);
output_toggle(pin_d5);
delay_ms(500);
output_toggle(pin_d6);
delay_ms(500);
output_toggle(pin_d7);
delay_ms(500);
output_toggle(pin_d0);
delay_ms(500);
output_toggle(pin_d1);
delay_ms(500);
output_toggle(pin_d2);
delay_ms(500);
output_toggle(pin_d3);
delay_ms(500);
}
}
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
   output_d(0xFF);
   enable_interrupts(GLOBAL);
   while(1)
   {
   enable_interrupts(int_rda);
   }
   

}

RcALTIN

#1
Öncelikle gelen karakteri kesme içinde kontrol etmek yerine, while döngüsü içerisinde kontrol etmek daha doğru olur... while döngüsü içerisindeki enable_interrupts(int_rda) yazımınıda while döngüsünün üzerinde tanımlamak gerekir...

RS232 tanımlamasınıda şu şekilde değiştirmeyi deneyebilirsin...
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

ferdem

#2
Kesmeyi sadece kurmak yeterli, enable disable işlemleri donanım tarafından yapılacak, sizin yazmanıza gerek yok. Kesme içinde delay fonksiyonunu kullanmamalısınız. Aşağıdaki linkte en sade haliyle CCS C seri veri kesmesi kodları var, o kod üzerinden devam edin:
https://www.picproje.org/index.php/topic,25051.msg168025.html#msg168025
İyi çalışmalar.