Gast
#4412893
Nachdem ich mich hier mit fast allen Beiträgen und Codebeispielen auseinandergesetzt habe und nichts wirklich "bullet proof" war bzw. in meiner Anwendung instabil gelaufen ist. Habe ich im Netz nach weitern Ideen gesucht. Und wurde bei http://www.buxtronix.net/2011/10/rotary-encoders-done-properly.html fündig. Den Code von Ben habe ich dann AVR tauglich in Standard C angepasst. Da ich von dem Ergebnis begeistert bin, wollte ich euch diesen Code nicht vorenthalten. Alle Codes hier aus dem Forum und den von Ben auch, hatte ich mit einem PANASONIC ENCODER Typ EVEQDBRL416B_V2 (von Pollin) mit eine ATmega32 / 16 MHz getestet. Die Codes hatte ich jeweils in einen 2 ms Timerinterrupt gelegt. Keiner der Codes aus diesem Forum lief stabil mit diesem Encoder. Die negativsten Ergebnisse hatte ich mit dem Code von Peter Dannegger. Hier wurde offenbar, dass kein sauberes Entprellen stattfindet. Denn in jeder Raststellung konnte durch sanften, seitlichen Druck auf die Achse des Encoders ein Prellen und damit verbunden ein ständiger Zustandswechsel erzeugt werden. Der Code von Ben ist genial einfach, gut und sehr stabil. Auch kein Springen der Werte bei Raststellung durch seitliches drücken auf die Achse. Wenn man mit HALFSTEP übersetzt, wird bei jeder Rastung ein Wert geliefert. So wie man es eigentlich möchte/erwartet. Bei FULLSTEP wird nur bei jeder 2. Raststellung ein Zustandsänderung gemeldet. Ich kann nur sagen: Genial!
