Hi,
vom RN-Wissen Portal habe ich mal den Servo-Ansteuerungs-Code ausprobiert, jedoch zuckt der Servo nur wild rum. Habe F_CPU richtig definiert, eine extra Stromquelle für den servo(6V) und schon mehrere Servos ausprobiert. Alles ohne Erfolg; er Zuckt weiter nur rum.
Hier mal den Code den ich verwende
Code:
#include <avr/io.h>
#include <avr/interrupt.h>

#define F_CPU 1000000UL
#define SERVOPIN 1
#define SERVOPORT PORTB
#define DDRSERVO DDRB

volatile unsigned char servopos;

void servo_init()
{
	TIMSK|=(1<<OCIE2);
	TCCR2 |= (1<<WGM21) | (1<<CS20);
	OCR2 = F_CPU/100000;			
	DDRSERVO|=(1<<SERVOPIN);
    sei();
}

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(){
    servo_init();
	DDRD &= ~(1<<2); //für den Taster
	DDRC |= (1<<5);    // für die LED
	while(1){
	    if(PIND & (1<<2)){ //wenn taster gedrückt:
		    PORTC |= (1<<5); // LED anschalten und-
			servopos = 100;  // servo mittelstellung
			
		}
		else {
		    PORTC &= ~(1<<5);//andernfalls LED ausschalten, und
			servopos = 50; //servoposition aussen
		}
	}
    return 0;

}
Wäre sehr dankbar wenn mir jemand ein Tip geben könnte woran es liegt und wie ich den Servo zum "laufen" bekomme.
mfg
ps: benutze internen 1mhz Takt auf dem Atmega8