Einzelnen Beitrag anzeigen
Alt 22.04.2007, 00:12   #5
dirkan
Master
 
Registriert seit: 14.02.2002
Alter: 66
Beiträge: 644


Standard

Hallo,

// Beispiel für einen Timer Interrupt:
int cnt = 0;

int main( void )
{
TIMSK |= BV(TOIE0); // Enable timer interrupt
sei(); // Enable global interrupt flag

for (;; // Loop forever oder mache hier irgendwas
}

// Diese Funktion wird bei overrun timer counter aufgerufen
SIGNAL (SIG_OVERFLOW0)
{
PORTB = ++cnt;
}

Das geht mit allen anderen Interrupts ähnlich.
1. Das richtige enable bit setzen
2. Die SIGNAL oder INTERRUPT Fumktion schreiben SIG_ ist für
jeden Interupt unterschiedlich deklariert.

Beachten: bei vielen Ints muss das dazugehörende Register gelesen
werden (RTFM)

Bei verwendung von INTERRUPT anstatt SIGNAL können verschachtelte Interrupts auftreten. Fang mit SIGNAL an und langsam rantasten,
dann wird das schon gehen.

Viel Erfolg

Dirk
dirkan ist offline   Mit Zitat antworten