Hi Leute!
Ich bin mit meinem Programm schon recht zufrieden. Wenn ich einen Befehlsstring an meinen Mega8 sende, werden die Daten korrekt verarbeitet und es funktionert alles so, wie es soll. Dann schicke ich den zweiten Befehl und es tut sich nichts mehr! Die Motoren bleiben stehen und es wird auch nichts mehr an den PC zurückgesendet. Sende ich den dritten Befehl funktioniret es wieder.
Ich denke er bleibt in einer der Schleifen hängen, aber ich finde den Fehler nicht. Bin auch für Verbesserungen aller Art dankbar!
MFG!
Achja ein Befehlsstring sieht so aus: m255-255-1-0000x
Code:$regfile = "m8def.dat" $crystal = 4000000 $baud = 9600 Config Portb = Output Config Pind.5 = Output 'Motor 1 In1 D5 Motor1_in1 Alias Portd.5 Config Pind.6 = Output 'Motor 1 In2 D6 Motor1_in2 Alias Portd.6 Config Pind.7 = Output 'Motor 2 In1 D7 Motor2_in1 Alias Portd.7 Config Pinb.0 = Output 'Motor 2 In2 B0 Motor2_in2 Alias Portb.0 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Enable Interrupts Dim S As String * 1 Dim Befehl As String * 22 Dim X As String * 1 Dim Laenge As Byte Dim Instring As String * 22 Dim Strings(7) As String * 3 Dim Char As String * 1 Dim Par As Byte Dim Idx As Byte Dim Pwms1 As Byte Dim Pwms2 As Byte Dim Richtung As Byte ' m255-255-1-0000x Do If Ischarwaiting() = 1 Then S = Inkey() If S = "m" Then Do X = Inkey() Befehl = Befehl + X Loop Until X = "x" Laenge = Len(befehl) Laenge = Laenge - 1 Instring = Left(befehl , Laenge) Par = 1 For Idx = 1 To Len(instring) Char = Mid(instring , Idx , 1) If Char = "-" Then Incr Par Else Strings(par) = Strings(par) + Char End If Next Pwms1 = Val(strings(1)) Pwms2 = Val(strings(2)) Richtung = Val(strings(3)) Print Pwms1 Print Pwms2 Print Richtung For Par = 1 To 5 Strings(par) = "" Next End If Select Case Richtung Case 1: Motor1_in1 = 1 Motor1_in2 = 0 Motor2_in1 = 1 Motor2_in2 = 0 Case 2: Motor1_in1 = 0 Motor1_in2 = 1 Motor2_in1 = 0 Motor2_in2 = 1 Case 3: Motor1_in1 = 0 Motor1_in2 = 1 Motor2_in1 = 1 Motor2_in2 = 0 Case 4: Motor1_in1 = 1 Motor1_in2 = 0 Motor2_in1 = 0 Motor2_in2 = 1 Case Else: Motor1_in1 = 0 Motor1_in2 = 0 Motor2_in1 = 0 Motor2_in2 = 0 End Select Compare1a = Pwms1 Compare1b = Pwms2 Loop End







Zitieren

Lesezeichen