rf kontrol

Başlatan gigabytetr, 29 Ocak 2017, 17:35:14

gigabytetr

meraba herkeze kolay gelsin..
basit bi rf kontrol deveresi yapmaya çalışıyorum takıldığım biyer var. tx katı enerjilendiğinde veri göndermeye başlayacak rx in gereken çıkışı 1 olcak buraya kadar sorunyok ,ama tx katında enerji kesildiğinde rx deki çıkışı 0 yapamıyorum.kısaca rx veri alıyosa çıkışı 1 yapsın almıyosa 0 yapsın böyle bişey yapılabilirmi ? 

ete

#1
RX kartına bir timer kurman gerekiyor. Bu timer veri aldıka sıfırlanacak. Veri gelmeyince sürekli sayacak ve zaman aşımına uğradığı zaman yada sayac değerin belirli bir seviyeye geldiği zaman çıkışı sıfırlayacak.
RF haberleşmesi için hangi komutu kullandığın bu işte önemli. Bu dediklerim USART komutları kullanıldığında çalışır. SERIN yada SERIN2 komutları kullanıldığında çalışmaz çünki o komutlar veri gelinceye kadar programı bloke ederler.

Basitçe yapmak istersen şöye olabilir.
BASLA:

HSERIN 10,ATLA,[VERI]
SAYAC=0
ATLA:
SAYAC=SAYAC+1
IF SAYAC=10000 THEN CIKIS=0
GOTO BASLA

gigabytetr

#2
Hocam bi türlü yapamadım baştan veri gelince led yanıyodu ama söndürmüyodu şimdi ledi dahi yakamadım iyice kafam karıştı. yardımcı olurmusunuz.
al
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF
define OSC 4
PORTB=0
TRISB=%00000010
define HSER_RCSTA 90h
define HSER_TXSTA 20h
DEFINE HSER_SPBRG 5
DEFINE HSER_CLROERR 1
SYMBOL RCIE =PIE1.5     'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     'USART Receive interrupt flag bit

BILGI VAR BYTE
GIRIS VAR PORTB.1
LED VAR PORTB.6
SAYAC VAR WORD
BILGI=0
SAYAC=0

BASLA:
HSERIN 10,ATLA,[BILGI]
SAYAC=0

IF BILGI=1 THEN : HIGH LED

ATLA:
SAYAC=SAYAC+1
IF SAYAC=10000 THEN LED=0
GOTO BASLA

ver
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF
define OSC 4

CMCON=7
OPTION_REG.7=0
PortB=0
TrisB=%00000000
SYMBOL CIKIS=PORTB.2
VER VAR BYTE
PAUSE 200

BASLA:
 
VER=1

GONDER:
SEROUT2 CIKIS,396,[REP$AA\5,REP$00\5,REP$FF\5]
SEROUT2 CIKIS,396,["Y","A","M",VER,10,13]
SEROUT2 CIKIS,396,["Y","A","M",VER,10,13]
GOTO BASLA
END

ete

Basla satırından sonra gelen Sayac=0 komutunu silmek lazım (ben sildim)
Ayrıca vericide Hserout komutu ile yollasın bilgileri.
Ledin yanmaması serout2 komutu ile Heserin komutlarının birbiri ile uyumsuz olmasından kaynaklanıyordur.
Ete

gigabytetr

Teşekkürler yarın ilk iş denicem.

gigabytetr

Hocam dediklerinizi yaptım çalıştı. sağolun
bi sorum daha var 12f675 de hserout kullanılabilirmi yoksa sadece donanımsal usart olan piclerdemi kullanılır.

ete

Sadece donanımsal Usart olanlarda kullanılır.
Ete

gigabytetr

amacım göndericiyi pilli yapıp enerjiyi buton uzerinden verip çalıştırmaktı verdiğiniz bilgiler sayesinde bunu yapabileceğim :) 12f boyutu boyutu küçültmek için kullanmak istemiştim.

Powered by EzPortal