RS232 ve ATX-ARX34 ile tecrubesi olan arkadaşlar?

Başlatan toyo, 02 Mayıs 2012, 18:15:46

toyo

Alıcı-verici ile ilgili aşağıda vereceğim kodları isis programında denedim çalışıyor.Boarda kurdum devreyi 10 defa yollarsam bilgiyi anca alıyor alıcı,belki 15.defada  belkide hiç alımıyor.(Board bağlantılarında sorun yok)Asıl veriyide 5-6 defa göndermeyi denedim yine olmadı.Arada rf alıcı verici modülde yok kablo ile gönderiyorum neden böyle bir sorun oluyor acaba.Stream ismi vererek (iletisim_1)göndermek zorundayım.3 verici farklı noktlarda 3 alıcı ise tek devre üzerinde duyma özürlünün yanında olacak.Stream ismi sayesinde her vericinin bir alıcısı olacak.Sizden istediklerim nasıl bir yol izlemeliyim,yaptığım hatalar neler,nasıl yaparsam daha iyi olur,eğer elinizde varsa örnek bir program.Allah razı olsun çok teşekkürler.(ATX ARX-34 kullanıyorum)
1.VERİCİ
#include <16f628a.H>
                
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

#use rs232(baud=1200, xmit=PIN_B2, rcv=PIN_B1,parity=N,stop=1,stream=iletisim_1)
int i=0;
int j=0;

void main()
{     setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
      setup_timer_1(T1_DISABLED);
      setup_timer_2(T2_DISABLED,0,1);
      setup_comparator(NC_NC_NC_NC);
      setup_vref(FALSE);

while(TRUE)
      {
      output_b(0x00);

         if(input(pin_b3))
          {
          delay_ms(20);
          output_high(pin_b0);
          
  
           // ALICI UYANDIRMA KODLARI// 
          fputc(0x55,iletisim_1);//iletisim_1 üzerinden gönderiliyor.
          fputc(0x55,iletisim_1);
          fputc(0x55,iletisim_1);
          fputc(0x55,iletisim_1);
          fputc(0x55,iletisim_1);
          fputc(0x00,iletisim_1); 
          fputc(0x00,iletisim_1);
          fputc(0x00,iletisim_1);
          fputc(0xFF,iletisim_1);
          fputc(0xFF,iletisim_1);
          fputc(0xFF,iletisim_1);
          fputc(0xFF,iletisim_1);
          fputc(0XFF,iletisim_1);
            //SIFRE GONDERME
          fputc('X' ,iletisim_1); 
          //ASIL VERI
          fputc('K' ,iletisim_1);
          fputc('K' ,iletisim_1);
         
           }
    }
}

1.ALICI
#include <16f628A.h>

#fuses XT,NOPROTECT, NOWDT, NOLVP,mclr

#use delay(clock=4000000)
#use rs232(baud=1200, xmit=PIN_B2, rcv=PIN_B1,parity=N,stop=1,stream=iletisim_1)

#define LCD_ENABLE_PIN     PIN_A0      //lcd enable pini b5
#define LCD_RS_PIN         PIN_A1      //lcd rs pini pin b4
#define LCD_RW_PIN         PIN_A2     //lcd rw pini pin c0
#define LCD_DATA4          PIN_b7         //lcdnin data4 pini pinb0 
#define LCD_DATA5          PIN_b6         //lcdnin data5 pini pinb1 
#define LCD_DATA6          PIN_b5         //lcdnin data6 pini pinb2 
#define LCD_DATA7          PIN_b4         //lcdnin data7 pini pinb3

#include <Clcd.c>
int i=0;
char al=0;
void main()
{

lcd_init();
printf(lcd_putc,"\f TEKNO KULAK");
delay_ms(500);
printf(lcd_putc,"\f EMRE SIMSEK");
delay_ms(500);
printf(LCD_PUTC, "\f");

while(1)
{
   if(fgetc(iletisim_1)==('X'))//iletisim_1 yolu ile öncü veri ('X') geldimi.
     {
          al=fgetc(iletisim_1);
          }
               if(al=='K')
               {
                lcd_gotoxy(1,1);
                printf(lcd_putc,"\f KAPI CALIYOR");
                output_high(pin_a3); // ledi yak
                delay_ms(250);
                output_low(pin_a3);
               }  
     }     
}
Gelirken ne getirilir ki giderken ne götürülür.

toyo

Gelirken ne getirilir ki giderken ne götürülür.

yldzelektronik

Dostum sana rf tecrüblerimi anlatayım.Öncelikle ben bu işi kendi kurduğum bir boarda değilde bir kit üzerinde gerçekleştirdim ki donanımdan emin olayım sonra yazılımdan endişe edeyim.Kullandığım kristal 20 mhz.Mcu 16f877a.İlk etapta şu uyandırma verisi dedikleri tantanayı yaşadım.Dedikleri gibi yaptım ve veriyi aktardım.Ardından bu işten gerçekten şüphelendiğimden şu uyandırma verisi dedikleri şeyi kaldırdım.Verimi sanırım 3 kez falan gönderdim.Başarılı bir şekilde veriyi ilettim.Daha sonra programda sadece 3 adet putc ve getch vardı.Veriyi ilettikten sonra id ekleme işine falan giriştim.Bunu neden söylüyorum.İlk etapta kodlarında ayrıntları bulundurma.Veriyi aktardığına emin ol ondan sonra gerisini hallerdesin.Testleri yaparken çiftlerin birbirine yakınlığı nedir?Benimkinde dipdibeydi.Veriyi aldığımı gördükçe yaklaşık 5 metreye falan çıkabildim.İmkanlarım bununla sınırlıydı.Daha ötesini denemedim.C konusunda uzman olduğumdan falan değil sadece kendi hüsnü kuruntum olarak söylüyorum.Programında kullanmadığın değişkenleri barındırma.Ben çalışırken baud değeri 2400 deydi.Sanırım 9600 e de çıkmıştım ve başarılı olmuştum.Tam hatırlamıyorum.Ama 2400 de sorun yaşamamıştım.Bu rf dedikleri meret mübarekk öyle bişey ki herşeyden etkileniveriyor.Ledleri açtığım zaman 5 kez falan yolladığım veriyi kaçırıyordu.Birkere ledlerden uzak dur.Hele b portunda falan varsa iptal et çıkar.Ayrıca vericide cihaz idsi için gönderdiğin (ben öyle anladım.zaten şifre demişsin.) x verisini tek bir kez değilde 5 kez falan gönder. x ile falan değilde daha ziyade 0xcd gibi id ata cihazlara.Cihaza security eklemen gerekicekmi?Yani biri rf verileri sniff ederse ve sahte kod yollarsa diye bir önlemin olacak mı :) ?Aslında burda yapman gereken sadece parazite dikkat etmek o kadar.Parazit gerçekten çok bozuyor.Testlerim sırasında c portundaki ledler aktifken veri bozuluyor ancak b portundaki ledler açıkken hiçbir şey yok?İlginç deneyim oldu benim için ama parazit hususu önemli.Vel hasılı ilk etapta donanımında hata ara.Emin ol.Parazit falan olmasın.Sonra kodları sürekli değiştirerek dene.Aslında çok değişecek kodlar değil sadece önce direk putc(0xcd); veya benzeri ne istiyorsan gönder.Baktın oluyor.Sonra döngü ile gönderirsin.Hadi kolay gelsin.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

toyo

Alıntı yapılan: yldzelektronik - 03 Mayıs 2012, 20:34:32
Dostum sana rf tecrüblerimi anlatayım.Öncelikle ben bu işi kendi kurduğum bir boarda değilde bir kit üzerinde gerçekleştirdim ki donanımdan emin olayım sonra yazılımdan endişe edeyim.Kullandığım kristal 20 mhz.Mcu 16f877a.İlk etapta şu uyandırma verisi dedikleri tantanayı yaşadım.Dedikleri gibi yaptım ve veriyi aktardım.Ardından bu işten gerçekten şüphelendiğimden şu uyandırma verisi dedikleri şeyi kaldırdım.Verimi sanırım 3 kez falan gönderdim.Başarılı bir şekilde veriyi ilettim.Daha sonra programda sadece 3 adet putc ve getch vardı.Veriyi ilettikten sonra id ekleme işine falan giriştim.Bunu neden söylüyorum.İlk etapta kodlarında ayrıntları bulundurma.Veriyi aktardığına emin ol ondan sonra gerisini hallerdesin.Testleri yaparken çiftlerin birbirine yakınlığı nedir?Benimkinde dipdibeydi.Veriyi aldığımı gördükçe yaklaşık 5 metreye falan çıkabildim.İmkanlarım bununla sınırlıydı.Daha ötesini denemedim.C konusunda uzman olduğumdan falan değil sadece kendi hüsnü kuruntum olarak söylüyorum.Programında kullanmadığın değişkenleri barındırma.Ben çalışırken baud değeri 2400 deydi.Sanırım 9600 e de çıkmıştım ve başarılı olmuştum.Tam hatırlamıyorum.Ama 2400 de sorun yaşamamıştım.Bu rf dedikleri meret mübarekk öyle bişey ki herşeyden etkileniveriyor.Ledleri açtığım zaman 5 kez falan yolladığım veriyi kaçırıyordu.Birkere ledlerden uzak dur.Hele b portunda falan varsa iptal et çıkar.Ayrıca vericide cihaz idsi için gönderdiğin (ben öyle anladım.zaten şifre demişsin.) x verisini tek bir kez değilde 5 kez falan gönder. x ile falan değilde daha ziyade 0xcd gibi id ata cihazlara.Cihaza security eklemen gerekicekmi?Yani biri rf verileri sniff ederse ve sahte kod yollarsa diye bir önlemin olacak mı :) ?Aslında burda yapman gereken sadece parazite dikkat etmek o kadar.Parazit gerçekten çok bozuyor.Testlerim sırasında c portundaki ledler aktifken veri bozuluyor ancak b portundaki ledler açıkken hiçbir şey yok?İlginç deneyim oldu benim için ama parazit hususu önemli.Vel hasılı ilk etapta donanımında hata ara.Emin ol.Parazit falan olmasın.Sonra kodları sürekli değiştirerek dene.Aslında çok değişecek kodlar değil sadece önce direk putc(0xcd); veya benzeri ne istiyorsan gönder.Baktın oluyor.Sonra döngü ile gönderirsin.Hadi kolay gelsin.
Kardeş verdğin bilgi için çok teşekkürler söylediklerini uyguladım putc(0xcd);  gibisinden.Başarılı bir şekilde çalıştırdım tam sizin anlattığınız gibi şeyler bekliyordum.Çok teşekkürler.Çok yararlı oldu gerçekten.
Gelirken ne getirilir ki giderken ne götürülür.

yldzelektronik

Cidden mi?Ben hemen sonuç alamamıştım ama sen aldıysan hakkaten sevindim :) :Faydam olduysa ne mutlu.Hayrını gör.Eeee peki security kısmını ne yapıcaksın??Ya adamın düşmanları çoksa ve gıcıklığına senin veriyi sniff edip adama sahte bilgiler gönderirlerse?Var mı bir önlemin? :)
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

toyo

Gerek yok okadarına  :) saglıklı çalışıyor şuan teşekkürler :)
Gelirken ne getirilir ki giderken ne götürülür.