Hallo liebe Gemeinde,
es handelt sich um ein Problem bei der Tasterabfrage per Interrupt. Ich möchte einen Tasterzustand auf INT1 abfragen und auf low level triggern.
Hier der grundsätzliche Programmaufbau, mal eben eingetippt:
Code:
ISR(INT1_vect) {...}
int main (void)
{
DDRD = 0xF7; // PD3 als Eingang definiert
PORTD |= (1<<PD3); // Pullups aktiviert
...
MCUCR &= ~((1<<ISC11)|(1<<ISC10); // auf low-level Zustand getriggert
GICR |= (1<<INT1); // INT1 aktiviert
sei();
while(1) {...}
...
}
Nach meinem Verständnis sollte doch, solange der low level- Zustand am Taster herrscht (und der herrscht immer, wenn der Taster nicht gedrückt ist) ständig der INterrupt ausgelöst werden und somit nur die ISR ausgeführt werden?
Der Taster ist per Tiefpass entprellt und wechselt von HIGH auf LOW und umgekehrt in 500ns.
Der eigentlich Fehler ist, dass der ext. Interrupt nie durchgeführt wird und ich nicht weiß, woran es noch liegen könnte.
Ich verwende neben der Funktion auch die beiden Timer, deshalb dachte ich erstmal, dass es an dem im Kap."Errata" aufgeführten bug liegt...
Grüße,
Nik
Lesezeichen