Hi,
Danke für deine Antwort! Aber auch wenn ich was in die For-Schleife schreibe passiert nix anderes! Hab den Code mal bisschen umgeschrieben! Vielleicht hast du ja noch ein paar Ideen!
gruß maticCode:#include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> #include <inttypes.h> #include <math.h> #include <avr/delay.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<<PB1) | (0<<PB0); 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<<CS22) | (1<<WGM21) |(1<<COM21) |(1<<COM20); TCNT2 = 6; TIMSK = (1<<TOIE2); while(1) { PORTB = 0xFD; _delay_ms(100000); PORTB = 0xFE; _delay_ms(100000); } } SIGNAL(SIG_OVERFLOW2) { switch(zaehler) { case 0: // case 1: das da aktivieren für 2 mS Servo PORTD |= (1<<PD7); zaehler++; break; case 2: //PORTD &= ~(0<<PD7); PORTD &= ~(1<<PD7); zaehler++; break; case 20: zaehler = 0; PORTD |= (1<<PD7); break; case 21: zaehler = 0; PORTD &= ~(1<<PD7); break; TCNT2 = 6; } }







Zitieren

Lesezeichen