Also Sprünge in andere Programmteile sind in einer ISR absolut tabu, denn man weiss ja nicht ob der Compiler schlau genug ist sowas korrekt zu erkennen. (Ich bezweifle es mal, und vermute daß der Programmteil in den man per goto springt noch zur ISR gezählt wird)

Funktionsaufrufe sind noch akzeptabel, aber man sollte sich da wirklich auf ganz kurze einfache Funktionen beschränken. (denn jede innerhalb einer ISR aufgerufene Funktion wird nunmal vollständig innerhalb der ISR ausgeführt und führt zu entsprechenden Verzögerungen)

einen konkreten Wert für die maximal zulässige ISR-Länge gibt es nicht. Wenn man nur einen Interrupt verwendet muss sie jedenfalls kurz genug sein daß sie auf jeden Fall fertig ist bevor der Interrupt erneut ausgelöst werden kann. Bei mehreren Interrupts gilt einfach nur: so kurz wie möglich.