Anbei der Code der bei mir nicht funktioniert. Drücke ich Taste "3" auf dem Board, dann funktioniert der Richtungswechsel nur ein paar mal (siehe Quellcode). Erst durch einen Reset am Board und erneutes drücken von Taste "3" funktioniert es wieder, bis wieder zu viele Richtungswechsel kommen -> drehung wird langsamer bis gar nix mehr geht.
IST MEIN BOARD DEFEKT? Bei wem funktioniert der Code?
DANKE!!

Code:
Declare Sub Motortesta()
Declare Sub Motortestb()
Declare Function Tastenabfrage() As Byte


$regfile = "m32def.dat"


Dim I As Integer
Dim N As Integer
Dim Ton As Integer

$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung

Config Pina.7 = Input                                       'Für Tastenabfrage
Porta.7 = 1                                                 'Pullup Widerstand ein

Dim Taste As Byte

' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output                                      'Linker Motor Kanal 1
Config Pinc.7 = Output                                      'Linker Motor Kanal 2
Config Pind.4 = Output                                      'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output                                      'Rechter Motor Kanal 1
Config Pinb.1 = Output                                      'Rechter Motor Kanal 2
Config Pind.5 = Output                                      'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02                                     'Prescaler = 8





I = 0
Sound Portd.7 , 400 , 450                                   'BEEP
Sound Portd.7 , 400 , 250                                   'BEEP
Sound Portd.7 , 400 , 450                                   'BEEP
Print
Print "**** RN-Control 1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
Print
Do




   Taste = Tastenabfrage()
   If Taste <> 0 Then

      Select Case Taste
         Case 1
            Call Motortestb
         Case 2
            Call Motortesta
         Case 3
            Call Motortesta                                 ' Hier dreht sich Motor noch normal
            Call Motortestb                                 ' Hier auch normal
            Call Motortesta                                 ' jetzt wird er langsamer
            Call Motortestb                                 ' und noch langsamer
            Call Motortesta                                 ' immer langsamer
            Call Motortestb                                 ' hier zuckt er nur noch
            Call Motortesta                                 ' er dreht sich gar nicht mehr
            Call Motortestb                                 ' er dreht sich gar nicht mehr

      End Select
      Sound Portd.7 , 400 , 500                             'BEEP
   End If

   Waitms 100
Loop

End




'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word

   Tastenabfrage = 0
   Ton = 600
   Start Adc
   Ws = Getadc(7)
  ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
   If Ws < 500 Then
      Select Case Ws
         Case 400 To 450
            Tastenabfrage = 1
            Ton = 550
         Case 330 To 380
            Tastenabfrage = 2
            Ton = 500
         Case 260 To 305
            Tastenabfrage = 3
            Ton = 450
         Case 180 To 220
            Tastenabfrage = 4
            Ton = 400
         Case 90 To 130
            Tastenabfrage = 5
             Ton = 350
 '        Case Else
'              Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
      End Select
      Sound Portd.7 , 400 , Ton                             'BEEP

   End If

End Function


'Testet Motoren und Geschwindigkeitsreglung
Sub Motortesta()

   'Linker Motor ein
   Pwm1b = 0
   Portd.4 = 0
   Portc.6 = 0                                              'bestimmt Richtung
   Portc.7 = 1                                              'bestimmt Richtung
   Portd.4 = 1                                              'Linker Motor EIN



   I = 300
   Do
      Pwm1b = I
      Waitms 40
      I = I + 50
   Loop Until I > 500

   Wait 1
   Do
      Pwm1b = I
      Waitms 40
      I = I - 50
   Loop Until I < 1
   Pwm1b = 0                                                'Linker Motor aus
End Sub

Sub Motortestb()

   'Linker Motor ein
   Pwm1b = 0
   Portd.4 = 0
   Portc.6 = 1                                              'bestimmt Richtung
   Portc.7 = 0                                              'bestimmt Richtung
   Portd.4 = 1                                              'Linker Motor EIN
   I = 300
   Do
      Pwm1b = I
      Waitms 40
      I = I + 50
   Loop Until I > 500

   Wait 1
   Do
      Pwm1b = I
      Waitms 40
      I = I - 50
   Loop Until I < 1
   Pwm1b = 0                                                'Linker Motor aus
End Sub