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