hallo, bin programmier grad an meinem neuen servo für n rp6 rum.....
mein ziel war es zum einstieg ein programm zu schreiben das den servo in mittelstellung verfahren lässt und sich dort hält. ich hab es so programmiert, dass der servo auf dem sda pin alle 20 ms ein high signal von der länge von 1,5 ms bekommt. leider dreht der servo lediglich beim einschalten wenige mm gegen den uhrzeigersinn und nicht in mittelstellung. dazu hab ich das folgende programm geschrieben:



#include "RP6RobotBaseLib.h"

#define SERVO_OUT SDA



void initSERVO(void)
{
DDRC |= SERVO_OUT; //SDA high
PORTC &= ~SERVO_OUT;//SDA low
startStopwatch1(); //stopwatch1 starten
}



void task_SERVO(void)
{if (getStopwatch1()>20) // nach Stopwatch1 >20 ms
{PORTC |= SERVO_OUT; // SDA auf high
startStopwatch2();} //Stopwatch2 starten

if (getStopwatch2()>1,5) //Stopwatch2 >1,5ms
{PORTC &= ~SERVO_OUT; //SDA auf low
setStopwatch1(0); //Stopwatch1 auf 0ms zurück
setStopwatch2(0);} //Stopwatch2 auf 0ms zurück
}


int main(void)
{
initRobotBase();
initSERVO();

while(true)
{
task_SERVO();
task_RP6System();
}
return 0;
}







wer kann mir sagen wo der fehler liegt?
gruß