11 Mayıs 2021, 11:05:06

Haberler:

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


RS232 Baglanti Problemi

Başlatan rakkoc, 28 Ocak 2012, 02: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.

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.