Die Lib kann 8
Servos an PC2 bis PC7 und PD5, PD6 ansteuern. ADC3 ist nicht vorgesehen.
Wenn du doch ADC3 für SERVO1 nehmen willst:
1. Änderungen in der RP6ControlServoLib.h:
a) Im Abschnitt // Servo ports:
Die 2 Zeilen:
#define SERVO1_PULSE_ON (PORTC |= IO_PC2) // PC2
#define SERVO1_PULSE_OFF (PORTC &= ~IO_PC2)
... auskommentieren oder löschen.
b) Dafür einfügen:
#define SERVO1_PULSE_ON (PORTA |= ADC3) // PA3
#define SERVO1_PULSE_OFF (PORTA &= ~ADC3)
2. Änderungen in der RP6ControlServoLib.c:
a) In der Funktion initSERVO() die Zeile:
if (servos & SERVO1) {DDRC |= IO_PC2; PORTC &= ~IO_PC2;}
... auskommentieren oder löschen.
b) Stattdessen einfügen:
if (servos & SERVO1) {DDRA |= ADC3; PORTA &= ~ADC3;}
Du kannst dann dein Servo als SERVO1 ansteuern, also die Initialisierung sieht so aus:
initSERVO(SERVO1);
... und die Positionsänderungen erfolgen mit der Variable: servo1_position (in deiner Demo ist das schon so!)
Lesezeichen