Code:
#define F_CPU 4000000UL
 
#include <avr/io.h>
#include <util/delay.h>
 #define SERVOPIN 7
#define SERVOPORT PORTD
#define DDRSERVO DDRD

volatile unsigned char servopos;

void servo_init()
{
  TIMSK|=(1<<OCIE2);
  TCCR2 |= (1<<WGM21) | (1<<CS20);  //Prescale=1, CTC mode
  OCR2 = F_CPU/100000;      //alle 10µS ein IRQ
  DDRSERVO|=(1<<SERVOPIN);
};

ISR(TIMER2_COMP_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)
{
   servo_init();
   while(1)
   {

   }
  return 0;
}
Atmega 8 4Mhz
Was ist da falsch es tut sich nichts