Gast
#268811
Hallo, ich bin ein Anfänger und experementiere gerade mit einem AT90S8515 und versuche einen Interrupt-Handler zu starten, sobald eine der beiden Tasten, die an INT0 und INT1 angeschlossen sind, gedrückt wird. Die Tasten sind so anschlossen, wie in "AVR-Tutorial - 2. I/O-Grundlagen" gezeigt. Auch die Interrupt-Behandlung erfolgt analog zum Quellcode, der in "AVR-Tutorial - 5. Interrupts" vorgestellt ist. Die Steuer-Register sind folgendermaßen belegt: MCUCR <- 0b00001010 GIMSK <- 0b11000000 Dann wird mit SEI das Interrupt aktiviert. Interrupt0-Handler inkrementiert den Wert eines Registers und gibt ihn auf die LED-Leiste am Port A aus und kehrt mit RETI zurück. Interrupt1-Handler tut nichts und kehrt mit RETI zurück. Ansonsten befindet sich das Programm in einer Endlossschleife: loop: RJMP loop Folgendes passiert aber: ohne, dass ich die Tasten berühre, wird der LED-Register hochfrequent inkrementiert, sodass die LED des niederwertigsten Bits mit vermutlich 20 Hz flimmert. Drücke ich nun auf eine der BEIDEN Tasten, hält der Zähler an! Wie gesagt: es ist egal, ob ich auf Int0- oder Int1-Taste drücke; beide bewirken das Gleiche! Wo liegt das Problem?! Warum löst der Interrupt von alleine aus? Mux