Hi Picnick,
mein Quartz ist 16Mhz
Es muss doch PORTB = (0<<PB0); heißen da ich ja das Servosignal löschen will!
mein aktueller Code:
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();
	DDRB = (1<<PB0);
	PORTB = (1<<PB0);
	//Timer0 übernimmt die Highphase
	//muss 1ms sein also 25 Takte bei einem Prescaler von 64
	puls = 25;
	TCCR0 = (1<<CS01)|(1<<CS00);
	TCNT0 = (255-puls);
	for(;;)
	{
	}
	}
	
SIGNAL(SIG_OVERFLOW0)
	{
	if(zaehler == 0)
	    {
		PORTB = (0<<PB0);
		TCNT0 = (255-puls); 
		zaehler++;
		}
	else if ( (zaehler > 0 ) && (zaehler < 20 ) ) 

		{
		TCNT0 = (255-puls); 
		zaehler++;
		}
    else
        {
		TCNT0 = (255-puls); 
        zaehler = 0;
		PORTB = (1<<PB0);
        }
	}
funktioniert immer noch net!
Gruß Michi