RF denememde Proton plus+ çalışırken RF kısmını halledemedim ?

Başlatan Ankaralı, 25 Ocak 2011, 20:49:29

Ankaralı

Hayırlı akşamlar;
Ilk RF denemem.Proton plus+ çalışırken RF kısmını halledemedim.Yada yanlış komutlar yazıyorum.Yardımcı olacak arkadaşlar aranıyor  ::)

ALICI KISIM
Device = 16F628A
Config WDT_OFF , PWRTE_ON , CP_OFF ,MCLRE_OFF
XTAL 4
CMCON=7

PORTA=0
TRISA=0
TRISB=0
PORTB=0

Declare SERIAL_BAUD 2400
Declare RSIN_PIN PORTA.0
Declare RSIN_MODE TRUE
Declare RSIN_TIMEOUT 1000

Dim ALICI As Byte
ALICI=0 
DelayMS 500

BASLA:
    
    RSIn Wait("ANIL"),DEC2 ALICI
	If ALICI=1 Then PORTB.7=0
	GoTo BASLA
	End       


Verici kısım
Device = 16F628A
Config WDT_OFF , PWRTE_ON , CP_OFF , MCLRE_OFF
XTAL 4
CMCON=7

TRISA=%00000000
TRISB=%00000000
PORTA=0
PORTB=0

Declare RSOUT_PIN PORTA.0
Declare RSOUT_MODE TRUE
Declare RSOUT_PACE 0

Dim VERICI As Byte 
VERICI=0 
DelayMS 500

BASLA:
	VERICI=1
	GoSub GONDER 
	DelayMS 100
	GoTo BASLA
   
GONDER: 
RSOut "ANIL",Dec VERICI ,13,10
RSOut "ANIL",Dec VERICI ,13,10
RSOut "ANIL",Dec VERICI ,13,10
RSOut "ANIL",Dec VERICI ,13,10
Return 
End
@ NEXYS2

Ankaralı

Miillet yok mu hiç koca forumda protonda  rf uygulaması yapan? Programı yazın demiyorum komutlar uygunmu, fikir paylaşımı yapalım diyorum...
@ NEXYS2

ete

Komutlarda hata yok gibi ancak eksiklik var. İşin can damarı haberleşme hızıdır. ALıcıda bunu 2400 Baud olarak tanımlamışsın ama ya vericide?
Orada tanımlama yok.  Muhtemelen protonda default hızı 9600 baud olarak vermiş olabilir. Böylece alıcın ile vericin farklı hızlarda çalıştığı için bir birlerini göremezler.
Diğer bir konuda DECLARE RSIN_TIMEOUT komutunda vermiş olduğun 1000 değeri ms cinsinden olup istenen karekter bilgisi gelinceye kadar program orada 1000 ms süre ile esir alınacaktır. Genelde paket uzunlukları 1-2ms lik süreyi aşmaz . O halde buraya 1000 yerine 5 verin bence.
Ben normalde PBP ile yazarım ve bu süreyi genelde 3-5ms arasında tutarım. Hatta tek değişken yollayacaksam 1 ms bile yeterli olmaktadır.

Kısaca programların "declare" komutlarını eşitleyin ve tekrar deneyin.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Ankaralı

Hocam selamlar;
Dediklerinizi düzellttim isis de hatasız çalışmasına rağmen board üzerinde çalıştıramıyorum.Yalnız udeanın vericisinden şüpheleniyorum.Acaba kitlerin sağlam veya bozuk olduğunu nasıl anlayabilirim hocam?Birde sürekli olarak sinyal gönderiyorum kararlı çalışmamasına buda engel olabilirmi?

Alıcı Kısım
Device = 16F628A
Config WDT_OFF , PWRTE_ON , CP_OFF ,MCLRE_OFF
XTAL 4
CMCON=7

Declare SERIAL_BAUD 2400
Declare RSIN_PIN PORTA.0
Declare RSIN_MODE INVERTED
Declare RSIN_TIMEOUT 5 
Input PORTA.0
Output PORTB.7

Dim ALICI As Byte
ALICI=0 

BASLA:
   RSIn Wait("ANIL"),DEC2 ALICI
   If ALICI=1 Then PORTB.7=0
   GoTo BASLA
   End


Verici kısım
Device = 16F628A
Config WDT_OFF , PWRTE_ON , CP_OFF , MCLRE_OFF
XTAL 4
CMCON=7


Declare RSOUT_PIN PORTA.0
Declare RSOUT_MODE INVERTED
Declare RSOUT_PACE 5
Declare SERIAL_BAUD 2400
Low PORTA.0

Dim VERICI As Byte 
VERICI=0 
DelayMS 500

BASLA:
   VERICI=1
   GoSub GONDER
   DelayMS 100
   GoTo BASLA
   
GONDER:
RSOut "ANIL",Dec VERICI ,13,10
RSOut "ANIL",Dec VERICI ,13,10
RSOut "ANIL",Dec VERICI ,13,10
RSOut "ANIL",Dec VERICI ,13,10
Return
End
@ NEXYS2

ete

Udea modüllerinde bozukluğa hiç rastlamadım. Frekanslar titizlikle ayarlanıp yollanıyor.
Sorun senkron sorunu olabilir.
Yani sen yollarken alıcı alma konumunda değildri yada datanın ortasından dalıp başını kaçırıyordur.
Bunları önlemek için preambl denilen ve içinde uyandırma sinyalide olan bir ön sinyal yollamakta fayda vardır.
Bunun için 5 byte $AA, 5 byte $FF ve 5 Byte $00 bilgisini ana bilgiyi yollamadan önce yollayın.

İlk haberleşmeyi sağlamak için mesafeyi kısa tutun. Anten olarak hiç bir şey bağlı değil ise 17cm uzunluğunda bir tel bağlayın her ikisine.

Yinede yakalayamıyorsanız bu durumda USART kesmesi kullanmanızı önereceğim. Aslında USART kesmesini kesin kullanmak gerek. (Alıcı kısmında)
Bunu kullanırsanız datayı gelmesi için beklemez başka işlere bakarsınız. Data geldiğinde program otomatik kesmeye atlar ve gelen bilgi doğru ise alır ve geri döner.

USART kesmesini uygulamak için öncelikle declare edilecekleri uygulayın bunlar;

DECLARE HSERIAL_BAUD 2400
DECLARE HSERIAL_RCSTA 144
DECLARE HSERIAL_TXSTA 32
DECLARE HSERIAL_CLEAR ON

Daha sonra kesme yi açmak gerek.
SYMBOL GIE  =INTCON.7   'genel interruptları açıyor
SYMBOL PEIE =INTCON.6   'peripheralinterruptları açıyor
SYMBOL RCIE =PIE1.5     'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     'USART Receive interrupt flag bit

RCIE=1
PEIE=1
GIE=1
ON INTERRUPT GOTO KESME

Daha sonrada kesme kısmını aşağıdaki şekilde yapmak gerek.

DISABLE
INT:
    GIE=0
    HSERIN 5,ATLA, [WAIT( "ANIL" ) , DEC2 ALICI]
    TEMP=RCREG
ATLA:
    GIE=1
   context restore
    enable

Ben PBP kullandığım için bildiklerimi protona uyarlamaya çalıştım. Kusurum olursa affola.

Bu arada uyandırma sinyali için aşağıdaki satırı verici kısmına diğer RSOut satırlarının önüne ekleyiver. Yalnızca 1 adet veya 2 adet RSout satuırı olması yeterlidir. Fazlasıda zarardır.

RSOut "ANIL",rep $AA\5, rep $FF\5, Rep $00\5

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com


rree

Verici  kısmında pic çıkış pini PortA.0 kullanmışın. Osilaskop ve ya volt metre ile çıkış varmı bir ölçersen. Ben bir ara robot uzaktan kumandası yapmıştık. Kumanda çalışmıyordu. Yazılımı kontrol ettim hata yok.Alıcı verici modulleri kontrol ettim hata yok.Osilaskop ile pic çıkışına baktım çıkış yok. Port yönlendirmesi doğru.Sonra lisanslı proton ile derledim çalıştı.
       Kesme kullanmadan uzaktan kumanda nasıl sağlıklı çalışıyor bende merak ediyorum. Datayı gönderdin alıcı başka şey ile meşgulsa datayı alamayacaktır.

Ankaralı

Ete hocam şimdi udea'nın dökümanı incelerken preambl konusunu gördüm verdiğin kodları uyarladım sabırla çalışmasını bekliyorum artık.Sabırda kalmadı ama bu devre ya çalışacak ya çalışacak.Daha önceden PBP kullanıyordum az çok hatırlıyorum olmadı çalışan bir kod verirseniz protona uyarlamaya çalışayım.

Maxim hocam verdiğiniz linkteki rf modüller nasıldır?Nereden temin edilebilir.Bizim yerli firma varken yabancıdan mal almayı sevmem ama çok çok sıkışırsam düşünebilirim bu modülleri.

rree dostum çıkışta sinyal var ölçü aleti ile bakıyorum sürekli kontrolüm altında yanlız skop olmadığı için emin olamıyorum bi türlü...
@ NEXYS2

Maxim

o modülleri karaköyden almıştım
kontrol kısmı ve kodlar udeada kullandıklarınla aynı, o kodları kullanırsan çalışması lazım udeanında .

ete

İlişikte Çalışan bir örnek yolluyorum.
Devre şemasına ve bağlantılara dikkat edin lütfen.

Ete

http://www.upload.gen.tr/d.php/www/8544agv3/RF_DENE.rar.html

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com


Ankaralı

Ete hocam çok teşekkür ederim yardımların için direk senin kodları kullandım ancak aynı boarda dizdiğimde çalışmayan rf ler farklı boardlarda çalıştı 2 gün sırf bunun için tırmalamışım ...
cynetron sağolasın hocam...
@ NEXYS2