uart1 rx bir süre sonra bilgi almıyor.

Başlatan rree, 23 Şubat 2014, 00:23:25

rree

   Pic18f45k22 keşke onu seçmeseydim.
    uart1  telit865  tx rx bağlı. Datalar  gecikmeli aralıkla gelirse problem yok. datalar  ardı ardına geldiğinde  pic rx den data almıyor.

30 sn aralıklarla setup_uart(9600,Uart_1); emrine tekrarlarsam tekrar data almaya başlıyor ama bu hoşuma gitmedi

1-Datalar sıkda gelse uartın kilitlenmesini nasıl önleriz.
2-Usartın kilitlendiğini nasıl anlarız.


#int_RDA
void  RDA_isr(void) 
{int8 Rx1Dati,i;
    //char RxDataTemp[30],RxDataGlb[30];
  //Rx1_Telit_Kesmesi();
   Uart_1_Kapa();// disable_interrupts(INT_RDA);
   Rx1Dati=Getchar(Uart_1);
  
   if(Rx1Dati!=0x0A)
      {
         
         if (Rx1Dati==0x0D) 
             {  
                RxDataTemp[Rxj]=0; // '0' karekteri ekle
                For (i=0;i<=29;i++)
                   {
                      RxDataGlb[i]=RxDataTemp[i]; // Datayı aktar
                      RxDataTemp[i]=0;
                   }    
                RxDataGlb[29]=0;// Taşma olmasın
                Rxj=0;
                Rx1DataGeldi=1;
                GsmStatusAL();
                
             }
             else
             {  
                if(Rx1Dati==0)
                  {
                    RxDataTemp[Rxj]=' '; //Eğer sıfır ise boşluk yap
                  }
                  else
                  {
                    RxDataTemp[Rxj]=Rx1Dati; // Datayı Tempe Al
                  }
                
               
               Rxj=Rxj+1;
             } 
      }
   Uart_1_Ac();//enable_interrupts(INT_RDA);
}

yldzelektronik

1.si Uartın kilitlenmesi ne demek?Kilitlendiğini düşündüren nedir?

2.si '0' ataması için Katar[1] = 0 yapamazsın!Çünkü 0 ile '0' farklı şeyler!İlki tam sayıdır.İkincisi ASCII karakter tablosunda hex 30 değerlikli sayıdır!

Bir diğer konu gets fonksiyonunu kullanmayı denemeni öneririm.Çünkü gsm modem bir bytetan fazla veri gönderiyordur.Haliyle verileri kaçırıyor olabilirsin.

Son olarak kesme çıkışında kesme bayrağını silmeyi dene.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

rree

#2
Bilgisayarın pc den seri porttan gözlüyorum. telit tx den pic gönderiyor.
                                                                                                                                         
+CRING: VOICE                                                                                                                           
                                                                                                                                         
+CLIP: "+90xxxxxxxxxx",145,"",128,"",0                                                                                                   
                                                                                                                                         
OK                                                                                                                                       
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 2                                                                                                                               
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 3         Buraya kadar çalıştı
                                                                                                 
                                                                                                                                         
#DTMFEV: 3         Bundan sonra pic işlem yapmıyor ama Main ana bloğundaki led yak sndür işlemi led den gözlüyorum.                     
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 2                                                                                                                               
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
#DTMFEV: 2                                                                                                                               
                                                                                                                                         
#DTMFEV: 3                                                                                                                               
                                                                                                                                         
#DTMFEV: 1                                                                                                                               
                                                                                                                                         
NO CARRIER                                                                                                                               
                                                                                                                                         
+CRING: VOICE                                                                                                                           
                                                                                                                                         
+CLIP: "+xxxxxxxxxxxx",145,"",128,"",0       Artık telefon açılmıyor  Ancak komple enerji kapatırsam tekrar açılıyor.                   
                                                                                                                                         
+CRING: VOICE                                                                                                                           
                                                                                                                                         
+CLIP: "+90xxxxxxxxxx",145,"",128,"",0                                                                                                   
                                                                                                                                         
+CRING: VOICE                                                                                                                           
                                                                                                                                         
+CLIP: "+xxxxxxxxxxxx",145,"",128,"",0                                                                                                   
                                                                                                                                         
+CRING: VOICE                                                                                                                           
                                                                                                                                         
+CLIP: "+xxxxxxxxxxxx",145,"",128,"",0                                                                                                   
           
ZsayacA=ZsayacA+1;
             if(ZsayacA>200){
                  ZSayacA=0;
                 // setup_uart(9600,Uart_1);
                  Output_bit(Uart1_Rx_CREN,0);
                  DelayRE_msx10(100);
                  Output_bit(Uart1_Rx_CREN,1);

main kısmına döngü içinde yukarıdaki programı yazdım çözmedi ama setup_uart(9600,Uart_1);
devrede olursa tekrar data almaya başlıyor  o zaman kesintiler oluyor.

MrDarK

interrupt içindeki yaptığınız işlemleri kısaltın. Büyük ihtimalle çerçeve hatası denen şeyi alıyorsunuz mcu'da bununla ilgili ccs'de ERORRS diye bir komut vardı yanlış hatırlamıyorsam.

GL865'i 18f4620 ile kullandım aynı donanımda takılı olan 3 tane daha donanımsal interrupt cihazı olmasına rağmen herhangi bir kilit durumu söz konusu olmadı. Eğer hardware uart kullanıyorsanız yapmaması lazım.
Picproje Eğitim Gönüllüleri ~ MrDarK

OptimusPrime

tıkandığı zaman OERR bitini kontrol et eğer bu bit 1 ise bir şekilde alma anında buffer 2 den fazla karakter alarak doluyor demektir...
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

rree

Arkadaşların önerilereine  dikkate alarak   uzun işlem yapan fonksiyonlra   Uart1_Rx_Kapa();  Uart1_Rx_Ac(); fonksiyonu ekledim tıkanma  problemi çözüldü.


F493

Merhaba,

  kesme girişinde Overrun Error, Framing Error, parity Error, rx error vb.. flagleri kontrol edin ve bunlardan birisi var ise bu flagleri temizleyin alma dizisini 0. index'e alın ve yeniden start karakterini bekleyin.
AlmaKesmesi
{
    if (OE || FE || PE || RE)
    {
       OE =  0;
       FE  = 0;
       PE = 0;
       RE = 0;
      diziyi başa al. degiskenleri sıfırla
     }
     else
     {
          data al...
         ....
     }
}

İyi çalışmalar.