Im Simulator funktioniert es so:
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);
}
}
}
Einige kleine Änderungen, Taktfrequenz noch richtig eintragen.
Hubert
Lesezeichen