-
-
Erfahrener Benutzer
Roboter Experte
Also, mit Encodern hab´ ich schon einige Projekte realisiert. Herrliche Bauteile - die wirken so professionell 
Ich muss gestehen, die Assembler-Wahrheit hinter dem "ENCODER"-Befehl nicht zu verstehen. Kann halt kein ASM... aber ich hab´s immer mit einer supereinfach-Lösung gemacht, für die man nur einen Interrupt-fähigen Pin und einen beliebigen anderen Pin braucht (können durchaus in verschiedenen Ports sein)
1. Du dimensionierst eine Zähl-Variable
2. "A" legst Du auf den Interrupt-Pin, den Du auf fallende Flanke konfigurierst.
3. In der superkurzen Interrupt-Routine machst Du einfach eine Abfrage, ob der mit B verbundene Pin 1 oder 0 ist (Drehrichtung rechts bzw. links):
Interrupt:
If PinX.Y = 1 then Zähler = Zähler + 1 else Zähler = Zähler - 1
Return
Durch aktivieren bzw. deaktivieren des Interrupts kannst Du den Encoder an genau den Stellen des Programms aktivieren, an denen auch tatsächlich eine Eingabe erfolgen soll. Hier kannst Du dann die Größe "Zähler" weiterverarbeiten (z.B. auf ein Maximum und Minmum begrenzen) und nach Abschluss der Eingabe der eigentlichen Zielvariable den Wert zuweisen.
Ich hoffe, das war jetzt nicht zu wirr - gutes Gelingen!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen