Servo code was mache ich falsch?
Code:
#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>
#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)count++; // Die Impulse sollten alle 20ms gesendet werden! 6.2.11 mic
else count=0;
};
int main (void)
{
servo_init();
while(1)
{
}
return 0;
}
Atmega 8 4Mhz
Was ist da falsch es tut sich nichts