HSEROUT-HSERIN Komutları Sorunu :.

Başlatan e3, 06 Mayıs 2007, 00:38:25

e3

Değerli üstadlar, Udea'nın ATX34 vericisi ve çin malı bir alıcı ile( UDEA diye kandırıldım  :evil: neyse ) RF uygulaması yapacağım.Pic olarak 16F628 kullanmayı düşünüyorum.Göndericide butonlara basarak belirli isimler göndereceğim, karşı tarafta da bunları LCD'ye yazdıracağım.Birincisi direk HSEROUT komutu kullanırken
"Bilgi Gidiyor"
demek yerine bir değişkeni Byte olarak tanımladım ve
GONDER:
CHAR.0="H"
CHAR.1="E"
CHAR.2="L"
CHAR.3="L"
CHAR.4="0"
CHAR.5="P"
CHAR.6="R"
CHAR.7="O"

şeklinde yazayım dedim bu satırlara uyarı veriyor, kodda hata mı var?Bunu sadece denemek amacıyla yazdım, yoksa öteki türlü direk yazıyı gönderebiliyorum sanırım.
İkincisi Protonda HSEROUT komutu yalnızca "HSEROUT [Item { , Item... }]" olarak açıklanmış.Buraya Baud hızı gibi şeyler zaten yazılmıyor,başlangıçta tanımlanıyor ancak doğrulama biti gibi şeyleri nasıl yazacağız burayı çözemedim.ETE hocamızın ders notları PBP'ye göre anlatıldığı için uyumsuzluk sorunu yaşıyorum.
HSERout 300,ATLA,[WAIT ("ER"),AL]
şeklinde çalıştıramıyoruz haliyle, hata veriyor.
Bu şekilde iletişim yapmak için alıcı ve vericide hangi registerleri düzenlemeliyim, forumda ve nette açıklayıcı birşeyler bulamadım, ikincisi kodları nasıl düzenlemeliyim, kafam epey karışık şu an belki basit hatalar yapıyorum ve göremiyorum, onu da bilemiyorum. 8O  :D Yardım eden herkese şimdiden teşekkür ediyorum.İyi günler.
.eem.

OG

HRSIN deki deklarasyona bak oradakiler gibi yapman gerekiyormuş. Ve usart için gereken ayarları ilgili PIC e göre yapman gerekiyor.

Ayrıca CHAR.0="H" gibi değilde önce bir byte seviyesinde array değişken oluşturman gerekir.

DIM MYARRAY[10] AS BYTE ' Create a 10-byte array.
MYARRAY
  • = "H" ' Load the first 5 bytes of the array
    MYARRAY [1] = "E" ' With the data to send
    MYARRAY [2] = "L"
    MYARRAY [3] = "L"
    MYARRAY [4] = "O"
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Veli B.

Bir diğer kullanım şeklide;
DIM DIZI[7] AS BYTE
STR DIZI="DENEME"
HSEROUT [STR DIZI \3]


OG Üstadımın verdiği örnekle aynı işi yapmakla beraber yazım kolaylığı sağlamakta. Burada 7 paket değil, sadece \ ardından vermiş olduğumuz parametre değeri kadar paket gönderilir, yukarıda ki örnekte "DEN" gönderilecektir.

e3

Yeni başlık açmadan devam edeyim dedim.Aşağıdaki kodları yazdım ancak devrede hiçbir butona basmamama rağmen alıcıdaki LCD ekranda işlem yaptığıma dair yazılar çıkıyor.Aynı şekilde verici de de butona basmadığım halde basmışım gibi led yanıyor.Acaba kodlarda mı bir hata var :roll: Şimdiden yardımlarınız için teşekkür ederim.İyi çalışmalar.İyi günler. ;)

Vericinin Kodları
'****************************************************************
'*  Name    :  VERICI.BAS                                       *
'*  Author  : [PROTECTION]                                      *
'*  Notice  : Copyright (c) 2007 [PROTECTION]                   *
'*          : All Rights Reserved                               *
'*  Date    : 5/5/2007                                          *
'*  Version : 1.0                                               *
'*  Notes   : RF UYGULAMASI                                     *
'****************************************************************

DEVICE 16F628
XTAL 4
CMCON = 7

TRISA= %00000

DIM BUTON1 AS PORTB.3
DIM BUTON2 AS PORTB.5
DIM BUTON3 AS PORTB.7
DIM GIDEN AS BYTE

BASLA:
 CLEAR
 IF BUTON1=0 THEN GIDEN=01 : endif
 IF BUTON2=0 THEN GIDEN=02 : endif 
 IF BUTON3=0 THEN GIDEN=03 : endif
 GOSUB GONDER              
 DELAYMS 100                       
GOTO BASLA                 

GONDER:
 SEROUT PORTB.0 , 19697 , ["P","R","O", GIDEN]
 IF GIDEN=01 THEN PORTA.0=1 : ENDIF 
 IF GIDEN=02 THEN PORTA.1=1 : ENDIF
 IF GIDEN=03 THEN PORTA.2=1 : ENDIF
 DELAYMS 100
 RETURN 
END


Alıcının Kodları

'****************************************************************
'*  Name    :  ALICI.BAS                                        *
'*  Author  : [PROTECTION]                                      *
'*  Notice  : Copyright (c) 2007 [PROTECTION]                   *
'*          : All Rights Reserved                               *
'*  Date    : 5/5/2007                                          *
'*  Version : 1.0                                               *
'*  Notes   : RF UYGULAMASI                                     *
'****************************************************************

DEVICE 16F628
XTAL 4
CMCON = 7

declare LCD_TYPE 0
declare LCD_DBIT PORTB.4       
DECLARE LCD_ENPIN PORTB.3   
DECLARE LCD_RSPIN PORTB.2       
declare LCD_LINES 2

DIM AL AS BYTE 

BASLA: 
 CLEAR
 
 SERIN PORTB.0 ,19697 , [WAIT("PRO"),AL]

 IF AL=01 THEN 
 print AT 1,4,"1. BUTONA"
 print AT 2,4,"BASTINIZ."
 PAUSE 250 : ENDIF

 IF AL=02 THEN 
 print AT 1,4,"2. BUTONA"
 print AT 2,4,"BASTINIZ."
 PAUSE 250 : ENDIF

 IF AL=03 THEN 
 print AT 1,4,"3. BUTONA"
 print AT 2,4,"BASTINIZ."
 PAUSE 250 : ENDIF

 GOTO BASLA
END
.eem.

OG

GOSUB GONDER
satırına her halukarda düşüyorsun ve gönderiyor. Butona basılmadan göndermemesi lazım.

IF BUTON1=0 THEN 
GIDEN=01 
GOSUB GONDER
endif 

IF BUTON2=0 THEN 
GIDEN=02 
GOSUB GONDER
endif 

IF BUTON3=0 THEN 
GIDEN=03 
GOSUB GONDER
endif


gibi veya daha kısa yazabileceğin bir birşey olmalı.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

e3

OG Hocam aşağıdaki gibi yazdım ama her halükarda devrede garip bir şekilde ledlerden biri yanıyor alıcı tam algılamıyor gibi....

Verici programını şöyle denedim sonra :.
'****************************************************************
'*  Name    :  VERICI.BAS                                       *
'*  Author  : [PROTECTION]                                      *
'*  Notice  : Copyright (c) 2007 [PROTECTION]                   *
'*          : All Rights Reserved                               *
'*  Date    : 5/5/2007                                          *
'*  Version : 1.0                                               *
'*  Notes   : RF UYGULAMASI                                     *
'****************************************************************

DEVICE 16F628
XTAL 4
CMCON = 7

TRISA=%00000
TRISB=%11111110

DIM BUTON1 AS PORTB.3
DIM BUTON2 AS PORTB.5
;DIM BUTON3 AS PORTB.7
DIM GIDEN AS BYTE

BASLA:

PORTA=%00000

 IF BUTON1=0 THEN GOTO GONDER1 : ELSE
 IF BUTON2=0 THEN GOTO GONDER2 : ELSE 
 IF BUTON3=0 THEN GOTO GONDER3 : ELSE GOTO BASLA


GONDER1:
 IF BUTON1=1 THEN GOTO ALT1 : ELSE GOTO GONDER1
ALT1:
 GIDEN=01
 SEROUT PORTB.0 , 19697 , ["P","R","O","T","E","C","T", GIDEN]
 DELAYMS 100
 PORTA.0=1
 DELAYMS 200
 PORTA.0=0
 GOTO BASLA
 
GONDER2:
 IF BUTON2=1 THEN GOTO ALT2 : ELSE GOTO GONDER2
ALT2:
 GIDEN=02
 SEROUT PORTB.0 , 19697 , ["P","R","O","T","E","C","T", GIDEN]
 DELAYMS 100
 PORTA.1=1
 DELAYMS 200
 PORTA.1=0
 GOTO BASLA
 
GONDER3:
 IF BUTON3=1 THEN GOTO ALT3 : ELSE GOTO GONDER3
ALT3:
 GIDEN=03
 SEROUT PORTB.0 , 19697 , ["P","R","O","T","E","C","T", GIDEN]
 PORTA.2=1
 DELAYMS 500
 PORTA.2=0
 GOTO BASLA 
  
END
.eem.

mustafa_cmbz

üzerinden çok geçmiş ama başıma geldiği için örnek olması için yazayım dedim..


4mhz de 16f628 yazılımsal çıkışlarda sorun çıkartıyor anca 16f628a kullanarak hata sürelerini düşürebilirsiniz.Onda da ancak ve ancak 1 tane değişken gönderebiliyorsun.Wait ve 2 adet değişkeni aynı anda göndereyim dersen yemiyor..