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