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.
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.
Eigentlich kein problem zwischen Encoder und AVR ein pos flankengesteuertes nicht nachtriggerbares mono flop sowas ist ein pfenning artikel Phagsae
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é
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
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.
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
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.
Drehgeber, kein Problem: http://www.mikrocontroller.net/forum/read-4-37992.html#new Tastenprellen, kein Problem: http://www.mikrocontroller.net/forum/read-4-20549.html#new Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.