Wie oben im Betreff bereits geschrieben, habe ich ein Problem mit meiner Tastenentprellung bei dem PIC 16F876. Ich habe eine kleine Funktion in C geschrieben, die meine Taste alle 60Micros. abfragt und dies 60x wiederholt (60Micros*60 = 3,6ms, meine Entprellzeit). Dabei wird ein Zähler hochgezählt, wenn die Taste während des Tests noch gedrückt ist. Liegt der Zähler nach dem Test über 50, so ist die Taste definitiv gedrückt. Nun zu meinem Problem. Nach dem programmieren des PICS läuft die Funktion sehr unzuverlässig. Mal geht sie und mal nicht. Das führt soweit, dass der Watchdog leer läuft und den PIC neustartet. Eigentlich wollte ich die Funktion ja nur 10x ausführen oder so in den 4ms, aber das geht nicht, da der Vorteiler des Timers bereits vom Watchdog belegt ist. Einen anderen Timer als den Timer0 kann ich nicht nehmen, da die leider von anderen Funktionen des Programms belegt sind. Also woran kann es noch liegen. MfG Heine
Jan Heynlein wrote: > Wie oben im Betreff bereits geschrieben, habe ich ein Problem mit meiner > Tastenentprellung bei dem PIC 16F876. Dass es ein PIC ist, hättest Du im Betreff ruhig auch erwähnen können... > Ich habe eine kleine Funktion in C geschrieben, die meine Taste alle > 60Micros. abfragt und dies 60x wiederholt (60Micros*60 = 3,6ms, meine > Entprellzeit). Dabei wird ein Zähler hochgezählt, wenn die Taste während > des Tests noch gedrückt ist. Liegt der Zähler nach dem Test über 50, so > ist die Taste definitiv gedrückt. Alle 60 µs? Und dann 60 mal? Unsinnig. Alle 10-20 ms abfragen reicht völlig. Und dann auch nur einmal. Funktioniert definitiv (und zuverlässig). Kein Mensch kann einen Taster kürzer als ein paar zig ms drücken.
> Und dann auch nur einmal.
Nunja, ich ziehe inzwischen viermalige Abfrage vor
(PeDa-Bulletproof-Entprellung)...
;-)
...
Hannes Lux wrote: >> Und dann auch nur einmal. > > Nunja, ich ziehe inzwischen viermalige Abfrage vor > (PeDa-Bulletproof-Entprellung)... > > ;-) > > ... OK, aber nicht sechzig mal...;-) Bei mir hat bisher allerdings ausnahmslos die Methode mit "ca. alle 20 ms vorbeischauen" tadellos funktioniert.
Johannes M. wrote: > OK, aber nicht sechzig mal...;-) Stimmt, und auch nicht in diesem kurzen Zeitraster. > Bei mir hat bisher allerdings > ausnahmslos die Methode mit "ca. alle 20 ms vorbeischauen" tadellos > funktioniert. Bei mir auch. So hatte ich es gemacht, bevor ich die Bulletproof-Entprellung gefunden und analysiert hatte. Dabei gab es keinerlei Probleme. Trotzdem hat mich PeDas Algorithmus überzeugt, besonders praktisch finde ich das Bereitstellen des entprellten Tastenzustands (key_state) und der Flankenflags (key_press) für erneuten Tastendruck für bis zu 8 Tasten, die in einem Rutsch abgefragt und entprellt werden. Durch geringfügige Erweiterungen erhält man auch die "Loslass-Flags", man kann auch mit geringem Aufwand eine (maskierbare) Repeat-Funktion einbinden. Und dabei bleibt der Code verdammt schlank... Also ich möchte diesen Algorithmus (in seinen Varianten) nicht mehr missen... ...
Hi Jan, aus reinem Interesse: was für einen C Compiler verwendest du denn? Ich will meine PICs in Zukunft auch mit C programmieren. viel Glück bei deinem Projekt noch. Ciao Miro
>Bei mir auch. So hatte ich es gemacht, bevor ich die >Bulletproof-Entprellung gefunden und analysiert hatte. Dabei gab es >keinerlei Probleme. Dem kann ich mich nur anschließen. Ich bin auch einer der wenigen hier die PIC's verwenden. Der Code von Peter Danegger läuft da (natürlich) auch und ist absolut spitze.
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.