Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

RS232 Baglanti Problemi

Başlatan rakkoc, 27 Ocak 2012, 23:29:06

rakkoc

Merhaba Arkadaslar asagidaki linkte yazdigim bir uygulama var. yanliz getc ile rs232 den gelen datayi okutamiyorum bir turlu.

   while(1)
   {
      //Debug
      output_high(PIN_B7);

      hexGelen = getc();

      if(hexGelen == 0xA0)
      {
         if(getc() == 0x5F)
         {
            // A0 5F
            ApplyOutPut();
         }
      }
      else if(hexGelen == 0xA1)
      {
            output_high(PIN_B6); // Buraya hic gelmiyor.

         if(getc() == 0x5E)
         {
            // A1 5E XX YY ZZ
            // XX : Port Number
            // YY : High Value
            // ZZ : Low Value
            SetOutPut();
         }
      }
      else if(hexGelen == 0xAA)
      {
         if(getc() == 0x55)
         {
            // AA 55 XX
            // XX : Reset to hex all output pin
            ReSetOutPut();
            ApplyOutPut();
         }
      }
   
   }


http://dl.dropbox.com/u/57820754/74hc595.rar

ferdem

PIC model nedir? CCS C ile seri veri alma işlemini aşağıdaki örnek üzerinden yeniden yapabilirsiniz, veriyi kesme ile almalısınız. Şöyle forumu bir gezin, bu konu en sık konuşulan konulardan.
//picproje.org
//CCS C seri veri kesmesi örnek kullanımı
#include <16F628A.h>
#fuses NOPROTECT, NOMCLR, NOWDT, NOLVP, INTRC_IO
#use delay(clock=4M)
#use rs232(baud=9600, xmit=PIN_b2, rcv=PIN_b1)

unsigned int veri=0;
void main(){
enable_interrupts(global);
enable_interrupts(int_rda);

   while(1){
      output_high(pin_b4);
      delay_ms(1000);
      output_low(pin_b4);
      delay_ms(1000);
   }

}

#int_rda
void seri_veri_geldi(){
veri=getc();
output_toggle(pin_b0);
}

İyi çalışmalar.



VFR

Mutlaka seri haberleşme kesmesi kullanmalısınız.
Alacağınız verinin boyutu hakkında bilginiz varsa buna göre bir buffer oluşturup bilgiyi almalısınız.
Örnek kod şu şekilde olacak.
#INT_RDA 
void SerialInt() 
{ 
   Recieve_String[counter_read]=getchar(); 
   counter_read++; 
   if(counter_read==69)counter_read=0; 
}

rakkoc

Cok tesekkur ederim. kesme kullanmadim ama sorunu cozdum; Ama profesyoneller olarak onerinize gore kodu duzenliyip kesmeli hala getireyim.

Sorunum cok ta basitmis EX8B PIC deneme bordu kullaniyorum C portlarindaki input swichi ON konumunda olunca C6-C7 Rx-Tx pinleri 0 degeri donduruyor herzaman. kimi zaman getC hic 0 donduruyor kimi zaman ise hic bir sey gelmemis gibi davraniyor. OFF yapinca sorun cozuldu. bu board'i yeni kullanmaya basladim. bundan dolayi alisamadim daha.