Hallo

Wenn es nur beim schnellen Drehen auftritt könnten deine erzeugten Impulse zu lang sein:

count = 4;

Wenn beim Warten auf einen Flankenwechsel noch ein Links/Rechts-Impuls aktiv ist wird möglicherweise der Wechsel auf der falschen Spur erkannt. Dies könnte zum Erkennen einer falschen Zählrichtung führen. Vielleicht count verkleinern.

Oder:
Code:
while ((SpurA_akt == SpurA_old) && (SpurB_akt == SpurB_old)); 
Rechts0;
Links0;
...
damit der letze Impuls sicher beendet wird. (Eventuell anschliessend nochmals kurz verzögern damit rechts0 zu rechts1 bzw. links0 zu links1 sicher erkannt werden kann)

Noch ein Ansatz:
Code:
     while (1)
      {
      SpurA_old = SpurA;
      SpurB_old = SpurB;

         do // warten bis Bitwechsel erkannt wird
Das würde helfen wenn die Auswertung zu lange dauert und in der Zwischenzeit erneut ein Spurwechsel auftritt.

Ich weiß immer noch nicht wie ich auf einen Motor gekommen bin :)

Gruß

mic