askazo
13.09.2007, 14:01
Hi,
ich schreibe gerade an einem Programm für den Mega8, bei dem eine Interruptroutine per externem Interrupt ausgelöst wird. In der ISR wird der Interrupt dann deaktiviert, da er nur genau einmal ausgelöst werden soll, egal was das Signal am Eingang macht - bis zum betätigen eines Tasters, der dann den Interrupt wieder freigibt.
Das Problem ist, dass trotz Deaktivierung des Interrupts und löschen des GIFR-Registers vor der Reaktivierung des Interrupts ebendieser direkt nach der Reaktivierung ausgelöst wird. Der AVR merkt sich also einen Interrupt, der während der Deaktivierungsphase aufgetreten ist.
Wie kann ich diesen Interrupt löschen?
askazo
ich schreibe gerade an einem Programm für den Mega8, bei dem eine Interruptroutine per externem Interrupt ausgelöst wird. In der ISR wird der Interrupt dann deaktiviert, da er nur genau einmal ausgelöst werden soll, egal was das Signal am Eingang macht - bis zum betätigen eines Tasters, der dann den Interrupt wieder freigibt.
Das Problem ist, dass trotz Deaktivierung des Interrupts und löschen des GIFR-Registers vor der Reaktivierung des Interrupts ebendieser direkt nach der Reaktivierung ausgelöst wird. Der AVR merkt sich also einen Interrupt, der während der Deaktivierungsphase aufgetreten ist.
Wie kann ich diesen Interrupt löschen?
askazo