seri iletisim

Başlatan selvi, 15 Eylül 2011, 15:23:26

selvi

protonla yaptigim ilk denemedir.vericide 4 tane buton var.programin buyuk kismi calisiyor.BIRLER ve ONAR  butona birlikte basildiginda alicida led yanmiyor.bazi denemeler yaptim.soyle bir durum cikti.AL2 degeri sifir degerinde kaliyor.sorunu gideremedim.cok karmasik bir programda değil fakat bir turlu bahsettigim kismi cozemedim.
verici:
Config CPD_OFF, CP_OFF, BODEN_OFF, MCLRE_OFF, PWRTE_ON, WDT_OFF,INTRC_OSC_NOCLKOUT
Device=12F675
Xtal = 4
DEFINE OSC 4
define osccal_1k 1               
TRISIO =%111100
GPIO=0:ANSEL=0:IOC=0 
CMCON=7
OPTION_REG.7=0   	 ' pull up lar aktif
Symbol BIRER  =GPIO.5
Symbol ONAR   =GPIO.4
Symbol GONDER =GPIO.3
Symbol KAPAT  =GPIO.2
Symbol UYANDIRMA =GPIO.0
GPIO=0
Dim VER1  As Word
Dim VER2  As Byte
Dim SURE  As Word
Dim A     As Word
Dim B     As Word
Clear
DelayMS 200
Basla: 
If BIRER=0 And ONAR =0 Then  
SURE=100:VER1=0:A=0:B=0
UYANDIRMA=1:DelayMS 1000:UYANDIRMA=0
EndIf                             
If  BIRER =0 And ONAR<>0 Then 'zamani birer birer artirma
A=A+1
UYANDIRMA=1:DelayMS 200:UYANDIRMA=0
EndIf
If  ONAR =0 And BIRER<>0 Then 'zamani onar onar artirma
B=B+10
UYANDIRMA=1:DelayMS 200:UYANDIRMA=0
EndIf 
If  GONDER =0 Then 'belirlenmis zamani gonderme
VER1 =A+B:VER2=SURE
UYANDIRMA =1
GoSub HABER
UYANDIRMA =0
EndIf
If KAPAT =0 Then 'kapat
VER1 =39:VER2=0:A=0:B=0:SURE=0
UYANDIRMA =1
GoSub HABER
UYANDIRMA =0
EndIf
DelayMS 300
GoTo Basla                              
HABER:
SerOut2 GPIO.1,396,[Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl
SerOut2 GPIO.1,396,[Rep $AA\5,Rep $00\5,Rep $FF\5]'uyandirma sinyali preambl
SerOut2 GPIO.1,396,["D","E","M",VER1,VER2]
SerOut2 GPIO.1,396,["D","E","M",VER1,VER2]
SerOut2 GPIO.1,396,["D","E","M",VER1,VER2]
Return
End

alici:
Config CPD_OFF, CP_OFF, BODEN_OFF, MCLRE_OFF, PWRTE_ON, WDT_OFF, INTRC_OSC_NOCLKOUT
Device=12F675
Xtal = 4
DEFINE OSC 4
define osccal_1k 1               
TRISIO =%000001
GPIO=0:ANSEL=0:IOC=0
OPTION_REG=%10000101   	 'Pull up dirençleriaktif- Bolme oran? 1/64. 		 'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
CMCON=7    
On_Hardware_Interrupt GoTo KESME   'kesme olu?ursa KESME adl? etikete git    	 '
Symbol T0IF=INTCON.2
Symbol T0IE=INTCON.5
Symbol GIE =INTCON.7
GIE=0:T0IE=0:GIE=1
Symbol LED  =GPIO.2
GPIO=0
'----------------------------------------------------------------------------
Dim AL1    As   Byte
Dim AL2    As   Byte
Dim SAYAC  As   Byte
Dim SN     As   Byte
Dim DAK    As   Byte
Dim I      As   Word
Dim K      As   Byte
Dim A      As   Bit
Dim SURE   As   Word 
Clear 	 
GPIO=0
BASLA:
SerIn2 GPIO.0,396,100,GIT,[Wait("DEM"),AL1,AL2]
GIT:
SURE=AL1
LED=0
If  AL2=100 Then
LED=1
DelayMS 1000
LED=0:AL2=0
EndIf
If A=0 And SURE<>0 And AL1<>39  And SURE=AL1  Then 'zamani baslat
For K=0 To 6
LED=1:DelayMS 100
LED=0:DelayMS 100
Next K
LED=0:T0IE=1:TMR0=0:A=1
EndIf

If AL1=39  Then ' KAPAT KOMUTU GELMISTIR
LED=1:T0IE=0
DelayMS 500
LED=0:AL1=0:AL2=0:SURE=0:A=0
EndIf
LED=0
GoTo BASLA
KESME:
Context Save
 GIE=0
SAYAC=SAYAC+1  	    'kesme sayac?  1 sn= 61(sayac) x 256 (Tmr0) x 64 (bolme)
      If SAYAC=70 Then  	    '61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
         SAYAC=0       	     'sayaç sifirlaniyor
         SN=SN+1       	    'saniye degeri bir artiriliyor
            If SN=60 Then  	   'saniye 60 olmus ise 1 dakika süre geçti o halde
               SN=0        	   ' saniye sifirlaniyor
               DAK=DAK+1   	   ' dakika degeri bir artiriliyor
                  If SURE>0 And SURE=DAK Then   'dakika 1 olmus  
                  LED=1:T0IE=0
                   For I=0 To 200
                    DelayMS 10
                    Next I
                  LED=0    
                     DAK=0:SN=0:SAYAC=0         	   ' dakika sifirlaniyor
                EndIf     
            EndIf
         EndIf
  T0IF=0:GIE=1
Context Restore        
End
Yaşam anlamlandırıldıkça kutsaldır....

kudretuzuner

Merhaba
Proton bilmediğim için yazılımınız hakkında bir şey yazamayacağım,fakat bence kritik soru şu
"BIRLER ve ONAR  butona birlikte basildiginda alicida led yanmiyor"Birlikte basılan  butonlardan cevap alınması çok zor.Sağlam bir algoritma ile yazılacak yazılım ve de araya konacak gecikmelerle butonlar aynı anda basıldığı zaman PIC'e algılatılabilir.Geçmiş günlerde aynı soru tekrar sorulmuştu.Ben de şöyle bir çalışmamı vermiştim.asm yazılımıdır ama yine de fikir vermesi bakımından belki işinize yarar.İki ayrı buton 2 ayrı iş yapmasına rağmen ikisi birden basılınca üçüncü bir iş yapıyor.Kolay gelsin.
https://rapidshare.com/files/703397474/MK_problem.rar
Amatör

selvi

2 butona ayni anda basilmak zorunda degil.programda o ayarlanmis.sorun verici 2 farkli bilgiyi ayni anda gonderiyor.ama alici birinci bilgiyi aliyor fakat ikinci bilgiyi sifir kabul ediyor.pbp da oyle bir durum yoktu.ornegin ver1=2 ve ver2=100 gonderildiginde alicida al1=2, al2=0 oluyor.benim cozdugum kadariyla oyle bir sonuc cikiyor.tabi nedenini bilmiyorum.
Yaşam anlamlandırıldıkça kutsaldır....