Hallo,

Ich habe da ein kleines Problem und hoffe auf eure Hilfe.

Mein Schaltplan

Code:
                        Taster +5V
                             |
ATMEGA32    PIN16 (INT0) ------ 1MOhm --- (GND)
            PIN40 (PA)  ------ 150 Ohm --- Duo LED --- (GND)

Code:
#define MCU  atmega32
#define F_CPU 16000000UL

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <inttypes.h>

   // Direction Registers
   DDRA = 0xff;            // LED Block A
   DDRC = 0xff;            // LED Block C
   
   DDRD &= ~(1 << PIND7);  // IR-LED to INPUT
   // LED Ports to LOW
   PORTA = 0x00;
   PORTC = 0x00;
   PORTD = 0x00;
   
   //Enable Intrerrupts for Intrustion Detection (INT0)
   sei();                             // Interrupts zur Verfügung stellen
   GICR =(1<<INT0);         // INT0 bereitstellen
   MCUCR =(3<<ISC00);   // INT0 für steigende Flanken einstellen
   
   while(1){}
}

// Interrupt INT0
ISR(INT0_vect){
   PORTA ^= 1<<PINA0; //die LED wird umgeschaltet
   cli();   //Interrupts deaktivieren
   // Ab jetzt sollte keine Änderung mehr möglich sein.
}
Meine Annahme nach cli() sind die Interrupts disabled und die Led bleibt bei mehrmaligem Tastendruck in dem Status.
Dies passiert aber nicht. Die Led wechselt weiter fleißig zwischen an und aus. Was mache ich da falsch?