Tastenprellen

Gast #3224
Lesenswert?

Hi,

habe dasselbe Problem, ist aber eigentlich ganz einfach zu lösen mit 
einer
kurzen Warteschleife von z.B. 50 oder 100ms nach dem Taster- bzw. 
Port-Abfragen bevor es im Programm weitergeht.

Bei mir ists a bissl komplizierter, scheint mir, da ich einen 
Dreh-Encoder verwende um einen Zählerstand zu erhöhen oder zu 
erniedrigen.
Wenn ich zu schnell drehe, dann werden nicht alle Impulse registriert.
Wenn ich den Drehknopf nicht sauber einraste, dann hört er natürlich 
nicht mehr auf zu zählen, und manchmal springt mein Zählerstand einfach 
irgendwohin.
Bestimmt Softwaremäßig irgendwie optimierbar...

Hat mit Dreh-Encodern und sauberer Impulsverarbeitung irgendwer 
Erfahrung?

Grüße,
Andi.
Gast #3229
Lesenswert?

Die schaltung von Rene ist ein Tiefpass und sollte wohl für die üblichen 
prellprobleme ausreichen

Für das Endcoder Problem jedoch nicht
Hier ist ja auch ein Problem das bei falscher Rastung ein Dauerpegel HI 
oder Low zum Dauerzählen führt

Da hilft dann zuverlässig ein n i c h t ! nachtriggerbares Monoflop.
Fällt mir zb ein 74XX221 oder 74xx121
Gast #3230
Lesenswert?

Hi,
hab mein Problem ganz gut und einfach lösen können.
Bei jedem Rastvorgang von A und B werden ja die Impulse um
ca. sag ich jetzt mal 180 Grad versetzt getätigt.
(siehe Bild aus Conrad Datenblatt; Habe ALPS-DrehEncounter v. Schuricht)
Z.B. in dem Moment, wenn A auf Low geht und somit PINB,3 gecleard wird, 
springe ich in die ECP-Schleife und dann, erst wenn B (PINB,4) gecleard 
wird, dann springts weiter zu meinem gewünschten Effekt (plus).
Damit löse ich diesen wirklich erst aus, wenn ich eine Komplette Rastung 
des Dreh-Encoders getätigt habe. Keine Probleme mehr mit unerwünschten 
Mehrfach-Impuls-Verarbeitungen bei ungünstiger Drehung des 
Drehencounters! Funzt einwandfrei.


Eingabecheck:
sbis   PINB,3                       ;Encoder-PinA
rcall   ECP
sbis   PINB,4                       ;Encoder-PinB
rcall   ECM
sbis   PINB,2                       ;Encoder-PinD
rjmp   start
rjmp   Eingabecheck

ECP:
rcall  wait2ms
sbis   PINB,3
rjmp  ECP
sbis  PINB,4
rjmp  plus
rjmp  Eingabecheck

ECM:
rcall  wait2ms
sbis   PINB,4
rjmp  ECM
sbis  PINB,3
rjmp  minus
rjmp  Eingabecheck



Habe aber jetzt noch ein kleines anderes Problem!
Immer wenn ich genau diesen Code zu 32. mal ausführe,
d.h. wenn ich den drehencounter zum 32. mal gedreht habe,
dann wird scheinbar ein Reset ausgelöst!???
So als wäre da irgendein überlauf der bei 32 halt resetet.
??
(Wird übrigens ein Countdown-Timer mit über den Encoder einstellbarer 
und auf LCD ausgegebener Zeit in Sekunden, Minuten und Stunden),

Weiß da wer Rat?

Grüße,
Andi.
Angehängte Dateien:
Gast #3232
Lesenswert?

Aus welchen Grunde sollte das mit einem rc- TP nicht für den encoder
reichen?? Dieser verhindert das prellen (wenn richtig diminsioniert
ausreichend)

Tau=R*C

jetz pomts noch drauf an wie schnell das ding sein muss...
sonst gibts noch eine möglichkeit...

und das prob. mit dem dauerpegel... nicht auf den log zustand sondern
auf die flanken (steigend, fallend oder beides)reagieren.
(kann man entweder selbst schreiben, bzw. stellen manche herstellen von
µC eingene interrupts für flanken zu verfügung (z.B PIC)
übrigens sind in manchen (weis nicht ob alle) pics hardwaremeßig
komperatoren oder schmitt-trigger drin.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren