Tach, ich habe bisher immer die Entprellroutine von Peter benutzt und war damit sehr zufrieden. Leider hab ich sie nie so hunderprozentig verstanden, sondern einfach nur an meine Bedürfnisse angepasst. Nun brauch ich eine Tastenentsprellung ohne Interrupt, also nicht so wie bei Peter. Zur Zeit benutze ich dafür eine Warteschleife, die nach jedem Tastendruck ausgeführt wird. Doch irgendwie ist das nicht das wahre. Hat jemand ein paar Tips für die Vorgehensweise zu einer vernünftigen Tastenentprellung?
Ja, man geht alle paar milisekunden schauen, ob sich was geaendert hat. Und dann wartet man bis der zustand ein paar mal gleich ist. Z
@Guido >ich habe bisher immer die Entprellroutine von Peter benutzt und war >damit sehr zufrieden. Leider hab ich sie nie so hunderprozentig >verstanden, sondern einfach nur an meine Bedürfnisse angepasst. Nicht optimal, aber es läuft. Warum wills du nun was anderes? >Nun brauch ich eine Tastenentsprellung ohne Interrupt, also nicht so wie >bei Peter. Warum? >Zur Zeit benutze ich dafür eine Warteschleife, die nach jedem >Tastendruck ausgeführt wird. Doch irgendwie ist das nicht das wahre. >Hat jemand ein paar Tips für die Vorgehensweise zu einer vernünftigen >Tastenentprellung? Es läuft am Ende immer auf en zyklische Abfrage hinaus. Ob du das nun mit nem 10ms Interrupt oder ne Warteschleife machst ist erstmal egal, nur dass deine Warteschelife sinnlos Rechenzeit verheizt. MfG Falk
>Nicht optimal, aber es läuft. Warum wills du nun was anderes? Weil ich keinen Timer_Interrupt mehr zur Verfügung habe. >Es läuft am Ende immer auf en zyklische Abfrage hinaus. Ob du das nun >mit nem 10ms Interrupt oder ne Warteschleife machst ist erstmal egal, >nur dass deine Warteschelife sinnlos Rechenzeit verheizt. Das ist mein Problem. Ich kann die Taster nicht direkt abfragen, z.B. auf loslassen oder ähnliches. Die Taster lese ich über eine Matrix mit dem AD-Wandler ein. Ein bestimmter Wert entspricht einem Tasterdruck. Um zu überprüfen ob sich was geändert hat, muss erst der AD-Wandler noch mal ne Runde drehen.....
@Guido >>Nicht optimal, aber es läuft. Warum wills du nun was anderes? >Weil ich keinen Timer_Interrupt mehr zur Verfügung habe. Wer sagt denn, dass du einen Timer exclusiv für die Tastenabfrage brauchst, das kannst du in fast jeden beliebigen Timerinterrupt (der eigentlich was anderes macht) machen. Es sei denn du hast wirklich alle mit PWM und Zählern verbraten. Dann wirds kniffelig (aber auch da gibts gute und elegante Lösungen). >Das ist mein Problem. Ich kann die Taster nicht direkt abfragen, z.B. >auf loslassen oder ähnliches. Die Taster lese ich über eine Matrix mit >dem AD-Wandler ein. Ein bestimmter Wert entspricht einem Tasterdruck. Um >zu überprüfen ob sich was geändert hat, muss erst der AD-Wandler noch >mal ne Runde drehen..... Und? In einen Interrupt wird die Messung angestossen, im nächsten ausgewertet. Man muss parallel denken! MfG Falk
Guido wrote: > Das ist mein Problem. Ich kann die Taster nicht direkt abfragen, z.B. > auf loslassen oder ähnliches. Die Taster lese ich über eine Matrix mit > dem AD-Wandler ein. Ein bestimmter Wert entspricht einem Tasterdruck. Um > zu überprüfen ob sich was geändert hat, muss erst der AD-Wandler noch > mal ne Runde drehen..... Dann nimm doch einfach die Wandlungsrate des ADC als Entprellzeit. Und wenn das zu schnell ist (Fehlerkennungen), dann nimm nur jede 100-ste Wandlung oder so. 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.