Hallo Klebwax
Danke für deine Antwort ich habe jetzt mal wie folgt umgebaut.
Code:
int detect = 0;
int main(){
// Direction Registers
DDRA = 0xff; // LED Block A
DDRC = 0xff; // LED Block C
DDRD &= ~(1 << PIND7); // IR-LED to INPUT
// Ports to LOW
PORTA = 0x00;
PORTC = 0x00;
PORTD = 0x00;
// :-) Gang einlegen
PORTD |= (1<<PD2); // Pullup auf INT0 (PD2) an
GICR =(1<<INT0); // INT0 bereitstellen
MCUCR =(3<<ISC00); // INT0 für steigende Flanke einstellen
// Los fahren
sei(); // Interrupts aktivieren
while(1){
if (detect == 1){
cli(); // Interrupts deaktivieren (halten)
detect=0;
}
}
}
// Interrupt INT0
ISR(INT0_vect){
PORTA ^= 1<<PINA0; //die LED wird umgeschaltet
detect = 1;
}
Der INT0 wird jetzt gegen GND getastet.
Zum Test ist das Ganze noch so mit der LED an PINA.
Damit ich sehen kann ob der Interrupt wirklich deaktiviert wird.
Ziel ist es über den Interrupt das öffnen des Gerätes zu erkennen.
Die LED Widerstände werde ich noch ändern.
Lesezeichen