Nun habe ich dieses Programm gefasht:

Code:
#include "asuro.h" 

unsigned char i, servo_stellzeit; 

void servo(unsigned char winkel)
{ 
unsigned int count=0; 
do{ 
   count++; 
   if (ON || ON || ON) { 
      DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB2); 
      PORTB |= (1 << PB0) | (1 << PB1) | (1 << PB2); 
   } 
   FrontLED(ON); 
   Sleep(winkel); 
   if (!OFF) PORTB &= ~(1 << PB2); 
   if (!OFF) PORTB &= ~(1 << PB1); 
   if (!OFF) PORTB &= ~(1 << PA0); 
   FrontLED(OFF); 
   Sleep(255); Sleep(255); Sleep(255); 
}while (count<servo_stellzeit); 
} 


int main(void) { 

Init(); 
BackLED(OFF,OFF); 
do{ 
servo_stellzeit=35; 
servo(51); 
servo(90); 
servo(51); 
servo(15); 
servo_stellzeit=2; 
for (i=15; i<88; i+=2) servo(i); 
for (i=90; i>17; i-=2) servo(i); 
}while (1); 
return 0;  
}
Die FrontLED flackert ganz schnell, der Servo dreht: 90° Rechts - 90° Rechts - 90° Links - 90° Links - 180° Rechts - 180° Links

Wenn ich allerdings einen 2. Servo anhänge stimmt der Ablauf nicht mehr, bei 3 angehängten Servos dreht gar keiner mehr.

Wie muss ich vorgehen um alle 3 Parallel betreiben zu können?