Seri İletişim Alıcı sorunu

Başlatan matador, 25 Temmuz 2012, 23:10:23

Salih

Alıntı yapılan: kantirici - 06 Eylül 2012, 17:14:33
bir 877a dan;
  
   while(1) 
   {
    delay_ms(1000); 
    printf("Deneme 54");
    output_toggle(pin_d0);
   }


ile sürekli aynı veriyi yolluyorum alıcı tarafında ise;
#int_rda   
void serihaberlesme_kesmesi ()
{
i++;
indis=0;
 do{
   klavye[indis]=getchar();

   if(klavye[indis]=='4')break;
   indis++;

 }while(1);
 
 lcd_gotoxy(1,2);
 printf(lcd_putc,"Kesme %d",i);

         printf("\n\rgelen:%s  sira:%d\n\r"klavye,i);
         lcd_gotoxy(1,1);
         printf(lcd_putc,":%c %d",klavye[0],i);
 if(i>25)i=0;
 for(v=0;v<20;v++)klavye[v]=0;
 }


ile veriyi alıyorum.Veri sonu için 4 geldimi duruyorum.Seriporttan gelen veriyi aldıgım klavye dizisini de bilgisayara yolluyorum.Hem kendi programımda hemde hyper terminalde bu kodlar ile ;
gelen:DeY[Y???Deneme 54  sira:2
"gelen:DeDeneme 54  sira:18"
gelen:De?54  sira:3


gibi bir geri dönüş alıyorum.İşin ilginç yanı arada sırada olması gereken "gelen:Deneme 54  sira:18" gibi veriyi alabiliyorum.

Sonradan diziyide sıfırlamayı denedim ama yine olmadı.

Gelen veride başlangıcı garantilemek için 'De' karakterlerini görünce diziye almayı başlat.

kantirici

#16
"DE"den sonra her zaman "Deneme 54" gelmiyor sorun orada.
"DeY[Y???Deneme 54" veri bu şekilde veya " De?54   " bu şekilde de gelebiliyor.

Ayrıca bu hatanın altında yatan sebebi bulmam lazım.

mesaj birleştirme:: 06 Eylül 2012, 19:12:18

arkadaşlar iki picte bilgisayara sorunsuz veri gönderiyor.Fakat picler kendi aralarında anlaşamıyorlar bir türlü.sorun nerede olabilir acaba?
Alıcı taraftaki kesmede bir problem oluyor ama ne?

matador

Her ihtimale karşı başlangıçta kesme bayraklarını temizleyin. Başıma gelen bir durum var geçen sene güç kaynağım yoktu bu yüzden yaptığım devreleri pille aküyle besliyordum ve pic saçma sapan işler yapıyordu bi tane atx aldım yaptığım devreler sorunsuz çalışmaya başladı. Beslemeleri kontrol edin.


Bu arada yaşadığım sorunu hala halledemedim. Bu derleyicinin son versiyonu kaçtır bilen var mı?

kantirici

Deneme kartım usbden besleniyor.Bu yüzden beslemede problem olmadıgını düşünüyorum.
ccs c 4.135 son herhalde. http://www.sonsivri.to/forum/index.php?topic=33138.50 Burada sayfanın en alt kısmında 3.134 için link var indirebilirsin.


matador

#19
Eyvallah deneyim bi bu sürümü.

mesaj birleştirme:: 06 Eylül 2012, 22:08:44

Hocam indirdim son sürümü kodu derliyorum. ROM ve RAM kullanımı %0 yazıyor. Sonra isiste deniyorum ve şu hatayı alıyorum



kodda bu:
  #include <main.h>
  #include <math.h>
  #include <stdio.h>
  #include <string.h>
  
  
#int_RDA
void  RDA_isr(void) 
{
   char kod[10];
   int veri;
   char gps[60];
   int art;
   
   disable_interrupts(GLOBAL);
   disable_interrupts(INT_RDA);
   for(veri=0;veri<7;veri++)
   {
      kod[veri]=getchar();
      putchar(kod[veri]);
      output_d(0xff);
   }
   if(kod[0]=='$'&&kod[1]=='G'&&kod[2]=='P'&&kod[3]=='R'&&kod[4]=='M'&&kod[5]=='C'&&kod[6]==',')
      {
         printf("\n\r");
         for(art=0;art<60;art++)
         {
            gps[art]=getchar();
            putchar(gps[art]);
         }
         break;
      }
   return;
}



void main()
{
   setup_timer_3(T3_DISABLED | T3_DIV_BY_1);
   setup_timer_4(T4_DISABLED,0,1);

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   while(TRUE)
   {
      
   }
}


Bu neden olur.

kantirici

#20
hocam kullandığın işlemciyi ve konfigürasyon ayarlarını programa define etmemiş görünüyorsün?
İsisde deneme yapmak için konf. gerek yok ama işlemciyi tanımlamanda da derleyici hata vermesi gerek  :o

Ayrıca bende sorunumu hala çözebilmiş değilim :(

matador

#21
main.h içinde var onlar.

Bir şey keşfettim pic ilk çalışma durumunda veriyi ayıklıyor sonrasında ayıklamıyordu. Reset attıkça sorun yok bu dizinin içini temizlemenin bir yolu var mı?


Alıntı yapılan: kantirici - 07 Eylül 2012, 11:53:19
hocam kullandığın işlemciyi ve konfigürasyon ayarlarını programa define etmemiş görünüyorsün?
İsisde deneme yapmak için konf. gerek yok ama işlemciyi tanımlamanda da derleyici hata vermesi gerek  :o

Ayrıca bende sorunumu hala çözebilmiş değilim :(

Sizin sorununuz da baud veya kristal sorunu olabilir mi?

Sdttn

Eğer RF alıcı kullanıyorsanız kesme kullanmayın çünkü parazitleri de  veri olarak değerlendirip kesme fonksiyonundan hiç çıkmıyor MCU.

kudretuzuner

Bir şey keşfettim pic ilk çalışma durumunda veriyi ayıklıyor sonrasında ayıklamıyordu. Reset attıkça sorun yok bu dizinin içini temizlemenin bir yolu var mı?
Merhaba
Üzerinde çalışmakta olduğum projede,data yolladıktan sonra  ve giden datayı geri alıp görme sonunda yazılımsal olarak RESET ettirip başa gelmek çok sorunu hallediyor.Ben de kolayını böyle buldum.

Amatör

matador

Alıntı yapılan: Sdttn - 07 Eylül 2012, 20:57:27
Eğer RF alıcı kullanıyorsanız kesme kullanmayın çünkü parazitleri de  veri olarak değerlendirip kesme fonksiyonundan hiç çıkmıyor MCU.

isiste deniyorum devreyi yaptığımda da seri iletişimli rf transreceiverler den kullanmayı düşünüyorum.

Alıntı yapılan: kudretuzuner - 07 Eylül 2012, 22:15:09
Bir şey keşfettim pic ilk çalışma durumunda veriyi ayıklıyor sonrasında ayıklamıyordu. Reset attıkça sorun yok bu dizinin içini temizlemenin bir yolu var mı?
Merhaba
Üzerinde çalışmakta olduğum projede,data yolladıktan sonra  ve giden datayı geri alıp görme sonunda yazılımsal olarak RESET ettirip başa gelmek çok sorunu hallediyor.Ben de kolayını böyle buldum.

Hocam yaptığım devre sadece bir iş yapmayacak. ds1307 den saat bilgisini okuyacak kumandadan gelen bilgileri okuyacak gpsden gelenleri okuyup değerlendirecek vs... sisteme reset atarsam iş çığırından çıkar. Bu dizi değişkenleri sıfırlamanın bir yolu var mı?