Gast
#1264108
Hallo allerseits, ich habe unter http://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung ein Beispiel für eine Servo Ansteuerung gefunden und folgendermaßen verändert: #include <avr/io.h> //Grundfunktionen #ifndef F_CPU //Vordefinieren für delay.h #define F_CPU 1000000UL //Definition von F_CPU in Herz #endif #include <util/delay.h> //Warteschleifen #include <stdint.h> //Variablen #include <avr/interrupt.h> //Interruptroutinen ISR(TIMER1_COMPA_vect) { OCR1A=2500-OCR1A; //Das Servosignal wird aus der Differenz von Periodenlänge ((2500*0,008ms)=20ms) //und letztem Vergleichswert (OCR1A) gebildet } int main (void) //Hauptfunktion { //Anfang der Hauptfuktion unsigned int direction = 1; DDRB=0b11111100; //Alles Ausgänge bis auf PB0 und PB1 PORTB=0b00000011; //Pullup für PB0 und PB1 TCCR1A=0b01010000; //Tooglen von PB3 TCCR1B=0b00001010; //CTC-Mode und; Prescaler 8; Prozessortakt TIMSK=0b01000000; //Interrupt OCR1A=2250; //Startposition ganz link bzw. ganz rechts, werde ich noch herausfinden sei(); //Interrupt an while(1) { if ( (OCR1A < 2375) && (direction == 1) ) { cli(); OCR1A=OCR1A+5; sei(); _delay_ms(50); //Verlangsamung der Veränderung } if ( (OCR1A == 2375) && (direction == 1) ) { direction = 0; } if ( (OCR1A > 2250) && (direction == 0) ) { cli(); OCR1A=OCR1A-5; sei(); _delay_ms(50); //Verlangsamung der Veränderung } if ( (OCR1A == 2250) && (direction == 0) ) { direction = 1; } } return 0; } Ich möchte also, dass mein Servo periodisch zwischen den Stellungen ganz links und ganz rechts hin und her fährt. Was ich an dem Beispiel aber noch nicht verstanden habe: An welchem Pin wird die Steuerleitung des Servos angeschlossen? An einem der PB Pins 2 - 7? Denn bei mir tut sich noch nichts am Servo. Was mache ich falsch? LG Mark