Hallo zusammen,
ich habe schon lange zu meinem Problem hier gesucht, aber dieses Thema
zu den Entprell Routinen von P.Dannegger wurde noch nicht angesprochen.
Ich schaffe es nicht die Funktion get_key_long() zum Funktionieren zu
überreden.
Meine Defines:
1 | #define KEY_DDR DDRA
|
2 | #define KEY_PORT PORTA
|
3 | #define KEY_PIN PINA
|
4 | #define DIR_INC_KEY 0
|
5 | #define DIR_DEC_KEY 1
|
6 | #define SETAXIS_KEY 2
|
7 | #define GOTO_REF_KEY 3
|
8 | #define ENCODER_KEY 4
|
9 | #define ALL_KEYS (1<<DIR_INC_KEY | 1<<DIR_DEC_KEY | 1<<SETAXIS_KEY | 1<<GOTO_REF_KEY | 1<<ENCODER_KEY)
|
10 |
|
11 | #define REPEAT_MASK (1<<ENCODER_KEY | 1<<DIR_INC_KEY | 1<<DIR_DEC_KEY) // repeat: key1, key2
|
12 | #define REPEAT_START 50 // after 500ms
|
13 | #define REPEAT_NEXT 20 // every 200ms
|
Es soll get_key_long() mit dem ENCODER_KEY klappen.
Dazu muss ich diesen ja erstmal in die REPEAT_MASK eintragen, soweit
richtig?
Nun meine erste Frage: Wo stelle ich die Zeit ein nach der ein
Tastendruck als "long" gewertet wird.
In main() sieht das ganze bei mir so aus:
1 | int main()
|
2 | {
|
3 | // initzeug
|
4 | while(1) {
|
5 | if( get_key_short( 1<<ENCODER_KEY )) {
|
6 | foo();
|
7 | }
|
8 |
|
9 | if( get_key_long( 1<<ENCODER_KEY )) {
|
10 | bar();
|
11 | }
|
12 | }
|
13 | }
|
Habe ich hier irgendwo einen Denkfehler?
Ich kann den Taster solange drücken wie ich will, bar() wird nie
aufgerufen.
Danke schonmal,
Alex