ATmega8 externer Interrupt 0

In diesem C Beispiel für den ATmega8 wird der externe Interrupt 0 konfiguriert.


Beschreibung

Der Externe Interrupt 0 wird durch eine fallende Flanke ausgelöst. Sobald dies eintritt, wird das Ausgangssignal an PB0 getoggelt.

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);             // INT0 is executed on falling 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

ATmega8 Interrupt 0 Plot

Gelb: Digitaler Ausgang PB0

Blau: Interrupt 0 am Eingang PD2