Hallo, ich möchte per INT0 eine Tasterentprellung machen. Beim Testen (Taster wird ganz schnell mehrfach betätigt) wird meine ISR 2 mal ausgeführt! Warum? Mit cli(); sperre ich doch weitere Interrupts und auch wenn ich das Flag im EIFR lösche passiert das-
1 | ISR (INT0_vect) // ISR ext. Interrupt Request 0 |
2 | {
|
3 | cli(); // Int. sperren |
4 | EIFR = (1<<INTF0); // Int.Flag löschen |
5 | _delay_ms(300); |
6 | asm("NOP"); |
7 | sei(); // Int aktivieren |
8 | }
|