RF veri Triyak Surme

Başlatan ilhuns, 15 Temmuz 2016, 18:25:21

ilhuns

Merhaba

   Rf ile veri transferi yapmaya calisiyorum ancak basarili olamadim acaba nerede hata yapmaktayim verici kodlari 16F877A
@ __config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF  
include "modedefs.bas"
define osc 4

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
ADCON1 = 7


slave2 var byte
calisma2 var byte

slave2 = 1
calisma2=1

basla:
   hSerout ["PRZ",slave2,calisma2]
   pause 3000
   goto basla


alici devrenin ise 16F628A

define osc 4
include "modedefs.bas"
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically


TRISA=%11111111
TRISB=%11111111
PortA=0
PortB=0

'***********************74LS165 Port Tanimlamalari******************************
datagPIN var PORTB.7
clockgPIN var PORTB.6

'*************************Degisken Tanimlamalari********************************

aldi     var byte
dip      var byte      'Dip pozisyonu belirleme
slave    var byte      'Dip pozisyonuna gore slave belirleme
slave2   var byte

calisma2 var bit
sayac    var word
slave=0



high PORTB.5
HIGH PORTB.4

Basla:
      gosub Dip_oku
      GOSUB Dip_ayar
     
      HIGH PORTB.0
        PAUSE 1000
        LOW PORTB.0
     

Anadongu:
        hSerIn [WAIT("PRZ"),slave2,calisma2]
        if slave2=slave AND CALISMA2=1 THEN
        TOGGLE PORTB.0
        endif
        GOTO Anadongu
       



'***************************Slave Secme Bolumu**********************************
Dip_oku:
       PULSOUT PORTB.4,1
       LOW PORTB.5
       SHIFTIN datagPIN, clockgPIN, MSBPRE, [Dip]
       return

Dip_ayar:
  Select case dip
   
   case %00000000
      slave = 1
     
   case %00000001
      slave = 2
     
   case %00000011
      slave = 3
     
   case %00000111
      slave = 4
     
   case %00001111
      slave = 5
     
   case %00011111
      slave = 6
     
   case %00010000
      slave = 7
     
   case %00011000
      slave = 8
     
   case %00011100
      slave = 9
     
   case %00011110
      slave = 10
     
   case %00010001
      slave = 11
     
   case %00010011
      slave = 12
     
   case %00010111
      slave = 13
     
   case %00011001
      slave = 14
     
   case %00011011
      slave = 15
     
   case %00011101
      slave = 16
     
      end select
      return


16f628 baglantilari rf data b1 portuna bali
16f877 baglantisidna ise rf data c6 portuna bagli

Asil amacim 16 adet slave olusturmak bunun seciminide dip swith ile yapmak ancak suan ki kodlarda gonderilen veri slave1 ve caisma1 alici programdada 2 side birbirine esit ise 1 led yakmaya calisiyorum ancak bir yerde bir sorun var henuz onu bulamadim ETE hocanin konularinida okudum ama sonuca ulasa bilmis degilim biraz karisik oldu sanirim :)

ete

Genel anlamda bakarsak birinci programda hiç bir tris registeri set edilmemiş. Böylece pinlerin giriş veya çıkış olma durumları belirsiz kalmış.  16F877A da komparatörde vardır onuda iptal etmen gerek CMCON=7 komutu ile.
Tabiiki USART kulandığına göre usart pinlerinden bilgi alışverişi yapıyorsundur umarım.

Alıcı programda ise Tris registerleri yer alıyor ancak hepsini giriş yapmışsın. TX pini çıkıştır en azından.
Pinlerin giriş yada çıkış olma özelliklerine dikkat etmen gerekiyor.
Öncelikle bu söylediklerime göre programları yeniden düzenle ve tekrar dene bakalım sonuç değişecekmidir.

Ete

ilhuns

#2
oncelikle cevabiniz icin cok tesekkurler rf gonderici 16f877 portc.6 tx pinine alici ise 16f628 b3 rx pinine bagli

16f628 de

TRISB=%00110110

seklinde ayarladim

16f877 de ise cmcon=7 komutunu ekleyip
trisC%111111111

seklinde komle cikis yaptim ancak sonuc degismedi

16f877 kartini kendim yapmistim arduinodan esimlenerek :) sorunsuz calistigina eminim bircok proyede kullandim solda alici olarak delikli plaka uzerine yaptigim boardtada picin calisip calismamasini denemek icin led bagladim zaten kodlardanda gormussunzudur program basinda yanip sonmesi karti test etmem icindi ikiside baglantilarda sorunsuz gozukuyor

5v ve topraklari ortak kullanmam sorun yaratiyor olabilirmi

kodlarida hatta iyice kisalttim karisikliga meydan vermemesi acisindan verici 16f877
@ __config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF 
include "modedefs.bas"
define osc 4
CMCON=7
ADCON1 = 7

trisc=%11111111

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically



slave2 var byte
calisma2 var byte

slave2 = 1
calisma2=1

basla:
   hSerout ["PRZ",slave2,calisma2]
   pause 3000
   goto basla

alici 16f628

@ __config _INTRC_OSC_CLKOUT & _WDT_ON & _LVP_OFF & _CP_OFF & _MCLRE_OFF
define osc 4
include "modedefs.bas"
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically


TRISA=%11111111
TRISB=%11100111
PortA=0
PortB=0

slave var byte
slave2   var byte
calisma2 var bit
sayac    var word
slave=1





     

Anadongu:
        hSerIn [WAIT("PRZ"),slave2,calisma2]
        if slave2=slave AND CALISMA2=1 THEN
        high PORTB.0
        endif
        GOTO Anadongu

ilhuns

#3
ETE Hocam

son durumda 16f877 deki pause 3000 komutunu sildikten sonra basarili oldum sanirim burdaki gecikme bir sorun yaratiyor

ilhuns

#4
Devremdeki Rf veri problemini ETE hocanin yardimlari sayesinde cozdum bu devrede asil amacim Rf ten alinan veri ile triyak surmek yaptigim arastirmalarda 1 adet triyak on off devresi buldum ve kendi devreme ekledim isiste simulasyon sorunsuz olarak calismakta ancak triyaklar ile ilgili yeterli bilgiye sahip degilim oyuzden tecrubeli arkadaslarin tavsiyelerine ihtiyacim var

Devreyi lamba icin degil priz icin kullanacagim ortalama priz uzerinden 16a guc cekilebilir olmasini istiyorum. Sorularima gelince

1. Bta24 kullanim icin uygunmudur ve bu sema uzerinde uygulanabilirmi?
2. r6,r7,r8 direnc degerleri ile ilgili bir sorun varmi ve bu direncleri kac watt olarak kullanmaliyim.
3. c1 kond. 400v olarak kullanicam dogrumur?

  devre surekli kullanim icin uygun olurmu normalde surekli olarak on konumunda bulunacak ve istenildiginde kapatilip acila bilmesini istiyorum.

Powered by EzPortal