Hat jemand eine Idee wie ich die Abarbeitung des Interrutvector beschleunigen kann?
Abgesehen davon, daß ohne den konkreten Code der ISR diese Frage nicht zu beantworten ist: Ein PIC16 @ 7,3728MHz ist prinzipiell nicht dafür geeignet, Interrupts im 10µs-Intervall zu verarbeiten. Zwischen den Interrupts stehen nur 18,432 Befehlszyklen zur Verfügung. Die minimale Interrupt-Sicherung und Wiederherstellung (ohne PCLATH) benötigt alleine 8 Befehlszyklen. Zusammen mit der Interrupt-Latenz (zwei Befehlszyklen beim synchronen Interrupt, sonst 2 bis 3) und dem Rücksprung aus dem Interrupt (ebenfalls zwei Befehlszyklen) bleiben für den eigentlichen Interrupt Code nur noch 5-6 Befehlszyklen übrig. Auch mit dem bestmöglichen Assembler-Code ist eine sinnvolle Anwendung unter diesen Umständen praktisch unmöglich. Selbst wenn es gelingen sollte, die ISR in 6 oder weniger Befehlen zu erledigen, bleibt für das Hauptprogramm im Endeffekt keine Zeit mehr für dessen Abarbeitung.
Ohne die Interrupt-Häufigkeit zu verringern (d.h. die Auflösung der PWM zu reduzieren) und die Taktfrequenz des PICs deutlich zu erhöhen, sehe ich in Deinem Anwendungsszenario überhaupt keine Aussicht auf Erfolg.
Viele Grüße
Bernd