Also,
ich wollte nur wissen, kann ich einen Interrupt (z.B. OC2) per Software im Programmcode auslösen oder nicht. Ich habe gelesen, das dies bei den internen Interrupts geht. Mit den Externen Interrupts muß ich den pin eben als Ausgang schalten und dann das Signal entsprechend per Software schalten. Das ist es was ich wissen wollte. Danke schon mal für diese Infos. Das hilft mir schon mal weiter.

Der Grund warum ich denn einen Interrupt per Programm auslösen will ist, weil ich in einer ziemlich zeitkritischen Interruptroutine keinen zu langen Code schreiben kann. Ich kann aber dafür sorgen, dass Quasi Synchron der andere Programmteil gestartet wird. Sozusagen direkt danach. Der Gag ist aber, dass ich den 2. Programmteil nicht immer ausführen muß, sondern nur wenn bestimmte Bedingungen gegeben sind.

Um dies zu erreichen dachte ich an einen internen Interrupt, den ich einfach nur iniziiere, wenn es sein muß.

Übrigens:
Mit Gosub kann ich keine ISR-Routine aufrufen, da diese mit IRET abgeschlossen sein muß. Der Compiler macht das halt so, wenn eine Unterroutine als Interrupt-Sprungziel angegeben ist. Das würde zum Absturz des Controllers führen.