Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: styx75 - 23 Nisan 2014, 17:02:57

Başlık: seri iletişim hatası
Gönderen: styx75 - 23 Nisan 2014, 17:02:57
selam arkadaşlar. öncelikle herkezin 23 nisan ulusal EGEMENLİK cocuk bayramı kutlu olsun
1 gündür ugraşmama rağmen 18f4550 ve 16f628a yı usart haberleştiremedim okadar çok nette gezindim ama sonunda kafa çorba oldu  :) çok bilmediğim bir konu oldugu için buraya yazmaya karar verdim kodları veriyorum ..glcd de ölçüm sonucu alakasız değerler göstermekte
verici
Device = 16F628A
Declare Xtal=4 
OPTION_REG=%0000000
TRISA=%00111110
TRISB=%11100011   
CMCON=7

Declare All_Digital= TRUE       
Declare Hserial_Baud 9600
Declare Hserial_RCSTA %10010000
Declare Hserial_TXSTA %00100100
Declare Hserial_Clear = On
Declare Hserial_SPBRG 25

Dim DEGER As Word
Dim DERECE As Word
Dim derece1 As Byte
Dim derece2 As Byte 
           
Symbol DQ=PORTB.0

DelayMS 200
BASLA:
GoSub OKU
GoSub GONDER


GoTo BASLA

OKU:
OWrite DQ , 1, [$CC, $44]
OWrite DQ, 1, [$CC, $BE]           
ORead DQ, 0, [DEGER.LowByte, DEGER.HighByte]   
DERECE = DEGER */ 160:derece1=DERECE/10:derece2=DERECE //10
Return 

GONDER:   
HSerOut [derece1,derece2]
HSerOut [derece1,derece2]   
Return

 


alcı
Device = 18F4550
Declare Xtal=20   
Declare All_Digital= TRUE
INTCON=%00000000     
TRISA=%00000001   
TRISB=%11111111
TRISC=%10000000
TRISD=%00000000
INTCON2=%01000001
TRISE=%000

Declare LCD_DTPort = PORTD     
Declare LCD_RSPin = PORTA.1
Declare LCD_ENPin = PORTA.2
Declare LCD_RWPin = PORTA.3
Declare LCD_CS1Pin = PORTA.4
Declare LCD_CS2Pin = PORTA.5
Declare LCD_Type =  GRAPHIC
Declare GLCD_STROBE_DELAY = 1
Declare GLCD_CS_Invert = On       
Declare Internal_Font = On                 
Declare Font_Addr = 0

Declare Hserial_Baud 9600
Declare Hserial_RCSTA %10010000
Declare Hserial_TXSTA %00100100
Declare Hserial_Clear = On
Declare Hserial_SPBRG 25

Dim DERECE1 As Byte
Dim DERECE2 As Byte

Cls
DelayMS 200
BASLA:
GoSub AL
Print At 4,10,Dec DERECE1,".",Dec1 DERECE2, 

GoTo BASLA

AL:
HSerIn [DERECE1,DERECE2]
Return 

End
Include "font.inc"
Başlık: Ynt: seri iletişim hatası
Gönderen: serhat1990 - 23 Nisan 2014, 20:51:51
Merhabalar, kodlarınızı bilmiyorum. Proton ile daha önce çalışmadım. Ama size önerim tranceiver olarak seri haberleşme yoluyla haberleşen bir kart ile alıcı ve vericiyi ayrı ayrı olarak test etmeniz. Bu sayede hatanın hangisinde olduğunu daha rahat anlayabilirsiniz. Bahsettiğim kartı board'un üzerine bile rahatlıkla monte edebilirsiniz. Max232 ile bir devre kuracaksınız sadece. Bilgisayarda herhangi bir terminal programıyla vericinin uygun baudrate değerinde veri gönderip göndermediğini , alıcının ise uygun baudrate değerinde gönderilen dataları işleyip işlemediğini gözlemleyebilirsiniz. LCD üzerinde karakterlerin farklı çıkması mcu'nun çalışma frekansı ile ilgili olabilir. İyi çalışmalar dilerim. Bayramınız kutlu olsun :)
Başlık: Ynt: seri iletişim hatası
Gönderen: styx75 - 24 Nisan 2014, 08:33:47
ilginize teşekkü ederim.dogrusu bu sanırım
Başlık: Ynt: seri iletişim hatası
Gönderen: styx75 - 26 Nisan 2014, 19:56:13
Device = 18F4550
Declare Xtal=20
On_Hardware_Interrupt GoTo VERIAL
Declare All_Digital= TRUE Symbol GIE  =INTCON.7   
Symbol PEIE =INTCON.6 
Symbol RCIE=PIE1.5
Symbol RCIF=PIR1.5
Symbol IPEN=RCON.7

Dim AL As Byte
Dim TEMP As Byte
GoTo BASLA
'------kesme----
VERIAL:
Context Save 
If RCIF=1 Then
AL=0
HSerIn [Wait("STYX"),Dec AL]
TEMP=RCREG
RCIF=0   
EndIf   
Context Restore   
'-----------------------------
BASLA:
PORTE=0
GIE=0
IPEN=1 
RCIE=1
PEIE=1
GIE=1 
DelayMS 500
Cls                   
NN: 
Print At 4,10,"STYX"
Print At 5,10,Dec3 AL
PORTE.0=1
DelayMS 1
PORTE.1=1
DelayMS 1
PORTE.2=1
DelayMS 1
PORTE.0=0
DelayMS 1
PORTE.1=0
DelayMS 1
PORTE.2=0
DelayMS 1
GoTo NN                                   
End
Include "font.inc"


buradaki durumu kısaca izah edeyim (devre bread broad üzerinde kurdum.)
seri kesme kaynagı olarak başka bir picden  500 ms aralıklarla 11 ve 12 bilgisi geliyor. bilgi alışı ve donanım kesmesine girmeyle ilgili sıkıntı yok ama sorun ,kesme gerçekleştigi zaman program tekrar geldiği yere dönmesi için bir kesmenin gelmesi daha gerekiyor..bu durumda 1ms aralıklarla yanması gereken üç led kesme kaynagından gelen kesme hızına göre çalışıyor  :) ..kesme rutinini protonun manuelinden yapmaya çalıştım..
kesmeden sonra otomatik geri kaldıgı yere gitmesi için neyi yanlış yapıyoum sizce yardımlarınızı bekliyorum..
saygılar
Başlık: Ynt: seri iletişim hatası
Gönderen: elektrodeney - 20 Mart 2015, 22:31:58
Usta bizde bu konu ile alakalı baya sıkıntı yaşıyoruz sorunu halledebildin mi?