Hi Leuts,
ich hock grad vor einem, wahrscheinlich simplen Problem:
Ich versuch gerade mehrere Atmega8 zu verbinden, und zwar via UART.
Erstmal will ich es mit 2 Schaffen, danach mit mehreren. Ich verbinde also RxD un TxD jeweils gekreuzt. Eine Nachricht, der der Master sendet, heißt z.B. "A ON": Das heißt das er Slave A meint und die Nachricht "ON" schickt, was einfach eine LED anschalten soll.
Hier mein Code:
Master:
Code:
'Master
$regfile = "M8def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100
'Uart
$baud = 9600
Config Serialin = Buffered , Size = 15 , Bytematch = 13
Enable Interrupts
'Main:
Do
'senden
Print "A"
Wait 2
Print "B ON"
Wait 2
Print "A OFF"
Wait 2
Print "B OFF"
Wait 2
Loop
Und Slave:
Code:
'Slave 1
$regfile = "M8def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 9600
'Globale Variablen
Dim Tmp As Byte
Dim New_command As String * 15
Dim Command_array(3) As String * 5
Dim New_status As Bit
'Prozeduren
Declare Sub Serial0charmatch()
Declare Sub Do_set_command(cmd_output As String)
'Configs
Config Portc.5 = Output
Portc.5 = 1
Config Serialin = Buffered , Size = 15 , Bytematch = 13
Enable Interrupts
'Main:
Do
If New_command <> "" Then
'Alles in Großbuchstaben umwandeln
New_command = Ucase(new_command)
'Anweisung aufteilen
Tmp = Split(new_command , Command_array(1) , " ")
Select Case Command_array(1)
Case "A"
'Status des Ausganges/der Ausgänge zurück geben
Call Do_set_command(command_array(2))
Toggle Portc.5
End Select
New_command = ""
End If
Loop
'Subs
Sub Serial0charmatch()
Input New_command Noecho
End Sub
Sub Do_set_command(cmd_output As String * 5)
Select Case Cmd_output
Case "ON"
Portc.5 = 1
Case "OFF"
Portc.5 = 0
End Select
End Sub
Wenn ich jedoch starte, dann passiert beim Slave nix. Der Master sendet fließig(sieht man am Hyperterminal) doch der Slave verarbeitet das Signal nicht. Ankommen tuts (Serial0charmatch wird aufgerufen), aber er erkennt "A" nicht. Wenn ich per Hyperterminal "A ON" sende, dann funzts...
Ich bin nicht so der Bascom-Kreck, vielleicht hab ich mich mit irgendwelchen Variablen vertaen...
Vielleicht kann ja irgendjemand helfen,
Grüße,
Tom
Lesezeichen