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"
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 :)
ilginize teşekkü ederim.dogrusu bu sanırım
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
Usta bizde bu konu ile alakalı baya sıkıntı yaşıyoruz sorunu halledebildin mi?