Zitat Zitat von GeoMan Beitrag anzeigen
Kann mir jemand sagen was ich falsch mache oder falsch annehme/
verstanden habe?
Erstmal, Code liest sich viel leichter, wenn man ihn auch als Code postet. Du solltest auch angeben, wo du z.B. die Funktion SETUP_TIMER_1(T1_INTERNAL) herhast, ich kenne sie nicht.

Aber ich denke, dein Problem lässt sich auch so lösen. Der Interrupt wird ausgelöst, wenn der Timer abgelaufen ist. Dann dauert es aber noch eine nicht genau definierte Zeit, bis in deinem Interrupthandler der Timer neu gesetzt wird. Der Prozessor führt erstmal den laufenden Befehl zuende aus, dann braucht er etwas um dem Handler aufzurufen. Dann muß er alle möglichen Zustände sichern damit er sie am Ende des Handlers wiederherstellen kann. Und erst dann fängt er an, deine Code im Handler abzuarbeiten. Inzwischen ist schon etwas Zeit vergangen und damit stimmt deine Rechnung nicht mehr. Deine 100 Ticks für einen Zyklus entsprechen knapp 100 Befehlen, das ist sehr wenig. Für eine 50kHz Frequenz mit Steuerung in Software ist dein Prozessor zu langsam.

MfG Klebwax