Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/21/08 21:41
Modified:
  08/21/08 21:43

Read: times


 
#157649 - One way to debounce
Responding to: ???'s previous message
You might do:

#define DEBOUNCE_COUNT 10
unsigned get_key(void) {
    static unsigned char old_key = KEY_NONE;
    unsigned char key;
    unsigned char debounce = 0xff;

    while (!timeout) {
        key = kdb_poll();
        if (old_key != key) {
            old_key = key;
            debounce = 0;
        } else if (key != KEY_NONE && key != KEY_INVALID && debounce != 0xff && debounce < DEBOUNCE_COUNT) {
            return key;
        }
    }
    return KEY_NONE;
}

Then you use your current code - minus all the while loops for debounce etc as implementation for kbd_poll().

Skip timeout handling if you are ok with waiting forever.
Skip KEY_INVALID logic if it doesn't matter if multiple keys are pressed.

Quite easy to extend with auto-repeat if you fancy that.

List of 15 messages in thread
TopicAuthorDate
problem in 8x8 keypad            01/01/70 00:00      
   I see ...            01/01/70 00:00      
      this code with correction            01/01/70 00:00      
         Try the Insert Code button.            01/01/70 00:00      
            code with comment            01/01/70 00:00      
               Lots of things to look into            01/01/70 00:00      
                  reply            01/01/70 00:00      
                     One way to debounce            01/01/70 00:00      
               One Suggestion            01/01/70 00:00      
                  the easy way to do keypads            01/01/70 00:00      
   indent, indent, indent            01/01/70 00:00      
   problem in keypad            01/01/70 00:00      
      Where is the code?            01/01/70 00:00      
         code of 8x8 keypad            01/01/70 00:00      
            Simplify and think about debounce            01/01/70 00:00      

Back to Subject List