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:
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)Code:while ((SpurA_akt == SpurA_old) && (SpurB_akt == SpurB_old)); Rechts0; Links0; ...
Noch ein Ansatz:
Das würde helfen wenn die Auswertung zu lange dauert und in der Zwischenzeit erneut ein Spurwechsel auftritt.Code:while (1) { SpurA_old = SpurA; SpurB_old = SpurB; do // warten bis Bitwechsel erkannt wird
Ich weiß immer noch nicht wie ich auf einen Motor gekommen bin :)
Gruß
mic







Zitieren

Lesezeichen