Ich habe folgenden Code um einen Drehgeber auszuwerten (Wird bei jedem Change des Channels A ausgelöst.):

Code:
Isr_incremental_encoder:
  If Phase_b <> Phase_a Then
    Decr Ist
  Else
    Incr Ist
  End If

  If Dira = 1 Then
   If Ist => 1000 Then
    Dira = 0
    Dirb = 1
   End If
  End If

  If Dirb = 1 Then
   If Ist =< 0 Then
    Dira = 1
    Dirb = 0
   End If
  End If

  Print Ist
Return
das ganze geht auch ne weile gut aber plötzlich springt er auf >10000 Ink hoch und macht nur noch misst.

Auszug aus Protokoll:

508
509
510
511
512
12846
12846
12846
12847
...

an was kann das liegen und wie kann man das Problem am besten beseitigen?


tobi


edit1: ich hab das ganze auch mal ohne die Motoransteuerung getestet sondern den Motor direkt ans netzteil gehängt. Bringt nix - gleiches Problem

edit2: könnte es vllt an der PWM im hintergrund auf timer0 liegen?