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?
Lesezeichen