Zitat Zitat von Liquidator Beitrag anzeigen
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
So, wie wärs wenn du einfach mal den ganzen anderen Rest von deinem Programm auskommentierst, so dass da nur noch genau das da steht. In der ISR toggelst du dann einfach einen PIN und hängst diesen ans Oszi.
Und wenn dieses ganz einfach Programm dann mal läuft, sehen wir weiter.

mfg