Fast richtig. Der Timer hat einen 4ms Zyklus, das stimmt schon.
1. Zyklus: Servo 0 über Compare Register A + Servo 5 über Compare Register B
2. Zyklus: Servo 1 über Compare Register A + Servo 6 über Compare Register B
3. Zyklus: Servo 2 über Compare Register A + Servo 7 über Compare Register B
4. Zyklus: Servo 3 über Compare Register A + Servo 8 über Compare Register B
5. Zyklus: Servo 4 über Compare Register A + Servo 9 über Compare Register B
und dann wieder von vorne
Macht fast genau 20ms Intervall pro Servo, also 50Hz. Grafisch dargestellt sieht das so aus:
Servo 0: _/~\__________________/~\__________________/~\_
Servo 1: _____/~\__________________/~\__________________
Servo 2: _________/~\__________________/~\______________
Servo 3: _____________/~\__________________/~\__________
Servo 4: _________________/~\__________________/~\______
Servo 5: _/~\__________________/~\__________________/~\_
Servo 6: _____/~\__________________/~\__________________
Servo 7: _________/~\__________________/~\______________
Servo 8: _____________/~\__________________/~\__________
Servo 9: _________________/~\__________________/~\______
. . . . . . . . . . . . . |-------20ms---------|
In jedem Zyklus wedern die beiden Compare Register umgeschrieben, entsprechen der gewünschten Pulsbreite des Servos, der im nächsten Zyklus angesprochen wird. Im fast PWM Modus werden Schreibzugriffe auf die Compare Register verzögert aktiviert, nämlich in dem Moment, wo der Counter überläuft.
Wenn man einen zweiten Timer verwendet, kann man das Ganze auf 20 Motoren erweitern.
Lesezeichen