Hallo

1) Du musst die CPU Frequenz vor der Inkludierung der delay Lib definieren - kommt den keine Warnung vom Compiler?
2) Du musst dem Servo Zeit geben die Position anzufahren -> die Drehgeschwindigkeit steht im Datenblatt, bzw. auf der Servoverpackng
Wird meistens in der Form *Sekundenwert*/*Winkel* angegeben, z.B. beim HS-81 @4,8V (bei 5V aus dem Regler ein bisschen schneller - aber unmerklich) 0.11sek/60° -> somit kannst du dir die Winkelgschwindigkeit (545,5 1/s) ausrechnen und bei einem guten Servoprogramm in die Einsteuerung einfließen lassen
3) Weißt du wie eine Servoansteuerung funktioniert? Du brauchst nicht 500 Signale das sich was tut, sondern es reichen wahrscheinloch 10 ach aus, nur dann ist das Servo ohne "Versorgung" -> kraftlos
Ein Servo braucht dauernd ein Signal -> Endlosschleife

Mach dir ein ganz einfaches Programm:
Code:
#define F_CPU 16000000    //deine Quarzfrequenz einsetzen
#define SERVO_PIN PINB1   //Deinen Pin einsetzen


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

void main (void)
{

DDRB | = 1<<SERVO_PIN; //als Ausgang definieren while(1) {
PORTB |= 1<<SERVO_PIN;
//Pin einschalten
_delay_us(1500);
//Positionsinformation einsetzen
PORTB &= ~(1<<SERVO_PIN);
//Pin ausschalten
_delay_ms(18);
//auf 20ms auffüllen
}
}
Wenn das funktioniert kannst du das immer noch variabel machen, LEDs dazu usw...

Ich weiß nicht welche Erfahrung du in Programmierung hast, aber ichs machs immer so, dass, wenn ich eine komplett neue Funktion für meinen Roboter dazubaue, ich zuerst ein Programm mit den "Basics", also Sachen die für den Roboter wichtig sind (Initialisierungen, 0-Stellungen (-> Motor aus usw.)) und meiner neuen Funktion. Wenn dann die Funktion funkioniert () kannst du sie in ein Header-File setzen und in dein "Master" Programm einbauen.