/******************************************************************* * Drehencoder aus dem DDS-Projekt in Assembler auf c übersetzt * vorzugsweise für Anwendung in Arduino Jan 2022 R. Drabek * Basis jedenfalls von peda und Hannes Lux * Mit Timer2 Interrupt ca. 1 ms. Timer0 funktioniert nicht, * wenn man die millis() Funktion von Arduino benutzt * Encoder an PortD in Arduino fragt, wichtig, "gleichzeitig" * beide Phasen des Encoders ab. * Die LUT kann ggfs an den verwendeten Encoder angepasst werden, * bzw auch gespiegelt werden wen li, re vertauscht ist * Mit Arduino ist keine spezielle library zu includieren *******************************************************************/ static uint8_t result; //Wert aus LUT ins Hauptprogramm bringen static uint8_t flag; //ist doppel von result void setup() //ohne 328mega datasheet nichts zu machen { TCCR2A |= (1 << WGM21)|(0 << WGM20); //CTC mode TCCR2B |= (1 << CS22)| ( 1<>2; //erzeuge index für enc_lut mit rechtssch. last = aktuell; //so schiebt sich altes last ins Nirvana result = enc_lut[index]; //result ist globale } void loop() { flag = result; }