Deine Schaltung ist ungewöhnlich. Taster läßt man gewöhnlich gegen GND arbeiten. Und 1MΩ entspricht dem Widerstand einer schmutzigen Leiterplatte, ist also viel zu groß. Ich kenne deinen Prozessor nicht, viele haben aber eingebaute, einschaltbare Pullups, da braucht man nur eine Taste nach GND. Und statt 150Ω würd ich 470Ω nehmen. Damit leuchten moderne LEDs auch und man stresst den armen µC nicht so.

Man sollte es unterlassen, im Interrupthandler selbst an den Interrupten rumzudrehen. Das hatte ich schon an anderen Stellen mehrmals geschrieben. Beim Eintritt in den Handler sperrt der µC die Interrupte automatisch, am Ende erlaubt er sie wieder. Das cli() wirkt also nur bis zur schließenden geschweiften Klammer des Handlers. Es ist außerdem wirkungslos, da die Interrupte im Handler sowieso gesperrt sind.

Mal abgesehen von den "merkwürdigen" Kommentaren (sei() erlaubt Interrupte, schaltet sie ein) würd ich die Reihenfolge ändern. Erstmal alles einstellen, GICR und MCUCR setzen und dann Interrupte erlauben. Erst den Gang rein und dann die Kupplung kommen lassen.

MfG Klebwax