Forum: Mikrocontroller und Digitale Elektronik INT0 INterrupt


von Mark (Gast)


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

von S. Landolt (Gast)


Lesenswert?

B6? - INT0 liegt doch auf D2.

von Mark (Gast)


Lesenswert?

Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.