Hallo Zusammen,
ich habe ein kleines Problem. Ich möchte mit einem Interrupt Zeichen über die Serielle empfangen. Das klappt soweit auch ganz gut. Doch habe ich irgendwie Probleme mit dem Puffer, soviel weiss ich schon.
Denn wenn ich 255, 2, 100 sende, dann bekomme ich als Ausgabe "B:255-2" anstatt "B:2-100". Mein Atmel nimmt immer ein Zeichen vorher rein, nicht das gerade gesendete. So als ob eine Schlange im Buffer ensteht.
Die 255 sende ich immer am Anfang um zu wissen, dass nun ein neuer Befehl kommt.
Udr ist ja ein Puffer. Wie funktioniert denn der? Wird der nicht leer wenn ich den auslese bzw. wie kann ich sicher meine Werte auslesen.
Danke für Hilfe
Code:$regfile = "m8def.dat" $crystal = 8000000 $baud = 2400 'Serial Datenempfang Dim S As String * 2 At &H60 Dim B(3) As Byte At &H60 Overlay Dim N As Byte S = "" N = 0 On Urxc Onrxd Enable Urxc Enable Interrupts Do If N = 2 Then 'Übernahme If B(1) > 0 And B(2) > 0 Then 'Übernahme wert für Servos B(1) = 0 B(2) = 0 End If End If Loop Onrxd: If Udr = 255 Then Udr = 0 N = 0 B(1) = 0 B(2) = 0 Else Incr N If N = 3 Then N = 2 B(n) = Udr Print " B:" ; B(1) ; "-" ; B(2) End If Return End







Zitieren

Lesezeichen