Tastenentprellen von PD erweitert auf 16 Keys!

Gast #2381103
Lesenswert?
• ▲
▼
Guten Morgen zusammen,

ich habe schon öfter die Enprellroutine vom Peter benutzt nur brauchte 
ich eine Möglichkeit 16 Tasten zu entprellen.

Ich habe mir den Code etwas abgeändert und durch den Simulator gejagt. 
Es hat soweit auch alles funktioniert.

Kann sich das vieleicht mal noch jemand angucken ob ich mir nicht eine 
Böse Falle gebaut habe ?

Das wäre super.

in der Header datei steht noch das hier:

#define KEY_PIN    ( (PINA<<8) + (PINB) )

Hier der Code:
1
volatile uint16_t key_state;  // debounced and inverted key state:
2
                  // bit = 1: key pressed
3
volatile uint16_t key_press;  // key press detect
4

5
volatile uint16_t key_rpt;    // key long press and repeat
6

7
SIGNAL (SIG_OVERFLOW0)      // every 10ms
8
{
9
  
10
  static uint16_t ct0, ct1, rpt;
11
   uint16_t i;
12

13
  TCNT0 = (unsigned char)(signed short)-(XTAL / 1024 * 10e-3 + 0.5);  // preload for 10ms
14

15
  i = key_state ^ KEY_PIN;    // key changed ? Taste gedrückt = High
16
  ct0 = ~( ct0 & i );        // reset or count ct0
17
  ct1 = ct0 ^ (ct1 & i);      // reset or count ct1
18
  i &= ct0 & ct1;          // count until roll over ?
19
  key_state ^= i;          // then toggle debounced state
20
  key_press |= key_state & i;    // 0->1: key press detect
21

22
  if( (key_state & REPEAT_MASK) == 0 )  // check repeat function
23
    rpt = REPEAT_START;      // start delay
24
  if( --rpt == 0 ){
25
    rpt = REPEAT_NEXT;      // repeat delay
26
    key_rpt |= key_state & REPEAT_MASK;
27
  }
28
    
29

30
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.