Hallo,
Erste Zeile hat hier wohl nicht viel zu sagen, weil Du in der zweiten Zeile den ganzen Register sowieso überschreibst...MCUCR = ~(1<<ISC01);
MCUCR = (1<<ISC00);
Lass die erste Zeile für das Beispielprogramm ganz weg.
Du stellst Interrupt bei logischem Weschsel an Int 0 ein, ist es denn Hardwaremäßig so gegeben ?
Welchen Level hat der INT0 ?
Ist da ein Pulldown dran ?
selbst wenn ja, machst Du hier 2 Interrupts schnell hintereinander, also:
Du gehst mit Deinen +5V Draht an den Pin dran -> interrupt, machst den Draht weg -> interrupt
Mach es z.B so:
Jetzt kannst Du Deinen Draht zwischen GND und PD2 halten,Code://Pins bzw. Ports als Ein-/Ausgänge konfigurieren DDRC |= 0x11; //10001000 -> PORTC.4 ist blinkende LED im Hauptprogramm, PORTC.0 ist Anzeige des Interrupts DDRD |= 0x00; //00000000 -> PORTD.2 ist Interrupt0 (Der ausgelöst werden soll) PORTD = (1<<PD2); /*internen Pullup einschalten*/ MCUCR = (1<<ISC01); /*Interrupt bei fallender Flanke*/ GICR = (1<<INT0); sei();
so müßte es funktionieren
Gruß Sebastian







Zitieren

Lesezeichen