coCo
28.11.2006, 12:22
Hi,
ich habe versucht ein Software UART zwischen einem Mega8 und einem Mega32 mit Bascom zu realisieren. Das klappt bis jetzt auch einigermaßen, aber ich hab noch ein Problem:
Der Mega32 sendet einen String an den Mega8, der ihn dann ausgeben soll. Das Problem ist jetzt, dass der erste String den der Mega32 sendet, nicht richtig ankommt. Es kommen nur ein paar Buchstaben in beliebiger Reihenfolge an, danach jedoch kommt der ganze String an.
Außerdem muss ich beim Empfänger die Variable, in die der empfangene Wert gelegt wird, mit "Dim Tstr As String * 19" deklarieren, anstatt wie beim Sender mit "Dim Tstr As String * 20". Wenn ich das als String * 20 deklariere, kommt nur noch Buchstabensalat an...
Weiß vielleicht jemand woran das liegen könnte?
Hier noch die Codes:
Mega32:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 19200
Config Portc.0 = Output
Config Portc.1 = Input
Open "comc.0:19200,8,n,1" For Output As #1
Open "comc.1:19200,8,n,1" For Input As #2
Dim Var As String * 20
Var = "Hallo, wie geht es ?"
Do
Waitms 1
Print #1 , Var
Loop
End
Mega8:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
Config Portd.2 = Input
Config Portd.3 = Output
Open "comd.3:19200,8,n,1" For Output As #1
Open "comd.2:19200,8,n,1" For Input As #2
Dim Tstr As String * 19
Dim ___lcdno As Byte
Config Lcdpin = Pin , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portb.2 , Db7 = Portd.4
Config Lcd = 40 * 4
___lcdno = 0
Initlcd
Cls
Cursor Off
___lcdno = 1
Initlcd
Cls
Cursor Off
Do
Wait 2
Input #2 , Tstr
___lcdno = 0
Locate 1 , 1
Lcd Tstr
Loop
End
Hoffe auf Hilfe :)
MfG
ich habe versucht ein Software UART zwischen einem Mega8 und einem Mega32 mit Bascom zu realisieren. Das klappt bis jetzt auch einigermaßen, aber ich hab noch ein Problem:
Der Mega32 sendet einen String an den Mega8, der ihn dann ausgeben soll. Das Problem ist jetzt, dass der erste String den der Mega32 sendet, nicht richtig ankommt. Es kommen nur ein paar Buchstaben in beliebiger Reihenfolge an, danach jedoch kommt der ganze String an.
Außerdem muss ich beim Empfänger die Variable, in die der empfangene Wert gelegt wird, mit "Dim Tstr As String * 19" deklarieren, anstatt wie beim Sender mit "Dim Tstr As String * 20". Wenn ich das als String * 20 deklariere, kommt nur noch Buchstabensalat an...
Weiß vielleicht jemand woran das liegen könnte?
Hier noch die Codes:
Mega32:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 19200
Config Portc.0 = Output
Config Portc.1 = Input
Open "comc.0:19200,8,n,1" For Output As #1
Open "comc.1:19200,8,n,1" For Input As #2
Dim Var As String * 20
Var = "Hallo, wie geht es ?"
Do
Waitms 1
Print #1 , Var
Loop
End
Mega8:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
Config Portd.2 = Input
Config Portd.3 = Output
Open "comd.3:19200,8,n,1" For Output As #1
Open "comd.2:19200,8,n,1" For Input As #2
Dim Tstr As String * 19
Dim ___lcdno As Byte
Config Lcdpin = Pin , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portb.2 , Db7 = Portd.4
Config Lcd = 40 * 4
___lcdno = 0
Initlcd
Cls
Cursor Off
___lcdno = 1
Initlcd
Cls
Cursor Off
Do
Wait 2
Input #2 , Tstr
___lcdno = 0
Locate 1 , 1
Lcd Tstr
Loop
End
Hoffe auf Hilfe :)
MfG