hi mic,
habe nun mit der servoansteuerung2 experimentiert, habe jetzt glaube ich verstanden wie die einzelnen positionen am servo mittels sleep bestimmt werden, was mir noch fehlt ist die antwort auf´s warum (siehe fragen im code):
Code:// Servoansteuerung2: Wir erzeugen zwei Impulse im Wechsel 10.1.2010 mic // sleep(1) verzögert ca. 0,1ms, 50 Impulse dauern ca. 1 Sekunde // Servo an SDA (PC1) (XBUS Pin 12) #include "RP6RobotBaseLib.h" uint8_t c; // allgemeine 8-Bit-Variable (ein Char) int main(void) { initRobotBase(); DDRC |= SDA; PORTC &= ~SDA; while(1) { for(c=0; c<50; c++) //50 = 50 Impulse senden, das dauert ca. 1 Sekunde { PORTC |= SDA; // Impulsstart sleep(1); // 1 = 0.1ms warten = Servoposition 1 PORTC &= ~SDA; // Impulsende sleep(150); //150ms warten } /* die for/++ schleife wird 50* durchlaufen, d.h. das signal wird 50* in längen von 0,1sec und zwischenpausen von 150ms abgegeben sleep(1) bestimmt die äußerste linke position am servo - warum eigentlich? ist das so irgendwo festgelegt? die äußerste linke position am servo müsste dem potiwert=0 entsprechen, oder? gibt es einen zusammenhang mit sleep(1)?*/ . . . . . for(c=0; c<50; c++) { PORTC |= SDA; sleep(30); //30 = 3ms warten = Servoposition 2 PORTC &= ~SDA; sleep(150); } /* die for/++ schleife wird 50* durchlaufen, d.h. das signal wird 50* in längen von 0,1sec und zwischenpausen von 150ms abgegeben, sleep(30) bestimmt die äußerste rechte position am servo......*/ . . . . . } return(0); // wird nie erreicht }







Zitieren

Lesezeichen