Hallo,
eher nicht: Du hast 160 Maschinenzyklen zwischen den Interrupts. Sieh Dir mal im Disassembler oder in der "list"-Datei die Länge Deiner ISR (letzte abgekürzte Version, kompiliert mit -O1) an: >80 Befehle (mir ist klar, dass durch die Sprünge nicht alle ausgeführt werden, aber manche brauchen eben >1 Zyklus) -- das kann also nicht mehr funktionieren, wenn Du es um nur ein bis zwei Kanäle erweiterst, zumal allein "servoposH" auch schon >30 Befehle lang ist!Zitat von hosti
Also: 16 Bit Timer verwenden, die Servo-Signale per PWM erzeugen, wie von Besserwessi gezeigt, oder die Impulse gestaffelt ausgeben. Wie viele Servos sollen es denn insgesamt werden? Den OVF-Interrupt zu verwenden, wenn Du einen Compare-Interrupt zur Verfügung hast, ist nicht besonders effizient, wie Du gesehen hast. Beim nächsten Anlauf klappt es besser!
Gruß
Fred
Lesezeichen