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:
Und Slave: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
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...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
Ich bin nicht so der Bascom-Kreck, vielleicht hab ich mich mit irgendwelchen Variablen vertaen...
Vielleicht kann ja irgendjemand helfen,
Grüße,
Tom







Zitieren

Lesezeichen