INT0 INterrupt

Gast #4614891
Lesenswert?
• ▲
▼
Hallo,
ich möchte den externen Interrupt INT0 am Attiny2313 benutzen. Dieser 
soll bei einer fallenden Flanke zunächst eine LED einschalten und bei 
der nächsten fallenden Flanke die LED wieder ausschalten usw.
1
void extern_interrupt_init(void){
2
  DDRB &= ~(1 << DDB6); // External Interrupt on INT0
3

4
  MCUCR |= (1 << ISC01); // INT0 falling edge
5
  MCUCR &= ~(1 << ISC00); // INT0 falling edge
6

7
  GIMSK |= (1 << INT0);  // enable INT0 interrupt
8
}

im Hauptprogramm habe ich noch mit sei() die Interrupts erlaubt.
Obwohl kein Flankenwechsel stattfindet, flackert die LED. Das heisst ja 
eigentlich, das die ISR immer ausgeführt wird
1
ISR(INT0_vect){
2
  PORTB ^= (1 << PB0);  
3
}

es ist egal, was ich am pin anlege (masse, vcc oder gar kein signal), 
die led flackert immer.

Liegt das Problem im Code? oder liegt das am Aufbau? Dieses ist auf 
einem Breadboard gesteckt.

Mark

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren