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