Hallo

Deine ISR von oben sollte besser so aussehen:
Code:
ISR(TIMER2_COMP_vect)
{
   static int count;
   if(count > servopos_left)
      SERVOPORT &= ~SERVOPIN_LEFT;
   else
      SERVOPORT |= SERVOPIN_LEFT;

   if(count > servopos_right)
      SERVOPORT &= ~SERVOPIN_RIGHT;
   else
      SERVOPORT |= SERVOPIN_RIGHT;

   if(count < (2000)
      count++;
   else
		count=1;
};
Mit dem "count=1" kann man mit servopos=0 den Impuls ganz ausschalten.

Trotzdem stimmt etwas mit dem Takt nicht denn die Werte für die Servopositionen sind viel zu hoch:
servopos_left = 500;
servopos_right = 370;
Bei einem 10µs-Interrupt wären das 5ms oder 3,7ms! Und 2000 als count-Wert würden auch keine 20ms ergeben. Deshalb reicht dir auch das char für servopos nicht aus.

Code:
TCCR1A |= (1<<COM1A1) | (1<<COM1B1) | (1<<COM1A0) | (1<<COM1B0)| (1<<WGM12) | (1<<WGM11) | (1<<WGM10); 
TCCR1B |= (1<<CS11);
Sollen wir nun das Datenblatt wälzen um das Setup des Timers zu kontrollieren? Je nach Timer-Mode und Taktfrequenz/Prescaler werden OCR1A und OCR1B eingestellt. Bei nur zwei Servos erscheint mir die Verwendung der ISR-Lösung einfacher.

Gruß

mic