Hallo Leute,
ich möchte 2 Servos mittels PWM im "Phase and Frequency Correct"-Modus ansteuern. Mit dem untenstehenden Programm funktioniert allerdings immer nur jeweils ein Servo. Wenn ich beide gleichzeitig aktiviere dann zuckeln sie nur sinnlos herum. Wie kann ich beide Servos gleichzeitig zum Laufen bringen?
MfG
Nico
Code:#ifndef F_CPU #define F_CPU 16000000 #endif #include <avr/io.h> #include <util/delay.h> // Servoansteuerung #define U_LIMIT 2000 #define L_LIMIT 1000 #define TOP 20000 #define SPEED(x) (L_LIMIT + ((( U_LIMIT - L_LIMIT ) / 255.0 )*x)) #define SETBIT(x,n) ((x)|=1L<<(n)) #define WAITMS(x) _delay_loop_2(((F_CPU * 0.001) / 4)*x) /**< 1 ms delay */ void init(void) { ICR1 = TOP; // ICR1 as TOP SETBIT(DDRD,PIND4); // Port PD4 (OC1B) als Ausgang SETBIT(DDRD,PIND5); // Port PD5 (OC1A) als Ausgang SETBIT(TCCR1A,COM1A1); // OCR1A on SETBIT(TCCR1A,COM1B1); // OCR1B on SETBIT(TCCR1B,CS11); // Prescaler 8 SETBIT(TCCR1B,WGM13); // Phase and Frequency Correct PWM //OCR1A = L_LIMIT + ((U_LIMIT-L_LIMIT)/2); // <-- Problem OCR1B = L_LIMIT + ((U_LIMIT-L_LIMIT)/2); } int main(void) { unsigned char c; init(); while(1) { for(c=0;c<=255;c++) { //OCR1A = SPEED(c); // <-- Problem OCR1B = SPEED(c); WAITMS(10); } } }







Zitieren

Lesezeichen