Hallo,
die ISR soll möglichst schnell beendet werden, damit es nicht zu einer Überschneidung beim Ausführen und neuem Eintreten eines Interrupts kommt. Ob du die Anweisungen in eine neue Funktion schreibst oder nicht, die ISR wurde noch nicht beendet.

Zu deinem Code. Du setzt das Interruptflag für Timer 2. Wo ist die ISR für Timer 2?

Gruß

Jens