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:
funktioniert immer noch net!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); } }![]()
Gruß Michi







Zitieren
Lesezeichen