Hallo,

danke für die Antwort. An dem WAITMS(10) liegt es leider nicht. Auch wenn ich das WAITMS weglasse und einmalig beide Servos in feste Positionen bringen möchte funktioniert dies nicht.

Ich habe das Programm nochmals etwas modifiziert und diesmal FastPWM genutzt. An dem Problem hat sich jedoch nichts verändert. Es läuft immer nur ein Servo. Der andere muss kommentiert bleiben.

Code:
#ifndef F_CPU
	#define F_CPU 16000000
#endif

#include <avr/io.h>
#include <util/delay.h> 

// Werte für OCR1A/OCR1B
#define U_LIMIT	4000	// oberes Limit
#define L_LIMIT	2000	// unteres Limit

// Obergrenze Zähler
#define TOP		40000

// Makro für Normierung auf Werte zwischen 0 und 255
#define SPEED(x)	(L_LIMIT + ((( U_LIMIT - L_LIMIT ) / 255.0 )*x))
#define WAITMS(x)   _delay_loop_2(((F_CPU * 0.001) / 4)*x)

void init(void)
{
	ICR1 = TOP;				// ICR1 as TOP

	DDRD |= (1 << PIND4); // Port PD4 (OC1B) als Ausgang
	DDRD |= (1 << PIND5); // Port PD5 (OC1A) als Ausgang
	
	// Aktiviere OCR1A und OCR1B und setze Waveform Generation Mode 14
	TCCR1A = 0x00 | (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11);	// OCR1A und OCR1B an
	TCCR1B = 0x00 | (1 << CS11)   | (1 << WGM12)  | (1 << WGM13);	// Prescaler 8, 16 Bit Fast PWM, TOP ist ICR1
	
	// Servos in Mittelstellung
	OCR1A = SPEED(127);
	//OCR1B = SPEED(127);			// <- Problem
}

int main(void)
{
	unsigned char c;
	init();
	while(1)	// Hauptschleife
	{
		for(c=0;c<=255;c++) // Servos von Minimalstellung zu Maximalstellung fahren
		{
			// setze Servopositionen
			OCR1A = SPEED(c);
			//OCR1B = SPEED(c);		// <- Problem
      
			// Zeit schinden
			WAITMS(10);
		}
	}
}
MfG
Nico