-
-
Hmm, also den High-Pulse musst Du schon *sehr* genau programmieren. Das hängt natürlich von Deinem Microcontroller ab, aber im Prinzip sind Interrupts ungeeignet, da der Interrupt zwar vom Timer korrekt angemeldet wird, aber erst ausgeführt wird, sobald die aktuelle instruktion beendet ist. Beim PIC mag das noch gehen, da der keinen Cache hat und ale Instruktionen immer genau 4 Zyklen lang sind, aber bei Atmls ist das schon Essig. Ausserdem kann ein Interrupt (z.B. timer) einen anderen (z.B. serielles byte empfangen) nicht unterbrechen. Wenn Deine Servos also nur beim Datenempfang zucken... .
Meine Controller arbeiten in eine Busy-Loop, den ich auf den CPU-Cycle genau berechnet (und überprüft) habe. So bekomme ich bei einem 4MHz PIC eine Auflösung von 1uS für 14 Servos hin. Die serielle Schnittstelle darf dann aber auch nicht den Interrupt benutzen, da sonst die Zählung nicht mehr stimmt.
Ausserdem haben viele uC auch PWM Ausgänge. Da wird's u.U. noch präziser. Dafur gibt es aber selten mehr als vier pro chip.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen