Hi und danke für die Antwort. Habe mir das angeguckt und das meiste (also wie ein Servo) funktioniert war mir klar.
Und ja, es handelt sich um ein Modellbau-Servo. Wusste gar nicht, dass es so viele verschiedene gibt.

Aber wirklich weiter gekommen bin ich noch nicht.

Code:
#define F_CPU 1000000UL
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>


#define SERVOPIN 0
#define SERVOPORT PORTB
#define DDRSERVO DDRB

volatile unsigned char servopos;

void servo_init()
{
	TIMSK |= (1<<OCIE1A);
	TCCR0A |= (1<<WGM01) | (1<<CS00);
	OCR0A = F_CPU/100000;
	DDRSERVO|=(1<<SERVOPIN);
}

ISR(TIMER1_COMPA_vect)
{
	static int count;
	if(count>servopos)SERVOPORT&=~(1<<SERVOPIN);
	  else SERVOPORT|=(1<<SERVOPIN);
	if(count<2000)count++; // Die Impulse sollten alle 20ms gesendet werden! 6.2.11 mic
	  else count=0;
}

int main (void)
{
  DDRB = 0b100111;
  PORTB = (1<<PB3) | (1<<PB4);

  // Servo auf Mittelstellung fahren

  while( 1 ) {
 
    if( !(PINB & (1<<PINB3)) ) {
	  // Servo nach links drehen
    }
 
    if ( !(PINB & (1<<PINB4)) ) {
	  // Servo nach rechts drehen
    }
  }
  return 0;
}
bei servo_init wird die PWM erzeugt. da Bin ich mir nicht ganz sicher, ob ich das so richtig geändert habe (benutze einen Attiny45). ISR(TIMER1_COMPA_vect) weiss ich gar nicht was das macht und habe auch nichts geändert. Beim Kompilieren gibt es aber schon einmal keinen Fehler. Trotzdem bewegt sich mein Servomotor kein stück.

Wie gebe ich jetzt die von der PWM die Pulsweite und die Periodenweite an? Da bin ich noch nicht ganz schlau draus geworden.

gruß