Hi, habe hier ein Grundsatzproblem: Ich frage über einen schnellen Timer einen Drehencoder ab und merke mir das Delta zur letzten Abfrage die in einer langsameren Haupschleife läuft. Soweit so gut. Drehe ich den Encoder nun sehr sehr schnell, dann verliere ich soviele Impluse, daß die CPU meint, ich drehe den Encoder in die andere Richtung. Also: wie schnell muß ich die CPU Takten? Ist eine höhere Taktfrequenz überhaupt die Lösung? Gibt es andere "loss less" Ansätze? LG Günter
Günter W. schrieb: > Ich frage über einen schnellen Timer einen Drehencoder ab und merke mir > das Delta zur letzten Abfrage die in einer langsameren Haupschleife > läuft. mach das Delta doch gleich im Timer und integriere in einer statischen Variable die aufgelaufenen Impulse auf. Diese statische Variable sollte mit einer anderen Funktion ausgelesen und auf 0 gesetzt werden. So finden auch zwei aufintegrierte Impulse ihren Weg in die Hauptschleife, selbst wenn der Prozessor viel zu tun hat. Die Timer-Interruptroutine stellt an sich ja schon sicher, dass sie regelmäßig ausgeführt wird(Beispiel: Durchlauf der Mainloop in ~50ms, Timerinterrupt alle 5ms, es könnten bis zu 10 Impulse auflaufen, die aber alle "durchkommen"). mfg mf PS: An dem "Rückwärtsdrehen" sind Shannon und Nyquist wegen des Abtasttheorems schuld. Das Abtasten stellt aber hier gleich auch die Dekodierung in einzelne Impulse dar.
Günter W. schrieb: > Gibt es andere "loss less" Ansätze? Werte die Phasensignale über Pin-Change IRQ aus.
Michael schrieb: > Günter W. schrieb: >> Gibt es andere "loss less" Ansätze? > > Werte die Phasensignale über Pin-Change IRQ aus. Und was ist mit Prellen? mfg mf
@ Michael (Gast) >> Gibt es andere "loss less" Ansätze? >Werte die Phasensignale über Pin-Change IRQ aus. Nö, dass lässt man besser bleiben und liest den Artikel Drehgeber.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.