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);
    }
  }
}