Arkadaşlar daha öncede yazmıştım. sim908 gsm modülü ile çalşmaya başladım. RS232 ile şu anda pc-module arası iletişimde sorunum yok (EVB board ile kullanıyorum modülü). PC-pic arası iletişimde de sorunum yok. ikiside çalışıyor. fakat Pic-gsm module arası iletişimi kuramadım bi türlü.
Yaptığım işlemi şu şekilde anlatayım
-Tx-Rx pinlerini yer değiştirdim (cross )
-C2 pinine bir led bağladım ve herhangi bir veri geldiğinde 1, veri kesilince 0 oluyor. (serihaberlesme_kesmesinin içinde)
***sorun şu= veri geldiğinde led hiç sönmüyor. buda fgets(klavye); komutunda takıldığını gösteriyor.
acaba nerede hata yapıyorum? şimdiden teşekkürler
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN // dont change
#use delay(clock=48000000) // dont change
#build (reset=0x1000, interrupt=0x1008) // new addresses
#org 0x0,0xfff {} // reserved space
#include <lcd_flex.c>
#use rs232 (baud=57600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1, bits=8)
// --------------------------------------------------------------------------------------------------------------------------------
char klavye[80]; // klavye isminde 80 üyeli bir dizi tanımlanıyor
#int_rda // RX ucuna veri gelince meydane gelen kesme
void serihaberlesme_kesmesi ()
{
disable_interrupts(int_rda); // int_rda kesmesini pasif yap
output_high(pin_c2); // RC5 çıkışı lojik-1
fgets(klavye); // String ifadeyi al ve "klavye" adlı dizi değişkenine aktar.
printf(lcd_putc,"\f%s",klavye); //
Lcd'yi temizle ve klavye string ifadesini LCD'de göster
output_low(pin_c2); // RC5 çıkışı lojik-0
}
/********* ANA PROGRAM FONKSİYONU********/
void main ( )
{
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
output_low(pin_c2); // RC5 çıkışı ilk anda sıfırlanıyor
lcd_init(); // LCD'yi hazırla
enable_interrupts(GLOBAL); // Aktif edilen tüm kesmelere izin ver
while(1) // Sonsuz döngü
{
enable_interrupts(int_rda); // int_rda kesmesi aktif
}
}