Ja, ich hatte deinen Post schon gesehen.
Ich hatte keine Neuauflage der M32-Servo-Lib für die M256 geplant, weil die M256 so viele Hardware-PWM-Ausgänge hat, dass man eigentlich keine Servo-Lib braucht, die eine "Soft-PWM" macht.
Wenn du trotzdem die M32-Lib anpassen willst, gibt es diese Aufgaben:
1. Im Header:
- Im Abschnitt "Servo ports:" müßtest du die Portpins der M256 eintragen, die du auf der M256 nutzen willst. Die Bezeichnung der IO-Portpins (7. Spalte) findest du hier: http://www.rn-wissen.de/index.php/RP6v2#Port-Verwendung.
Nehmen wir an, du willst für SERVO1 den Portpin PB4 nehmen, dann müßte da stehen:
#define SERVO1_PULSE_ON (PORTB |= OC2A_PI4) // PB4
#define SERVO1_PULSE_OFF (PORTB &= ~OC2A_PI4)
Genau so machst du es mit allen 8 Ports für die Servos.
2. In der Lib (.c-Datei):
- In der Funktion initSERVO() müssen die Zeilen: if (servos & SERVOx) ... angepaßt werden: Wenn du für SERVO1 den Port PB4 festgelegt hattest, müßte die Zeile für SERVO1 so aussehen:
if (servos & SERVO1) {DDRB |= OC2A_PI4; PORTB &= ~OC2A_PI4;}
Die anderen 7 Zeilen müssen auch an die jeweiligen Portpins für Servos 2..8 angepaßt werden.
- Timer1 muss genau wie bei der M32 auf CTC Modus 4 und clk/8 konfiguriert werden. Das sind die Zeilen zwischen cli() und sei(). Du müßtest die Registerbezeichnungen der M32 und der M2560 vergleichen und an die M2560 anpassen. Ich habe gerade nicht die nötige Zeit dazu. Kleinere Änderungen sind auch in startSERVO() und stopSERVO() zu machen.
Das war's dann. Wenn du irgendwo nicht weiter kommst: Schreib hier noch mal!
Lesezeichen