Hi

Also ich versuche einen Servo ein meinem myAVR Board zu betreiben.
Als Beispiel habe ich den Code aus dem RN-Wissen Artikel genommen und er sieht jetzt wie folgt aus:
Code:
#include <avr/io.h>         // I/O Port definitions
#include <avr/interrupt.h>   // Interrupt macros

#define F_CPU 4000000	
#define SERVOPIN 7
#define SERVOPORT PORTD
#define DDRSERVO DDRD

volatile unsigned char servopos;

void servo_init()
{
	TIMSK|=(1<<OCIE2);
	TCCR2 |= (1<<WGM21) | (1<<CS20);	//Prescale=1, CTC mode
	OCR2 = F_CPU/100000;			//alle 10µS ein IRQ
	DDRSERVO|=(1<<SERVOPIN);
};

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(void)
{
	DDRD = 0xFF;
	PORTD = 0x00;

	sei();
	servo_init();

	servopos=120;

	while(1)
	{

	}
	return 0;
}
Nur leider macht er bis auf wie verrückt "zucken" nichts.
Was hab ich falsch gemacht?

gruß
Tobi

Edit:
So, habs nun doch noch selbst hinbekommen.
Das Beispiel für Bascom hat mich fehlgeleitet, dort steht man soll einen Wert zwischen 50 und 150 eingeben, bei C ist es aber ein Wert zwischen 0 und 100.
Und zum zucken... der Servo ist sehr alt, vielleicht kommt es ja davon.