Atmega 8 4MhzCode:#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; }
Was ist da falsch es tut sich nichts
Lesezeichen