Hi,

ich versteh zwar nicht, warum der Servo am linken Anschlag bleibt, aber versuch doch mal das: (nichtmehr nur 3 mal Anhalten)

Code:
// RP6 steuert ein Servo an der SL1-LED mit Sleep()                 1.5.2008 mic 

#include "RP6RobotBaseLib.h"      // Denn vollen Funktionsumfang der Lib bezahlen 
                                 // wir mit den störenden Interrupts 

uint8_t stellzeit, servopos=15;    // 15=Servomitte, Drehbereich ca. 5-25 

int main(void) 
{ 
   initRobotBase(); 
   setLEDs(0);                   // alle LEDs aus/kein Impuls 
   stellzeit=30;              // Wiederholungen für Stellzeit vorbelegen 
   while(1) 
   { 
      
      while(stellzeit--)         // Wir geben dem Servo Zeit zum Positionieren 
      {                          // und senden solange das Steuersignal 
         setLEDs(1);             // Servo Impuls Anfang 
         sleep(servopos);        // Sleep() läuft mit 10kHz: 15 entspricht 1,5ms 
         setLEDs(0);             // Servo Impuls Ende 
         sleep(200-servopos);    // Das Signal soll alle 20ms gesendet werden 
      }                          // Am Ende der Schleife sollte das Servo im Ziel sein 
      servopos+=1;               // Nächste Position berechnen 
      if(servopos > 25) servopos=5; // Ende Drehbereich, zurück auf andere Seite 
      mSleep(500);               // Platzhalter für andere Aufgaben 
   } 
   return(0); 
}
Ich hab auch das Stellzeit=30; vor die while-schleife um es nicht ständig neu definieren zu müssen, das spart rechenzeit -->ruckeln

ist zwar nur ein Takt, aber wenn man das immer macht kommt doch manchmal was mit 0.05 ms oder so zusammen, was das ruckeln erheblich verbessert


MfG Pr0gm4n