Forum: Mikrocontroller und Digitale Elektronik Tastenprellen


von Martin (Gast)


Lesenswert?

Hallo,

ich hab an einem at90s1200 Taster angeschlossen,der µC ist als Zähler
programmiert.Durch das prellen der Taster stimmt der angezeigte 
Zählerstand nicht.
Wie kann ich das Problem Softwaremäßig lösen?

Danke im Voraus.

von AndiS. (Gast)


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.

von Phagsae (Gast)


Lesenswert?

Eigentlich kein problem
zwischen Encoder und AVR ein pos flankengesteuertes nicht 
nachtriggerbares mono flop
sowas ist ein pfenning artikel

Phagsae

von Axel(ojojo) (Gast)


Lesenswert?

wie könnte so ein Bauteil heissen ?

jo
Axel

von Rene (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Martin

Ich hätte da ´ne Hardwaremässige Lösung mit 2 Teilen (R,C) anzubieten. 
Also bei mir läuft es mit 8535 einwandwrei....

Schaltung auf Bild im Anhang.

Ciao René

von Andreas (Gast)


Lesenswert?

Hi Andi,

schau dir mal das hier an:
http://dse-faq.e-online.de/dse-faq.htm#F.29.

MfG
Andreas

von Phagsae (Gast)


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

von Andi S. (Gast)


Angehängte Dateien:

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.

von Andi S. (Gast)


Lesenswert?

Habs schon!



Eingabecheck:
sbis PINB,3 ;Encoder-PinA
rcall ECP          <-----Hier gehört ein rjmp hin!
sbis PINB,4 ;Encoder-PinB
rcall ECM          <-------Hier auch!
sbis PINB,2 ;Encoder-PinD
rjmp start
rjmp Eingabecheck





Andi

von Chris (Gast)


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.

von peter dannegger (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.