Hi,

so jetzt habe ich endlich zeit gehabt um deine Fehler zu korrigieren:

Code:
#include <avr/io.h> 
#include <avr/signal.h> 
#include <avr/interrupt.h> 
#include <inttypes.h> 
#include <math.h> 

volatile unsigned char servowert; 
volatile unsigned char puls; 
volatile unsigned char zaehler; 

int set_servo(volatile uint8_t pos) 
   { 
   servowert = (pos/180) + 1; 
   } 
    
int main(void) 
   { 
   zaehler = 0; 
   sei(); 
   DDRD = (1<<PD7); 
   PORTD = (1<<PD7); 
   //Timer0 übernimmt die Highphase 
   //muss 1ms sein also 25 Takte bei einem Prescaler von 64 
   puls = 25; 
   TCCR2 = (1<<CS21) | (1<<CS20); 
   TCNT2 = (255-puls); 
   TIMSK = (1<<TOIE0);  
   for(;;) 
   { 
   } 
   } 
    
SIGNAL(SIG_OVERFLOW2) 
   { 
   if(zaehler == 0) 
       { 
      PORTD &= ~(0<<PD7); 
      TCNT2 = (255-puls); 
      zaehler++;
	  //PORTB = (0<<PB0);  
      } 
   else if ( (zaehler > 0 ) && (zaehler < 20 ) ) 

      { 
      TCNT2 = (255-puls); 
      zaehler++; 
      } 
    else 
        { 
      TCNT2 = (255-puls); 
        zaehler = 0; 
      PORTD = (1<<PD7); 
        } 
   }
Aber leider tut sich immer noch nichts! Ich weiß nicht woran es liegen kann! Naja vielleicht könnt ihr ja was im Quellcode finden! Danke für eure hilfe!

matic