avr tastenentprellung nach dannegger

OP #2200558
Lesenswert?
• ▲
▼
Moin!

Ich habe die Enprellung der Tasten nach P. Dannegger's Tutorial gemacht. 
Dies Funktioniert soweit auch aber es trotzdem seltsam in der 
Funktionsweise. Problem ist, daß ich für ein Display die 
Hinterdrundbeleuchtung ausschalte (timer) und diese sich bei einem 
Tastendruck wieder einschalten soll. Ich habe das in folgender Form 
versucht zu lösen:

volatile uint8_t powersave_state = 0; //1=powersave, 0=normal
.
.
.

powersave_state =1;

if ((get_key_press (1<<KEY0)) && (powersave_state ==1))
{
        powersave_time =0;
        Backlight_ON();
}


if ((get_key_press (1<<KEY0)) && (powersave_state==0))
{
       tu_etwas();
}

soweit so gut. Wird powersave_state=0; vor den if-Funktionen gesetzt 
passiert gar nix. tu_etwas() wird ignoriert.

a) warum?
b) wie kann man das umgehen?

Vielen Dank...
#2200667
Lesenswert?
• ▲
▼
Hallo,


Tino Kühn schrieb:
> if ((get_key_press (1<<KEY0)) && (powersave_state==0))
> {
>        tu_etwas();
> }

Du kannst nur einmal get_key_press (1<<KEY0) aufrufen, danach wird der 
Zustand gelöscht. D.h. die zweiter Abfrage ist (fast) immer FALSE.

Fast deshalb, wenn Du es schaffst die Taste 2 mal innerhalb von ca. 50ms 
zu drücken und los zu lassen, dann - aber nur dann.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.