ATmega8 externer Interrupt 0 C Beispiel

Ein Codebeispiel, wie der ATmega8 am Interrupt-Eingang 0 auf eine steigende Flanek reagiert.


Beschreibung

Die steigende Flanke des externen Interrupt 0 des ATmega8 toggelt in der Interruptroutine einen Digitalport.

C Sourcecode

#include <avr/io.h>
#include <avr/interrupt.h>

int main(void)
{

     DDRB = 0x01;                        // Setup PB0 as output
     PORTD |= 0x04;                      // Activate pullupressistor of PD2
     GICR |= (1 << INT0);                // Enable INT0
     MCUCR |= (1 << ISC01)|(1 << ISC00)// INT0 is executed on rising edge

     sei();                              // Set the I-bit in SREG

     for(;;);                            // The main loop stays empty and
                                         // could contain some code you want.

     return 0;                           // This line will never be executed
}


// Interrupt subroutine for external interrupt 0
 ISR(INT0_vect)                            
{
     PORTB ^= 0x01;                      // Toggle PB0

}

Download C-Sourcefile mit ASCII-Schema: C-Sourcefile mit ACII-Schema

Signalplots

Externer Interrupt 0 Plot

Gelb: digitalausgang, der in der Interruptroutine gesetzt wird.

Blau: Externer Interrupt 0 Eingang