Sprung in Funktionen und zurück klappt nicht

OnlySketching:
Kann mir jemand paar tipps geben was ich hier falsch mache?

int cnt=0;

cnt muss volatile deklariert werden.

Da es ein int (2 Bytes) ist, müsste man auch eigentlich alle Zugriffe aus dem Hauptprogramm atomar gestalten,
in deinem Fall wäre es einfacher cnt zu einem (unsigned) char zu machen.

Das sei() in setup ist ohne vorhergehendes cli() sinnfrei, Interrupts sind standardmäßig eingeschaltet.

Pinchange Interrupts auf den externen Interruptpins halte ich für Verschwendung und komplizierter.
Wenn man eine Library benutzt die etwas anderes nicht unterstützt, von mir aus.

Deine while-delay Technik finde ich zum Speien.
Mehrere Statements in einer Zeile benutze ich normalerweise nicht.