mit grep GIFER kam #define GIFR _SFR_IO8(0x3A)
das ich auch meinem Programm beigefügt habe.
Leider Funktionierts aber noch immer nicht..
Ich hab jetzt PD2 mit einem Wiederstand auf Masse gezogen.
Wenn ich jetzt mit +5Volt auf PD2 gehe, leuchtet die LED PC3 und schaltet auch wieder ab, sobald die 5V weg sind.
PD3 (INT1) ist unbeschaltet.
Die LED PC2 die vom Interrupt aktiviert werden sollte, bleibt leider immer noch dunkel wenn ich mit 5v an die pd2 oder pd3 gehe
hier der Aktuelle Code:
Vielen Dank für eure Antworten!Code:#include <avr/interrupt.h> #include <avr/signal.h> #include <avr/io.h> #include <avr/delay.h> /* definiert _delay_ms() ab avr-libc Version 1.2.0 */ #define GIMSK _SFR_IO8(0x3B) #define GICR GIMSK #define GIFR _SFR_IO8(0x3A) SIGNAL(SIG_INTERRUPT0) // signal handler for external interrupt { PORTC|=(1<<PC2); //LED2 anschalte } SIGNAL(SIG_INTERRUPT1) // signal handler for external interrupt { PORTC|=(1<<PC2); //LED2 anschalte } int main (void){ DDRC = 0xff; //alles als Ausgang def. PORTC =0x00; //PullUP's aus DDRD =0x00; //alles EIngang PORTD =0x00; //PullUp's aus //LED's ausschalten PORTC&=(!(1<<PC3)); PORTC&=(!(1<<PC2)); PORTC&=(!(1<<PC1)); PORTC&=(!(1<<PC0)); // INT0 on raising edge // clear pending INT0 // enable INT0 interrupt MCUCR |= (1 << ISC01) | (1 << ISC00) | (1 << ISC10)| (1 << ISC11); GIFR = (1 << INTF0); GICR |= (1 << INT0); sei(); while(1){ if (PIND & (1<<PD2) ){ PORTC|=(1<<PC3); //LED3 anschalte } else{ PORTC&=(~(1<<PC3)); } } }







Zitieren

Lesezeichen