avatar_bilsisco

Baş belası RF

Başlatan bilsisco, 17 Mayıs 2015, 19:08:28

bilsisco

Yerli yabancı birçok site araştırdım, kaç gündür basit picten pice (kablolu bile) RF bilgi gönderemedim.
Ete hocamın ders14 ü okudum birşey anlamadım(pc iletişim, hem verme hem alma var karışık).
Ne olur bana yardım edin altta en basite indirgediğim kodları veriyorum
---------------Verici------------------
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_ON
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
'-------------------------------------------------
DEFINE OSC 4
CMCON=7

A   var byte
' -------------- haberlesme define
DEFINE HSER_RCSTA   90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA   20h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG   25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1   ' Clear overflow automatically
   
TRISB=%00000010
PORTB=0
a=3

BASLA:
    hserout [dec A]
    GOTO BASLA
end

---------------Alıcı------------------
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_ON
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
'-------------------------------------------------
DEFINE OSC 4
CMCON=7

A   var byte
' -------------- haberlesme define
DEFINE HSER_RCSTA   90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA   20h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG   25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1   ' Clear overflow automatically
   
TRISB=%00000010
PORTB=0

gosub   hata
BASLA:
    hSerIn  3000,Hata,[dec a]
    if  a=3 then
        high    PORTB.3
        pause   200
        low     PORTB.3
        pause   200
    endif
    GOTO BASLA
Hata:
    high PORTB.4
    pause   500
    low  PORTB.4
    pause   500
    goto basla
end
   
   

ete

#1
Bir RF haberleşmesi yapmanın kuralları var. Sen birazcık kural dışına çıkmışsın. Kurallar şöyle;
- Pic frekansı 4Mh zise 9600 baud seçmeyin. Zİra bu hız 9600 için yeterli değildir. Hata yapma olasılığı çok fazla olacaktır.
- 4 Mhz çalışma frekansında ideal hız 2400 Baud dur. Zaten ne hikmet ise verdiğin Define komutlarıda 2400 için gözüküyor ama 9600 yazıyor.
- Vericide verme bilgisini arda arda yollamayın. arada 10ms lik bir gecikme olması uygun olacaktır.
- Veri paketi başına enfazla 3 karekterden oluşan bir işaretçi ekleyin. Bunu alıcı tarafında da uygulayın.

- Alıcıda mümkün olduğunca USART kesmesi kullanın. Böylece senkron problemi ortadan kalkar.
- Mutlaka preambl denilen uyandırma sinyalini data bilgisinin başına ekleyin. Bu senkron yakalamakta size yardımcı olacaktır.
- HSERIN komutu içinde hiç bir zaman 3000 ms lik bir timeout süresi vermeyin en büyük 10-20ms dolayında bir süre verin.
- Veri başına DEC gibi bir tanımlama eklemenize gerek yok. Onsuzda sistemin çalıştığını göreceksiniz.
- Programlarınıza mutlaka açılış gecikmesi ekleyin en az 200 ms olmalıdır.
-
Bu açıkladıklarıma uygun yazılmış programları ilişikte veriyorum. İncele ve çalıştır.

Ete

bilsisco

Hocam dosyanızı inceledim, aynen yükledim bir türlü A=3 bilgisi iletilmiyor.
Hata etiketine dallanıyor ve PORTB.4 ledi yanıp-sönüyor** ama PORTB.3 ledi hiç yanmıyor.(ledleri yer değiştirdim)
Tek bordda iki ayrı kaynakla(pil-adaptör) sadece aralarında bir kabloyla test ettim.(kaynaklar çakışmıyor)
Vericiden RB2(TX)den çıkan kablo alıcıda RB1(RX)e giriyor.
Kitapta 877 kullanmış, kesme kullanmamış. 877 ile denemedim

**herhangi bir elemana dokunsam bile oluyor. Temassızlık olmadığından eminim

ete

#3
Bu sistem simulasyonda sorunsuz çalışmaktadır.
Gerçek devrede çalışmıyorsa rf modül uyumsuzluğu vardır.
Başka izahı yok. Gerçek devrede de denerim gerekirse. Ama çalışacağından eminim.
Bir iki deneme daha yapman gerek bence.

Gerek alıcı ve gerekse verici programlarının baş tarafına birer ledi bir iki defa yakıp söndürecek bir bölüm ekle. Böylece her iki programın çalıştığından emin ol.

İkincisi vericin TX pini ile alıcının RX pinini direk bağla ve yeniden çalıştır programları bak bakalım istenilen gibi çalışıyormu.
Bu sistem çalışmıyor ise bu iki denemeden birisi olumsuz olarak sonuçlanması gerek.
Şayet olumsuzluk yok ise başka bir RF modül çifti al ve yeniden deneme yap.

Ete

bilsisco

Cevap yazamadım kusura bakmayın hocam
Çalıştı sonunda pilde bir sorun varmış heralde 2 farklı adaptörle denedim.
Rf modülle de denedim çalışıyor.
Modülün adı XY-MK-5V
şimdi programa kesme dahil edip çalıştıracam
Teşekkürler

umutcell

ete hocam çok teşekkür ederim devreniz kurdum çalışmaktadır proteusdaki ledin birini farklı porta baglanmıs yazılımı bakarak o sorun hallediliyor,herşey için çok teşekkür ederim,,

Powered by EzPortal