877 seri porttan birşey gelmese dahi int_rda kesmesi problemi

Başlatan burak ozturk, 25 Haziran 2013, 20:08:45

burak ozturk

16f877 seri porttan birşey gelmese dahi sürekli kesmeye giriyor, sorunun interrupt bayraklarından kaynaklandıgını düşündüm ancak daha öncede kullandıgım ve çalıştırdıgım programların tümünde böyle, deneme boardu kullandıgımdan donanımdan da şüphelenemiyorum, şuçluyu compiler ilan etmeye başladıgımdan muhakkak kaçırdıgım birşeyler oldugunu düşünüyorum , programıma ustalar bir göz atabilirler mi ?

   
#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1, STREAM=anemo)
            
char   nmea[];
int data1[8]={0x3f,0x73,0x79,0x37,0x3f,0x3f,0x3e,0x78};


#define     DATA       PIN_B1
#define     LOAD       PIN_B2
#define     CLK        PIN_B3

#include "MAX7219.c"

#int_rda 
void serihaberlesme_kesmesi ()
{

   int i=0;	
   disable_interrupts(int_rda); // int_rda kesmesini pasif yap

   nmea[i]=getc();
   i++;


   if (nmea[i]='/n')
   {
   i=0;
   display_init(1);
   display(1,nmea[7]);
   display(2,nmea[8]);
   display(3,nmea[9]);
   display(4,nmea[11]);
   display(5,nmea[15]);
   display(6,nmea[16]);
   display(7,nmea[18]);
   }
   

   
  if(nmea[22]=='V')
   { 
   display_init(0);
   display_digits(data1,3);
   }
   
 

}   
*/
/********* ANA PROGRAM FONKSİYONU********/

void main ( )
{

  
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   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ışı
   enable_interrupts(GLOBAL);  // Aktif edilen tüm kesmelere izin ver

   while(1) // Sonsuz döngü
   {
      enable_interrupts(int_rda); // int_rda kesmesi aktif
   }
  
}
 


seri porttan birşey gelmediginde bile int_rda ya dallanıyor.kesme içerisinde bir portu high a çektiğimde direk o şekilde kalıyor.   
happy coding.

Erol YILMAZ


burak ozturk

hocam ilginize çok teşekkürler pull up yaptım, yaparken de boarddaki max 232 den şüphelendim halloldu :) osilaskopla da bakmıştım çıkış veriyordu ama göremedigim bir sorunu varmış demekki. teşekkür ediyorum hocam tekrar.
happy coding.

Tagli

Gökçe Tağlıoğlu

burak ozturk

Evet hocam max232 pini high a cekiyor,sikintim pull up tan degil , entegrenin kendisindenmis degistirdim direk calisti ama iki gunumu yemis oldu :) tekrar tesekkurler
happy coding.

Carpediem042

yine iyi iki günü yemiş ben iki hafta kurduğum bi rf devresi için uğraştım yeterince tecrübem olmadığı içinde çok uğraştım ama arızalı bir kristal varmış sıfır taktığım kristali değiştirdim bütün sorun kalktı