Gast
#12838
Hi,
ich habe an den µC einen Taster mit 10k Pullup angeschlossen.
In der main aktiviere ich den Interrupt
outp((1<<INT0), GIMSK); //int0 einschalten
outp((1<<ISC01), MCUCR); //falling edges
sei();
Wenn der Interrupt aufgerufen wird schalte ich den Interrupt aus und
warte erst 120ms @ 4MHz. Dann wird eine Funktion aufgerufen, die ~8s
dauert. Danach darf wieder auf Tastendruck reagiert werden, also
aktiviere ich den Interrupt wieder.
Das Problem ist nun, dass beim aktivieren des Interrupts der Interrupt
gleich wieder ausgelöst wird. Ich erhalte also Pro tastendruck meistens
2 (nie mehr) aufrufe der funktion doSTH().
Hat jemand ne Ahnung wieso?
SIGNAL(SIG_INTERRUPT0)
{
outp(0x00, GIMSK); //Int0 ausschalten
u08 i, j, k; //warte 120ms zum entprellen
for(k = 0; k < 7; k++){
for(j = 0; j < 255; j++){
for(i = 0; i < 255; i++){
asm volatile("nop");
}
}
}
sei(); //interrupts wieder anschalten (werden für doSTH()
benötigt)
doSTH(); //Funktion die ca 8s dauert
outp((1<<INT0), GIMSK); //Int0 wieder anschalten
}
cu
MB