avatar_ete

PIC Basic Ders-14 (RF haberleşme)

Başlatan ete, 28 Ağustos 2011, 16:27:17

ruzgar78

HOCAM DATA BACAGINA ELİMİ DOKUNUNCA ROLE BURAKIYOR DATA VAR ISE AÇ YOK ISE KAPAT YAPABILIRMIYIM

ruzgar78

Hocam tuşa bastıgım sure role açık bırakınca kapanıyor bu şekil çalıştırıyorum ama çekim alanından elim tuşda basılı iken uzaklaşınca role eski konumunu koruyor  bırakmıyor parmagımı data pinine dokununca bırakıyor sizin verdiğiniz TMR1 kesmesini yaptım bundada elim basılı oldugu surece hızlı bir şekilde aç kapa aç kapa yapıyor  toggle yapıyor

ete

Oraya bir adam koymak lazım. Adam mesafe dışına çıkınca timer'ı çalıştırıp bırakmayı sağlar.
Başka türlü olmaz bu iş.
Ete

ruzgar78

hocam peki gelen data kesilince diye bir sorgulama yapamayız mı

ete

Tuşa ne zaman basacağın belli olmayınca datanında ne zaman geleceği belli olmaz. Bu tür sorgulamalar peryodik çalışan sistemlerde mümkün olur. Üstelik yapacağın her türlü uygulama doğru çalışma şeklini bozacaktır.
Yalnızca timer kesmesi sistemin bir şey ilave edip deneyebiliriz.
T1CON=%00110001 şeklinde kullan 1/8 bölücü ile.
Kesme kısmına şunu ilave et önce şu satırları bul (Kesme içinde)
    GELEN=BILGI
    YENI=1
sonra alttaki satırı (Yeni=1 satırını) şununla değiştir.
Yeni=1:TMR1L=0:TMR1H=0:PIR1.0=0
birde bu şekilde dene bakalım. Bu şekilde her data gelişinde timer sıfırlanacağı için kapatma söz konusu olmaması gerekir

Ete

ete

Yalnız programa Pause 300 gibi çok büyük bir gecikme ilave etmişsin. Kesme çalışn programda pause olmaz.
Onu sil oradan çok gerekiyorsa döngüsel gecikme yap.
Ete

ruzgar78

HOCAM EN SON HALİ BIR KERE BASINCA TAKILI KALIYOR AYNI TUŞA VEYA DIGER TUŞA BASINCA BIRAKIYOR

'****************************************************************
'*  Name    : A.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 9/16/2013                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@  __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _LVP_OFF & _CP_OFF & _BODEN_OFF


CMCON=7
;OPTION_REG.7=0
DEFINE OSC 4
PORTA=0:TRISA=%00000100
PORTB=0:TRISB=%00000010
' -------------- haberlesme define
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 ' Clear overflow automatically


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
SYMBOL VERIIN=PORTA.0

BILGI var BYTE 56
I     VAR BYTE 57
TEMP  VAR BYTE 58
GELEN VAR BYTE 59
YENI  VAR BIT
KUMANDA_ID VAR BYTE 60
USER_ID VAR BYTE 61

ON INTERRUPT GOTO KES


PORTB=0

RCIE=1
PEIE=1
GIE=1


 

BASLA:
  IF YENI=1 THEN GOSUB TUSBAK
   GOSUB DELAY
   PORTB=0
   GOTO BASLA
   
TUSBAK:
 
SELECT CASE BILGI
CASE 0
   YENI=0:BILGI=0
   GOTO BASLA
   CASE 16 ; OK
   HIGH PORTB.3
   
    PIR1.0=0  'kesme bayrağı sıfırlandı
   PIE1.0=1  'TMR1 kesmesi açıldı
  TMR1L=0:TMR1H=0 'timer sıfırlandı
  T1CON=%00110001  'timer aktif edildi. şeklinde kullan 1/8 bölücü ile.
  CASE 0
  YENI=0:BILGI=0
   LOW PORTB.3
   END SELECT
;YENI=0 :BILGI=0
   RETURN
; ETE HOCANIN DEĞİŞİKLİGİ ROLE TAKILMA İÇİN
DELAY:
      FOR I=0 TO 255
      PAUSEUS 1
      NEXT
      RETURN
       
      DISABLE
KES:
   GIE=0
    IF PIR1.0=1 THEN
        PORTB=0  'açık olan pini kapattık
       PIE1.0=0   'TMR1 kesmesini iptal ettik
        PIR1.0=0   'klesme bayrağını sıfırladık
        Goto ATLABIR
    ENDIF
    hSerIn 15,ATLA,[WAIT ("ZOR"),BILGI]
    GELEN=BILGI
    Yeni=1:TMR1L=0:TMR1H=0:PIR1.0=0
ATLA:
    TEMP=RCREG

ATLABIR: 
    GIE=1
  Resume
    enable           
           
END

ete

#37
Takılı kalıyor dediğin hangi porta bağlı.
Denemeni B portundakiler ile yapacaksın
Ayrıca port pinini ef ile aktif edip sonra ortamdan uzaklaşman gerekiyor

Ete

ruzgar78

PORTB.3 PORTUNA BAĞLI ROLE ÇEKİK KALIYOR HOCAM
TUŞA BASILI VAZİYYTE ORTAMDAN UZAKLAŞIYORUM VE ROLE ORTAMDAN UZAKLAŞINCA ÇEKŞM ALANININ DIŞINA ÇIKINCA ÖYLECE KALIYOR GERİ KONTAGI BIRAKMIYOR

ruzgar78

ORTALAMA 10 DENEME DE 1 KERE YAPIYOR BUDURUMU SUAN

ete

Sebebini ancak tahmin edebiliyorum.
RF alıcı çıkışında sürekli parazit üretir ve buda USART kesmesini, sürekli aktif hale getirir.
Bu nedenle TMR1 de sürekli reset olunca kapatma olayı sekteye uğruyor anlaşılan.
Bu işin çözümü yok bence. Tek çözüm var karşılıklı tranceiver kullanmak.
Verici veri yollar alıcı aldım diye onay verir. Onay belli süre içinde gelmez ise sistem kapanır hepsi bu.
Pahalı bir sistem tabiiki.
Transceiver üzerinde hem alıcı hemde verici modül bulunduran elemana verilen addır.
Ete

ruzgar78

HOCAM BİŞEY GÖRDÜM SUAN TAKILI KALMA ESNASINDA RF ALICI MODULUNUN ANTEN KISMINA VEYA DATA ÇIKIŞINA DOKUNDUGUN ZAMAN ROLE KENDİLİGİNDEN BIRAKIYOR

ruzgar78

HOCAM VERİCİDEN DATA GELİNCE AKTİF KESİLİNCE PASİP OLAN BİR RF MODUL BİLİYORMUSUNUZ

ete

Transceiverler bu şekilde çalışır. İçlerinde kendi işlemcileri vardır alma işlemini onlsr yapar va aldığını aktarırlar.
Ayrıca bazı modüllerin sinyal seviye çıkışı vardır. Bu seviyeyi analog olarak ölçerek vericinin alıcıdan uzaklaştığını belirleyebilirsin.
Ete

M.A.A

Merhaba.
Hocam verdiğiniz bilgiler için teşekkür ederim. Bu sayede belli bir yere kadar geldim. Master soru cevap şeklinde slaveden bilgi alıyor. Master kendindeki bilgiyi de slaveye veriyor, bu şekilde saatlerce çalıştı sıkıntı yok. (Veri alımında kesme kullandım)

Slave de menü var, bir tuşa basınca menuye girip bazı ayarları kaydetip çıkıyorum. Menuden çıktığım zaman haberleşme duruyor (her zaman ollmuyor yüzde 70 duruyor ). Sadece slaveyi kapatıp açınca haberleşme devam ediyor. Menü ye girince Kesmeleri kapatıp çıkarken açmayı denedim olmadı, menüden çıkınca direkt programın başına daldandım olmadı. Sıfırlamam gereken bir değişken mi var ?

Powered by EzPortal