Hallo Leute!
Ich bin gerade mit einem neuen Projekt beschäftigt. Manche Taster möchte
ich nun durch Encoder-Drehschalter ersetzen.
Conrad: 700699
Man hat, wenn man z.B. durch ein Menu scrollen möchte einfach mehr
Gefühl, als mit Taster.
Ich habe euch das Datenblatt mitgesendet. Auf Seite 6 sieht man wie man
das Ganze entprellen kann.
Aber an welcher Stelle führe ich die beiden Leitungen in den µController
hinein?
Gehe ich von Punkt Terminal A und Terminal B aus in den Mikrocontroller
oder jeweils von dem Punkt, der sich zwischen Widerstand und Kondensator
befindet?
Danke für eure Hilfe
Tschüss
Martin
'Terminal A' und 'Terminal B' würden bei uns Pin 1 bzw. Pin 2
heissen. Gemeint sind einfach nur die Anschlusspins des
Bausteins. Dein entprelltes Signal kriegst du am besagten
Punkt zwischen Widerstand und Kondensator, so du nicht einfach
in Software entprellen willst.
Ich hab jetzt nicht nachgesehen. Gibts die Dinger eigentlich
auch mit einem integrierten Drucktaster? Sowas wäre für ein
Menü ideal (meine Multiplex-Fernsteuerung hat sowas): Mit
drehen scrollt man zum Menüpunkt, durch drücken wählt man ihn
aus.
Ja, ich habe gerade vor 10 Minuten auch so ein ALPS Ding mit Drucktaster
eingelötet und via ASM in einem Tiny2313 laufen. Die Entprellung habe
ich komplett in Software eingebaut, in einem Timer-Interrupt, der ca.
alle 750µs mal guckt, was los ist. Die Abfrage des Encoders auf Richtung
und Betätigung ist recht einfach, da die Flanken auch bei schneller
Drehung mit Hand mehr als 2ms auseinanderliegen. Ich habe die Aufgabe so
gelöst, daß ich Pin 1 auf High->Low teste und in dem Moment auf den
Pegel des zweiten Pins gucke. Ist dieser ebenfalls schon Low, wurde
gegen die Uhr, ist er noch High, wurde mit der Uhr gedreht. Da ich nach
dieser Abfrage den Test einstelle, bis beide Leitungen wieder High sind,
verpasst der Controller keinen Impuls und das Prellen wird wirkungsvoll
unterdrückt. Mit einer Handvoll Flags wird neben dem Encoder dann auch
gleich noch der Taster ausgewertet. Geht echt fein.
Ganz genau; das Entprellen ruig der Software überlassen. In Zeiten des
Sparens kann man auf die Kosten der Kondensatoren und die Zeit für das
einlöten gut verzichten.
So wie das TravelRec. beschreibt funktionierts prima, habs auch so
gemacht (in Timer-Interrupt pollen / mit State-Machine auswerten).
Hallo Leute
TravelRec welchen Schalter hast du verwendet? Wäre es möglich den Code
zu
posten, würde mich interessieren wie du es realisiert hast.
mfg Alex Z.
Den ALPS schlagmichtod von C****d, der so arbeitet, wie in dem von
Martin geposteten Datenblatt, also mit den durcheilenden, versetzten
Pulsen bei jeder Rastung. Code kann ich posten, ist aber nicht bereinigt
und braucht z.Zt. einen Interrupt und ein GPIOR vom Tiny2313 für die
Flags. Der ganze Kram ist eingewoben in eine Displaysteuerung die noch
nicht fertig ist. Im Großen und Ganzen macht der Code genau das, was ich
oben mit Worten beschrieben habe.
Na okay, hier isser. Sicher nicht perfekt und auch nur in Schnipseln,
die nichtrelevanten Teile habe ich gelöscht. Dem Button ist noch ein
zusätzlicher Zähler zugeordnet, der es ermöglicht, zwischen kurzen und
langen Tastendrücken zu unterscheiden, um zusätzliche Schaltfunktionen
zu erreichen. Gebaut wurde das Ganze für einen Tiny2313, mit 8MHz Clock.
Ach ich seh´ gerade, die Register TempH und Temp3 werden hier nicht
benutzt, brauchen für den Fall also nicht definiert zu werden. Die ISR
erledigt die komplette Abfrage und einen Sekundentimer, die Auswertung
der Schaltsignale muß dann in der Main erfolgen.
Und es muß der Interrupt für OutputCompareA Timer0 natürlich aktiviert
werden:
ldi Temp, 0b00000001
out TIMSK, Temp
Und der passende InterruptVektor muß entsprechend adressiert sein.
Ähem, der Encoder hängt an PortA 0 und PortA 1, der Button an PortB 1 -
zum besseren Verständnis. Die internen Pullups für die entsprechenden
Pins müssen gesetzt sein.
Habe den Encoder PANASONIC EVEQDBRL416B verbaut.
Er arbeitet aber nicht wie gewollt (zumnindest von mir). Wenn ich nach
rechts drehe ist soweit alles ok, wenn ich nach links drehe bekomme ich
sehr häufig die Bitfolge für Rechtsdrehung geliefert.
Habe schon mehrere Exemplare ausgetestet.
Ist so ein Problem bekannt und habt ihr vielleicht eine Lösung?
Hi,
sind das die Pnasonic Teile von Pollin? Mit einigen (wenigen) hatte ich
auch schon Probleme. Die Rastpositionen werden nicht immer sauber
angelaufen und manchmal "verschluckt" er einige Impulse, daher dann die
falsche Decodierung.
Gruß
Fred
moosmichel001 wrote:
> Ist so ein Problem bekannt und habt ihr vielleicht eine Lösung?
Ja, nimm eine Routine, die auch entprellt:
Beitrag "Drehgeber auslesen"
Peter