Forum: Compiler & IDEs Zwei Taster einlesen, Entprellen, Flankenerkennung


von Tim (Gast)


Lesenswert?

Hallo,

ich arbeite gerade an einem Menü für ein LCD Display und möchte dazu 
zwei (nicht entprellte) Taster zur Navigation einlesen.

Bisher mache ich das so:
1
void sw_read (void)
2
{
3
  uint8_t read;
4
  read = PINB;           //Einlesen der Taste
5
  read &= 0b00000110;    //Betrachte nur PB1 (down) und PB2 (up)
6
  
7
  if( read & (1<<PB2) )  
8
      state++;           //uint8_t, variable der State Machine
9
  
10
  if( read & (1<<PB1) )
11
      state--;
12
            
13
  _delay_ms(150);         //Zeit zum Loslassen und Tasterprellen  
14
}

Funktiniert zwar, aber leider ist die Bedienung mit durch das große 
Delay ziemlich "hakelig".
Ich steh gerade etwas auf dem Schlauch, wie ich das ganze (in Software!) 
möglicht elegant (mittels Flankenerkennung?) lösen könnte!

Ich hoffe jemand kann mir da weiterhelfen!

Viele Grüße
Tim

von Karl H. (kbuchegg)


Lesenswert?

Entprellung

Die PeDa Lösung ganz unten (Konfortroutinen in C) ist zu empfehlen.

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
Noch kein Account? Hier anmelden.