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):
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;
}
}
Jetzt bräuchte ich jedoch noch einen der mir eine Variable in einer frei definierten Zeit (mittels Variable) zwischen HI/LOW toggelt.[/code]
Lesezeichen