avatar_mc_no_fear

SEROUT İLE GÖNDERİP HSERİN İLE KARŞILAYAMIYORUM....

Başlatan mc_no_fear, 26 Temmuz 2015, 19:48:31

mc_no_fear

Vericimde
 SerOUT2 CIKIS,396,["D","O","G","A","N","1",VERI]
komutu ile gönderdiğim veriyi alıcı ünitemde
PORTA=0 
PORTB=0
TRISA=%00000000   
TRISB=%00000010   
DEFINE OSC 4
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25 ' 2400 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1
AL    VAR BYTE
ROLE  VAR PORTB.0       'kombi rölesi'
AKTIF VAR PORTB.3      'kombi devrede iken yanan kırmızı led'
POWER VAR PORTB.4      'sistemin açık olduğunu ve verici durumunu gösteren yeşil led'
ALERT VAR PORTB.5       'verici bağlantısı kesildiğinde yanan uyarı ledi'
GIRIS VAR PORTA.0
CLEAR
POWER=1
BASLA:
    HSERIN[WAIT("D","O","G","A","N","1"),AL]
komutu ile neden karşılayamıyorum arkadaşlar. Neyi gözden kaçırıyorum....

ibralali

Ete hocamızın ders 7(seri haberleşme) ve ders 14(rf haberleşme) yazılarını okumanızı tavsiye ederim.

ete

Kusur olarak Hserin komut satırından sonra programın ne yapacağını belirlememişsin.
Orada Goto basla komut satırı olması yerinde olur. Dahada iyisi program VERI yialdıktan sonra ne yapacak onu belirlesen iyi olur.

RF sisteminde ön işaretçilerin ve uyandırma karekterlerinin önemi büyüktür.
Veri yollama kodlarını aşağıdakilerle değiştir.

SEROUT2 CIKIS,396,[REP$AA\5,REP$00\5,REP$FF\5]
SEROUT2 CIKIS,396,["D","O","G",VERI,10,13]

Alma kodlarını da aşağıdakilerle değiştir
HSERIN[WAIT("D","O","G"),AL]

3 karekterden fazla verdiğin işaretçiler işi bozabilir. Bu nedenle tavsiyem 3 karekterden fazla işaretçi kullanmayın.
Bunlara rağmen sistem çalışmıyorsaki çalıştığını nasıl anlayacaksın onu bilemiyorum , mutlaka verme işinde sorunun vardır.
Yada programın yalnızca bu kadar değildir. Uzunca bir programda verici veri yolladığı anda alıcı senkron içinde almaya hazır olamıyordur ve veri paketinin başını kaçırıyordur. Çözüm alıcıda USART kesmesi kullanmaktır.

Ete

aRci

alıcı ile verici nin baud rade lerini kontrol et belki hata vardır

verici tarafı
basla:
if portb.2 = 1 then veri = "A":goto gonder
if portb.3 = 1 then veri = "B":goto gonder     'butona basıldı ise
pause 100
goto basla

gonder:
hserout [ "DOGAN1",veri]
goto basla
'///////////////////////////////////////////////////////////////////////////////////////////////

alıcı tarafı
basla:
hserin [wait("DOGAN1"),veri]

if veri = "A" then portb.0 = 1
if veri = "B" then portb.0 = 0
goto basla

olarak değiştir

Powered by EzPortal