Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed


/************************************************************************/
/*                                                                                                                                                                                                                                                                                      */
/*                                                                                      Debouncing 8 Keys                                                                                                                               */
/*                                                                                      Sampling 4 Times                                                                                                                                */
/*                                                                                      With Repeat Function                                                                                                            */
/*                                                                                                                                                                                                                                                                                      */
/*                                                      Author: Peter Dannegger                                                                                                                                 */
/*                                                                                      danni@specs.de                                                                                                                                  */
/*                                                                                                                                                                                                                                                                                      */
/*               Erg√§nzt: gebad, beschschleunigende Tastenwiederholung                                          */
/*                                                                                                                                                                                                                                                                                      */
/************************************************************************/

#ifndef KEYS_H_
#define KEYS_H_

#define REPEAT_START    50                                                                                      // after 500ms
#define REPEAT_NEXT             20                                                                                      // every 200ms
#define REPEAT_ACC_N    6                                                                                               // wenn V_REPEAT, nach dem angegebenen Zeichen beschleunigen

volatile uint8_t key_state;                                                                             // debounced and inverted key state:
                                                                                                                                                                                        // bit = 1: key pressed
volatile uint8_t key_press;                                                                             // key press detect
volatile uint8_t key_rpt;                                                                                       // key long press and repeat
volatile uint8_t key_repeat_next;
volatile uint8_t key_counter;

volatile uint8_t task_timer0_1;
volatile uint8_t task_timer0_2;
volatile uint8_t task_timer0_3;
volatile uint8_t task_timer0_4;
volatile uint8_t task_timer0_5;

uint8_t Get_Key_Press( uint8_t key_mask );
uint8_t Get_Key_Rpt( uint8_t key_mask );
uint8_t Get_Key_Short( uint8_t key_mask );
uint8_t Get_Key_Long( uint8_t key_mask );
void Key_Speedup_rpt( uint8_t speedup );

volatile uint16_t light_count;                                                          // muss bei jeden Tastendruck auf 0 gesetzt werdwn

#endif /* KEYS_H_ */