Kann man 2 ISR gleichzeitig laufen lassen? Macht das Sinn?
Ich verwende bereits einen Zeitgeber in meinem Programm der auf 10ms definiert ist, mit dem ich die Tasten abfrage (kurz oder lang gedrückt):
Jetzt bräuchte ich jedoch noch einen der mir eine Variable in einer frei definierten Zeit (mittels Variable) zwischen HI/LOW toggelt.[/code]Code:ISR(TIMER0_OVF_vect) { static uint8_t ct0, ct1, rpt; uint8_t i; TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5); i = key_state ^ ~KEY_PIN; // Taste geändert? ct0 = ~(ct0 & i); // resete oder zähle CT0 ct1 = ct0 ^ (ct1 & i); // resete oder zähle CT1 i &= ct0 & ct1; // Überlauf gezählt? key_state ^= i; // dann Entprellstatus ändern key_press |= key_state & i; // 0->1: Tastendruck erkannt if((key_state & REPEAT_MASK) == 0) // Überprüfe Tastenwiederholfunktion rpt = REPEAT_START; // Starte Verzögerung if(--rpt == 0) { rpt = REPEAT_NEXT; // Wiederhole Verzögerung key_rpt |= key_state & REPEAT_MASK; } }







Zitieren

Lesezeichen