Moin!
Da ich mein letztes Problem schon nicht hinbekommen habe (Servo-Steuerung) will ich mich gleich mal dem nächsten Problem zuwenden. Ich hab jetzt die werte für den Servo eingegeben und lass den servo über eine Variable hin und dann wieder zurück fahren. (Auf dem Servo ist ein GP2D12). Nun hab ich das aber mit delays gemacht und mein restliches Programm läuft in der bearbeitungszeit nicht weiter. Das heißt alles andere Wird auch verzögert (bis jetzt zwar nur eine Lichtmessung, aber das ist schon nervig genug.)

Hier mal mein Code. Hab mal alles was nicht direkt mit dem Servo zu tun hat, sondern nur Delay-mäßig gestört wird, gelöscht. Die Struktur is auch ganz schön hässlich, bekomme das aber irgendwie nich besser hin

Code:
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <util/delay.h>

#ifndef F_CPU
#define F_CPU 16000000
#endif

#define Scheinwerfer 0
#define Rueckleuchten 1
#define PWM_ServoPort 5

//-------------------------------------IR_Servosteuerung---------------------------------------
void IR_Servosteuerung(void)
{
uint8_t a, b, i;
uint16_t x;
a=1;
b=0;
x=450;

while (a)
  {
  OCR1A=x;
  for (i=0; i<=3; i++)
    {
    _delay_ms(10);
	}
  x++;
  if (x>=480)
    {
	a=0;
	b=1;
    }
  }

while (b)
  {
  OCR1A=x;
  for (i=0; i<=3; i++)
    {
    _delay_ms(10);
    }
  x--;
    if (x<=450)
    {
	a=1;
	b=0;
	}
  }
}

//-------------------------------------initialisierungen---------------------------------------


void Initial_IR_Servo(void)
{
TCCR1A = ((1<<WGM11)|(1<<COM1A1)|(1<<COM1A0)); //9-Bit PWM, Inverted Mode
TCCR1B = (1<<CS12); 	//Prescaler 256
DDRD |= (1<<PWM_ServoPort); 
PORTD |= (1<<PWM_ServoPort);
}

//---------------------------------------Hauptprogramm---------------------------------
int main(void)
{
Initial_IR_Servo();

while(1)
  {
  IR_Servosteuerung();
  }
}
Hoffe es kann wieder jemand helfen.

MfG Jan