Folientastatur: Angenommen, ich lese eine Tastaturmatrix in einer 100ms Task ein. 100ms reicht ja, um kurze Tastendrücke zu erkennen. Dann braucht man ja keine Entprellung, oder? Denn das Prellen ist ja <<100ms.
PrellProll schrieb: > Dann braucht man ja keine Entprellung, oder? > Denn das Prellen ist ja <<100ms. Was ist wenn das Prellen genau am Abtastzeitpunkt passiert :) Taste häufiger ab, mach die Entprellung in SW. rgds
PrellProll schrieb: > Dann braucht man ja keine Entprellung, oder? Nein, wenn du eh' nicht schneller reagieren kannst. 6a66 schrieb: > Was ist wenn das Prellen genau am Abtastzeitpunkt passiert :) Man erkennt (und reagiert auf) die Tasterbetätigung entweder gleich oder erst 100ms später.
:
Bearbeitet durch Moderator
PrellProll schrieb: > Angenommen, ich lese eine Tastaturmatrix in einer 100ms Task ein. 100ms > reicht ja, um kurze Tastendrücke zu erkennen. Ein kurzer Tastendruck ist in dieser Größenordnung, daher reichen 100ms nicht. Schon gar nicht ohne Entprellung. Also funktionieren würde es, allerdings darf der Benutzer die Tasten nicht nur antippen, sondern muß sie immer kurz richtig drücken und kurz halten. Auf gut deutsch, es bedient sich dann eben zäh. Ich würd eher die Tastenerkennung in den Timer-Interrupt verlegen. Mit 10ms geht's, besonders wenn Deine Entprellung nicht stur auf "3 mal nacheinander high" ist, sondern mit hoch/runterzählen arbeitet. Dann den ausgewerteten Tastendruck in eine Queue schieben. Ach ja, wenn einmal "high" erkannt, dann sollte man den Entprellcounter gleich so hochsetzen, daß er für 100ms runterzählen muß, bevor wieder Eingaben angenommen werden. Sonst kriegt man zwei, wenn der Benutzer etwas zittrige Finger hat. Auch schlecht. Oder man schert sich nicht weiter drum und lebt mit einer klebrigen Bedienung.
>Ein kurzer Tastendruck ist in dieser Größenordnung, daher reichen 100ms >nicht. Schon gar nicht ohne Entprellung. Gut. Dann sag ich halt nicht 100ms, sondern wähle eine Zeit, die kleiner ist, als ein kurzer Druck, aber größer als die maximale Prellzeit. Die sollte sich ja finden lassen. Zum Beispiel 40ms. Bei 40ms Task brauche ich keine Entprellung! Behaupte ich mal. Oder kann jemand ein Grund nennen? >Man erkennt (und reagiert auf) die Tasterbetätigung entweder gleich oder >erst 100ms später. So sehe ich das auch. Das wäre ja aber kein Problem. Eine Entprellung wäre ja auch langsamer.
ich denke auch es reicht wenn er alle 100ms abtastet und bei 2 erfolgreichen Abtastungen reagiert. Prellen von Tastern liegt ja meist bei 20....40ms. Wenn er aber innerhalb vom 100ms reagieren muss, dann bleibt nichts anderes als schneller abzutasten und zu kummulieren.
PrellProll schrieb: > Bei 40ms Task brauche ich keine Entprellung! Das funktioniert so prima. Gruß, Stefan
Stephan schrieb: > ich denke auch es reicht wenn er alle 100ms abtastet und bei 2 > erfolgreichen Abtastungen reagiert. Probier das mal aus und überlegt Dir, ob Du so ein Gerät bedienen möchtest. Eine fünftel Sekunde pro Tastendruck, da schläft man bei ein.
Horst schrieb: > Stephan schrieb: >> ich denke auch es reicht wenn er alle 100ms abtastet und bei 2 >> erfolgreichen Abtastungen reagiert. > > Probier das mal aus und überlegt Dir, ob Du so ein Gerät bedienen > möchtest. > Eine fünftel Sekunde pro Tastendruck, da schläft man bei ein. dan probiere mal zB. eine Folientastatur schnell zu bedienen ! Wir reden immer noch von 5 Widerholungen/s. Es ist ja auch nicht gesagt, wo die 100ms her kommen.
Stephan schrieb: > Prellen von Tastern liegt ja meist > bei 20....40ms. Hast Du Dir das mal eben schnell ausgedacht oder bloß nachgeplappert? Einen Nachweis für diese Aussage kannst Du sicherlich nicht liefern. PrellProll schrieb: > Bei 40ms Task brauche ich keine Entprellung! > Behaupte ich mal. Oder kann jemand ein Grund nennen? Dann lasse die Entprellung doch einfach weg. Wunder Dich aber nicht, wenn ein Tastendruck mehrfach bewertet wird. In hochwertiger Feinelektronik gehört eine Entprellung einfach dazu!
Stephan schrieb: > Wir reden immer noch von 5 Widerholungen/s. Das Problem ist nicht die Wiederholrate, sondern erstens die Verzögerung und zweitens, daß man die Tasten nicht nur antippen kann. "Kann man schon machen - ist dann halt k*cke"(tm).
Was ist das Problem die Tasten mit einer Zustandsmaschine zu entprellen ? Ein paar Zeilen Code ? Machs doch einfach. Kostet ja nichts.
m.n. schrieb: > Dann lasse die Entprellung doch einfach weg. Wunder Dich aber nicht, > wenn ein Tastendruck mehrfach bewertet wird. Das ist aber ein anderes Problem. > In hochwertiger Feinelektronik gehört eine Entprellung einfach dazu! Mitnichten. Man muss nur wissen oder einschätzen können, ob man eine braucht.
m.n. schrieb: > Dann lasse die Entprellung doch einfach weg. Wunder Dich aber nicht, > wenn ein Tastendruck mehrfach bewertet wird. Ja, so hat wohl jeder mal angefangen und Lehrgeld bezahlt. 2 Abtastungen auf Gleichheit zu testen, erhöht schonmal die Zuverlässigkeit deutlich. Und ab Vergleich von 4 Abtastungen habe ich keine Mehrfachdrücke mehr gehabt. Da der Programmieraufwand dafür lächerlich gering ist, nutze ich nur noch den 4-fach Vergleich. Man muß ja die Lib dafür nur ein einziges Mal erstellen.
Peter D. schrieb: > 2 Abtastungen auf Gleichheit zu testen, erhöht schonmal die > Zuverlässigkeit deutlich. Und ab Vergleich von 4 Abtastungen habe ich > keine Mehrfachdrücke mehr gehabt. Ich nehm nen rauf/runter-Zähler mit Hysterese. Das ist bei geeigneter Dimensionierung genauso zuverlässig, aber man hat nicht die komplette Prellzeit als worst-case-Start für den Gleichheitstest abzuwarten. Tatsächlich spricht das dermaßen flüssig an, daß man bei erkanntem Tastendruck den Zähler auf ~100ms zum Runterzählen raufknallen muß, weil bei zittrigen Händen und schneller Sensorik sonst zwei Tastendrücke kommen. Also real, kein Prellfehler. Das Problem fällt allerdings naturgemäß im Sommer nicht so auf. ;-)
Nop schrieb: > weil > bei zittrigen Händen und schneller Sensorik sonst zwei Tastendrücke > kommen. Ja, es können nicht nur die Tasten prellen, sondern man muß auch die motorischen Fähigkeiten der unterschiedlichen Menschen berücksichtigen. Eine sinnvolle Entprellroutine entprellt eben auch das. Auch sollte die Entprellroutine Störungen filtern, z.B. wenn sich jemand elektrostatisch auflädt und sich dann dem Gerät nähert.
Peter D. schrieb: > Auch sollte die Entprellroutine Störungen filtern, z.B. wenn sich jemand > elektrostatisch auflädt und sich dann dem Gerät nähert. Wie äußern sich solche Störungen denn, bzw. was ist das Unterscheidungsmerkmal zu realen Tastendrücken? Also ich gehe mal davon aus, daß HW-seitig die Matrixtastatur "wie üblich" angeschlossen ist. Eingänge werden SW-seitig mit Pullup konfiguriert, Ausgänge auf GND gesetzt, und bei Tastendruck zieht dann ein Ausgang einen Eingang auf low-Pegel. Dann vertauscht man Zeilen und Spalten mit Ein- und Ausgängen im nächsten Durchlauf. Störungen heißen dann, daß man an einem Eingang low sieht, obwohl man high sehen müßte, weil keine Taste gedrückt wurde.
Nop schrieb: > Störungen heißen dann, daß man an einem Eingang low sieht, obwohl man > high sehen müßte, weil keine Taste gedrückt wurde. So ist es. Aber wenn das auftritt, dann nur bei einer Abtastung, d.h. der Vergleich mehrerer Abtastungen filtert es zuverlässig heraus. Und deshalb sollte man zum Einlesen auch keinen externen Interrupt verwenden, weil der quasi auf die Störung lauert.
Tasten entprellen, ein wahres Hexenwerk! Externe Interrupts, ein absolutes NoGo! Die werden dann ja immer 1Mio. mal völlig UNKONTROLLIERT ausgelöst. Spannungsspitzen o. sonstige externe Störgrößen MÜSSEN mit Voodoo-SW in den Subraum abgeleitet werden. Darf aber nur von GESCHULTEN FACH-Personal geschrieben werden. Sonst entstehen Zombie-Positronen! Nicht umsonst, wurden schon tausende dicke Wälzer, über dieses exorbitant komplizierte Thema geschrieben! Ääääää...., ich geh wieder ins Bett....
PrellProll, Du sagst nicht, was Du hast, willst, kannst, brauchst. Wenn mit dem Taster z.B. ein Rollo verfahren wird, dann ist es völlig ok, alle 100ms abzufragen und nicht zu entprellen Wenn Menüeingaben notwendig sind ist es eine Frechheit dem Benutzer gegenüber.
Für die Eingabe eines Zugangscodes. Spielt aber keine Rolle. Meine Frage war: Bei 1ms Abtastung brauche ich eine Entprellung. Reaktion: perfekt. Bei 1s Abtastung brauche ich keine Entprellung. Reaktion: zu langsam. Gibt es zwischendrin einen Bereich, wo ich keine Entprellung mehr brauche, aber die Reaktion ausreichen ist? Die Antwort (so lese ich das hier): Man braucht für das eigentliche Tastenprellen keine Entprellung bei ca. 20-100ms Aber die Entprellung wirkt auch als EMV Filter. Dort macht sie wieder Sinn.
PrellProll schrieb: > Für die Eingabe eines Zugangscodes. Spielt aber keine Rolle. Doch, denn wenn du da die Tasten im 100ms Zyklus abfragst, dann musst du ja im dümmsten Fall die Tasten auch im 100ms Takt drücken. Sonst bekommst du bei einer Eingabe von 1234 sowas eingelesen: 111222223344444 Und du wirst kaum sinnvoll den Code eingeben können. > Gibt es zwischendrin einen Bereich, wo ich keine Entprellung mehr > brauche, aber die Reaktion ausreichen ist? Ja, das musst du jetzt einfach so hinbasteln/hinmurksen. Und jeder Bediener macht sich dann bei der wiederholten Eingabe des Codes seine Gedanken zum Können des Programmierers. Und das sind keine schönen Gedanken...
:
Bearbeitet durch Moderator
>bekommst du bei einer Eingabe von 1234 sowas eingelesen: 111222223344444
Na also Flankenerkennung mach ich schon.
PrellProll schrieb: > Na also Flankenerkennung mach ich schon. Über wie viele Abtastungen? Eine Flankenerkennung über eine einzigen Zyklus (0-1) reicht theoretisch nur dann aus, wenn du irgendwelche EMV-Störungen ausschließen kannst. Soll es robuster sein, dann empfehlen sich die von PeDa angesprochenen 4 Abtastungen, denn dann muss das Signal schon recht stabil sein, um eine Flanke zu erkennen: 0-1-1-1. Ein einzelner ESD-Spike mit 0-1-0-0 würde dann ignoriert. Ich würde also zugunsten der Reaktionszeit und der 4-fach Abtastung und angesichts einer möglichen Prellerei auf ein 10ms Intervall gehen...
:
Bearbeitet durch Moderator
Nimmt man die Zeit zusammen, die Du für das Schreiben der Beiträge aufgewandt hast, wäre die Entprellung schon implementiert. Geht es um einmalige Aktionen, mit großem Zeitabstand ist die Entprellung evtl. nicht notwendig. Aber bei Benutzereingaben, die sich auch wiederholen können, finde ich es falsch den Benutzer in ein "Eingaberaster" zu drücken. Meiner Meinung nach tut die Entprellung nicht weh, die Performanceeinbusen sind vernachlässigbar und schließt eine mögliche Fehlerquelle aus.
>die Du für das Schreiben der Beiträge aufgewandt hast, wäre die Entprellung >schon implementiert Ich habe in jedem Projekt eine Entprellung drin und auch schon mehrere Algorithmen verwendet und gesehen. Und auch beim Kunden schonmal Fehler gesucht, weil sie einen Zählen von 0 bis 10 zählen ließen, beim Loslassen dann aber sofort auf 0 zurückgesprungen sind. Ich habe die Frage gestellt, weil ich den Zusammenhang genauer verstehen will. Und bei geschickt gewählter Abtastzeit scheinen es nur noch Störungen zu sein, die nachteilig sind. >Meiner Meinung nach tut die Entprellung nicht weh, die >Performanceeinbusen sind vernachlässigbar und schließt eine mögliche >Fehlerquelle aus. Genau wie der 10nF und 1nF keramische Kondensator, der parallel zum 100nF geschaltet wird, weil der ja "die höherefrequenten Anteile" besser filtert. Es sich aber zeigt, dass solche Kombinationen Resonanzfrequenzen aufgrund der Leiterbahnführung haben. Von den Kosten bei Stückzahlen >1000k ganz zu schweigen. Oder die Sicherung, die Hobbybastler immer noch vor ihre "automotive" Spannungsregler schalten. Wegen den gefählichen ISO Impulse. Wichtig ist, dass man es nicht einfacht macht, sondern versteht.
PrellProll schrieb: > Dann braucht man ja keine Entprellung Richtig. Schon bei einem einzelnen Taster reicht ein Sampling (abfragen) welches weniger schnell als die Prellzeit ist, um den Effekt des Prellens kompletzt zu unterdrücken. Denn es ist egal, ob man im Abfragezeitpunkt den noch offenen oder schon geschlossenen oder Taster inmitten des Prellvorgangs erwischt. 100ms finde ich bei Tasten aber langsam, die angesprochenen 40ms besser und Prellen erreicht selten 10ms.
Schnelle Tastendrücke erfolgen etwa im 100ms-Raster d.h. im Mittel 50ms gedrückt, 50ms nicht gedrückt. --> für eine gute Bedienung musst du mindestens alle 50ms abfragen oder Flanken erkennen Wenn die gleiche Zahl nacheinander erlaubt ist (also z.B. 1,2,2,2), --> dann musst für eine gute Bedienung entprellen. Von der Größenordnung her reicht es, alle 10ms zu samplen und 3 gleiche Pegel nacheinander als gültig anzusehen. Also wenn der Ausgang des Filters jetzt null ist, und es kommt 0,1,0,1,1,1#1,1,1,1 rein, dann ist das Ausgangssignal bis zum # noch 0 und danach 1. Das kann man jetzt je nach Resource ein wenig optimieren oder streiten, z.B. nur alle 20ms und nur 2 gleiche Zustände, der Aufwand ändert sich damit aber kaum noch. Alternativ kannst du auch die maximale Prellzeit und minimale Kontaktzeit abschätzen und die Abtastzeit darauf optimieren: Beispiel: max. 11ms prellen, mindestens 21ms Kontakt --> Abtastinterval > 11ms und < 21ms.
Endprellen, Störeinstrahlungen, Reaktionszeit, Tastenwiederholung etc, gehört alles sehr eng zusammen, sollten aber getrennt betrachtet werden. Eine perfekt funktionierende "Eierlegendewollmilchsau" kann es nicht geben. Das reine (Software) Endprellen, bei der Polling-Methode, ergibt sich von selbst (Prellzeiten beachten). Um Störungen abzufangen reicht das natürlich nicht. zB. wie Peda das vorschlägt, mit mehrfach Verifizierung (kann noch innerhalb der Prellzeit erfolgen. (Achtung, anfällig für äußere Störeinflüsse!)), kann man sehr sicher, sehr nah an die Prellzeit der Taster gehen, ohne Störungen befürchten zu müssen. Es spricht auch nichts dagegen sofort zu reagieren (zB. Stoppuhr) und dieses bei Erkennung eines Fehlers wieder zu Verwerfen... Bei länger gedrückter Taste, für zB. Automatischer-Tastenwiederholung, spielt das Endprellen nach dem betätigen keine Rolle mehr. Ein immer-noch-gedrückt kann man so schnell abfragen/reagieren wie einem beliebt, bzw. sinnvoll ist. Teo D. schrieb: > Nicht umsonst, wurden schon tausende dicke Wälzer, über dieses > exorbitant komplizierte Thema geschrieben! OK, können täte man schon, ist ja nicht Trivial aber KEIN Hexenwerk. PS: Sorry für das Kauderwelsch, 40° Fieber. Ich sollt wirklich im Bett bleiben.....
Teo D. schrieb: > Endprellen, Störeinstrahlungen, Reaktionszeit, Tastenwiederholung etc, > gehört alles sehr eng zusammen, sollten aber getrennt betrachtet werden. Full ack! > PS: Sorry für das Kauderwelsch, 40° Fieber. Ich sollt wirklich im Bett > bleiben..... Gute Besserung! Viele Grüße, Stefan
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.