Hallo

Ohne ein paar kleine Fehler (TIMSK2 und servo_init() ) kann man dein Programm fast übersetzen:
Code:
#include <avr/io.h>         // I/O Port definitions
#include <avr/interrupt.h>   // Interrupt macros

#define F_CPU 16000000
#define SERVOPIN 7
#define SERVOPORT PORTA
#define DDRSERVO DDRA

volatile unsigned char servopos;

void servo_init(void)
{

   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+servopos)
      count++;
   else
      count=0;
};

int main(void)
{

   DDRA = 0xFF;
   PORTA = 0x00;

   sei();
   servo_init();

   servopos=100;

   while(1)
   {

   }
   return 0;
}
Allerdings funktionieren die Zugriffe auf den Port A überhaupt nicht:
avr-gcc -mmcu=atmega8 -Os -mno-interrupts -funsigned-char -funsigned-bitfields -Wall -Wstrict-prototypes -ggdb -c -DF_CPU=8000000UL -Wa,-acdhlmns=temp.lst temp.c -o temp.o
temp.c: In function `servo_init':
temp.c:17: error: `DDRA' undeclared (first use in this function)
temp.c:17: error: (Each undeclared identifier is reported only once
temp.c:17: error: for each function it appears in.)
temp.c: In function `__vector_3':
temp.c:25: error: `PORTA' undeclared (first use in this function)
temp.c: In function `main':
temp.c:37: error: `DDRA' undeclared (first use in this function)
temp.c:38: error: `PORTA' undeclared (first use in this function)
make: *** [temp.o] Error 1
In der iom8.h (die über io.h eingebunden wird) sind die Register für Port A nicht definiert:
Code:
...
/* Port D */
#define PIND	_SFR_IO8(0x10)
#define DDRD	_SFR_IO8(0x11)
#define PORTD	_SFR_IO8(0x12)

/* Port C */
#define PINC	_SFR_IO8(0x13)
#define DDRC	_SFR_IO8(0x14)
#define PORTC	_SFR_IO8(0x15)

/* Port B */
#define PINB	_SFR_IO8(0x16)
#define DDRB	_SFR_IO8(0x17)
#define PORTB	_SFR_IO8(0x18)
...
Was schlicht daran liegt, dass der Mega8 keinen Port A besitzt. Versuche mal 'nen anderen Port.

Gruß

mic