pfw:topicofbouncing
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| pfw:topicofbouncing [2025-06-18 00:25] – [Beispiele in Forth] mka | pfw:topicofbouncing [2025-06-22 02:33] (aktuell) – [Flanken-Interrupt] mka | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Prellen ====== | + | ====== Prellen |
| Im Internet findest du viele Abhandlungen darüber. Als Einstieg dienten mir die folgenden Webseiten. | Im Internet findest du viele Abhandlungen darüber. Als Einstieg dienten mir die folgenden Webseiten. | ||
| Zeile 31: | Zeile 31: | ||
| Schaltung für den Test am Logicanalyser (L) | Schaltung für den Test am Logicanalyser (L) | ||
| - | +vcc ---R---+---S_S---GND | + | +VCC ---R---+---S_S---GND |
| | | | | ||
| L | L | ||
| Zeile 60: | Zeile 60: | ||
| outP16 | outP16 | ||
| | | ||
| - | Kann man so das Prellen " | + | Kann man so das Prellen " |
| {{: | {{: | ||
| Zeile 66: | Zeile 66: | ||
| === Portpin beobachten === | === Portpin beobachten === | ||
| - | '' | + | '' |
| | | ||
| Die Beobachtung zeigte, dass //jeder// Tastendruck ein Prellen verursacht. | Die Beobachtung zeigte, dass //jeder// Tastendruck ein Prellen verursacht. | ||
| Es lag immer ein Wert ''< | Es lag immer ein Wert ''< | ||
| - | und in der Regel auch beim Loslassen. | + | und in der Regel auch beim Loslassen. Probiere selbst ... |
| - | Die Abfrage des Port-Pins im High-Level-Code ist schnell genug, | + | |
| - | um das Prellen des angeschlossenen Schalters zu erkennen. Probiere selbst... | + | |
| === Versuch, nur die Wechsel zu zeigen === | === Versuch, nur die Wechsel zu zeigen === | ||
| Zeile 85: | Zeile 83: | ||
| </ | </ | ||
| - | Man sieht, dass die Pegel nun immer schön von L nach H und zurück wechseln. | + | Man sieht, dass die Pegelwechel auch hierbei |
| - | Aber selbst jetzt immer noch nicht ganz ohne Prellen. Insbesondere bei den Wechseln von H -> L | + | wird beim Tastendruck immer noch ein zusätzlicher Wechsel erkannt. Die Routine ist also immer noch zu schnell und " |
| - | wird beim Tastendruck immer noch ein zusätzlicher Wechsel erkannt. Die Routine ist also immer noch zu schnell und " | + | Ein Tastendruckzähler H->L würde daher meist falsch, d.h. doppelt zählen. |
| - | Ein Tastendruckzähler H->L würde daher meist fals, d.h. doppelt zählen. | + | |
| Von L -> H scheint es schon ohne Prellen zu funktionieren. | Von L -> H scheint es schon ohne Prellen zu funktionieren. | ||
| + | Das menschliche Auge kann einem Pegel auch nicht ansehen, ob der schon jenseits vom Prellen liegt. Dazu brauchen wir auch den Vergleich mit der zuvor verstrichenen Prellzeit. Erst wenn wir eine Phase sehen die 2x oder 3x so lang ganz ohne Pegelwechsel ist, wie das, was wir als " | ||
| - | ===== Entprellen | + | Das gilt es in Software nachzubilden. |
| + | |||
| + | ====== Entprellen | ||
| Entprellen mittels Hardware, wie RC-Glieder oder ein RS-Flip-Flop will ich hier nicht behandeln. Darüber findest du viel im Internet. Entprellen per Software kennt einige gängigen Methoden. | Entprellen mittels Hardware, wie RC-Glieder oder ein RS-Flip-Flop will ich hier nicht behandeln. Darüber findest du viel im Internet. Entprellen per Software kennt einige gängigen Methoden. | ||
| - | ====Flanken-Interrupt==== | + | ===== Flanken-Interrupt ===== |
| + | |||
| + | Schmitt-Trigger sind in den I/O-Ports einer MCU schon integriert, zumindest beim MSP430 war es so. [[en: | ||
| - | Schmitt-Trigger sind in den I/O-Ports einer MCU schon integriert, zumindest beim MSP430 war es so. CLARIS? nutzt das ja bereits. Aber auch das braucht immer auch die anschließende Verzögerung der erneuten Pin-Abfrage, wie im vorherigen Abschnitt klar geworden ist. | + | ===== Getaktete |
| - | ==== getaktete Abfrage mit Zeitstempel am Zustand ==== | ||
| (folgt) | (folgt) | ||
| - | ==== Pegelwechsel mitzählen bis ein stabiler Zustand ereicht ist. ==== | + | ===== Pegelwechsel mitzählen bis ein stabiler Zustand ereicht ist. ===== |
| (folgt) | (folgt) | ||
| - | ==== Methode " | + | ===== Methode " |
| Beim ablesen des digitalen Inputs am Port wird der Bit-Wert in ein Register geschoben. Macht man 16x die Abfrage, gibt es entweder eine 0000 oder eine FFFF im Register, beides " | Beim ablesen des digitalen Inputs am Port wird der Bit-Wert in ein Register geschoben. Macht man 16x die Abfrage, gibt es entweder eine 0000 oder eine FFFF im Register, beides " | ||
pfw/topicofbouncing.1750199104.txt.gz · Zuletzt geändert: 2025-06-18 00:25 von mka