-
-
Erfahrener Benutzer
Robotik Visionär
Beim Servosignal ist nur die Pulsdauer wirklich wichtig, die Pause ist weniger kritisch. Per Hardware hat man den Vorteil, daß der Puls immer gleich ist, nur die Fehler des Oszillators hat man noch. Per Software hat man es schwer besser als etwa +-2 Zyklen zu werden. Es geht, ist aber nichte enfach. Außerdem hat man bei Software PWM eventuell ein kleinere Auflösung, da man ja für jeden Schritt einen Interrupt braucht.
Bei z.B. 1 MHz Taktfrequenz kommt man selbst in ASM für ein Software PWM im interrupt kaum unter etwa 15 µs Auflösung. Für den etwa 1 ms Steuerbereich den man bei den Servos hat, sind das nur etwa 6 Bit Auflösung. Wenn dann auch noch parallel I2C in Software laufen soll, wird es noch einiges schlechter, vermutlich sogar unbrauchbar.
Einen Puls durch den Hardware timer erzeugen zu lassen ist dagegen nicht so schwer:
Man setzt den Startwert des Timer und den Wert für die Vergleichereinheit so, das der Ausgang bei erreichen des Vergleichswertes zurückgesetzt wird. Dann setzt man den Ausgang auf high und startet den Timer. Um das Ende des Pulse kümmert sich dann die Hardware. Wenn man bei 1 MHz Takt noch einen Vorteiler von 8 nutzt, hat man 8 µs Auflösung für Zeiten bis etwa über 2 ms. Das geht auch in Basic, ohne zusätzliche Fehler und ohne die Gefahr, das einem irgendwo ein Interrupt dazwischenfunkt. Auch mit nur einem 8 Bit Timer kann man ohne den Vorteiler arbeiten. Es wird dann aber schon etwas komplizierter, weil man die Überläuft in Softwäre zählen muß. Den Feinabgleich macht man dann besser mit dem Startwert. Ist nicht ganz einfach aber das müßte gehen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen