Im Simulator funktioniert es so:
Einige kleine Änderungen, Taktfrequenz noch richtig eintragen.Code:#include <avr/interrupt.h> #define F_CPU 10000000UL #include <util/delay.h> uint8_t i; uint8_t counter; //Interruptroutine, die ausgelöst werden soll - aber nicht wird ISR(INT0_vect){ // for( i=0; i<5; i++) { PORTC |= (1<<0); //wait 16*65536 counter = 0; while(counter < 16) { counter++; _delay_loop_2(65535); } PORTC &= ~(1<<0); //wait 16*65536 counter = 0; while(counter < 16) { counter++; _delay_loop_2(65535); } } } int main(void) { /*###Initialisierungsphase###*/ //Pins bzw. Ports als Ein-/Ausgänge konfigurieren DDRC |= 0x11; //10001000 -> PORTC.4 ist blinkende LED im Hauptprogramm, PORTC.0 ist Anzeige des Interrupts DDRD |= 0x00; //00000000 -> PORTD.2 ist Interrupt0 (Der ausgelöst werden soll) //Variablen //Interrupts initialisieren - ist der Kram hier richtig? MCUCR = ~(1<<ISC01); MCUCR = (1<<ISC00); GICR = (1<<INT0); sei(); for(;;){ PORTC |= (1<<4); //wait 16*65536 counter = 0; while(counter < 16) { counter++; _delay_loop_2(65535); } PORTC &= ~(1<<4); //wait 16*65536 counter = 0; while(counter < 16) { counter++; _delay_loop_2(65535); } } }
Hubert







Zitieren

Lesezeichen