by KLR233 » Thu Jul 23, 2009 8:23 am
by KLR233
Thu Jul 23, 2009 8:23 am
Thanks for your reply
By the way those are cheap standard servo without feedback.
And i'm using the provided lib function within there is no way of choosing any pwm ports.
here is the code
DWORD CMFCBotBrain2Dlg::MainThread(void * pthis)
{
unsignedlong PWM_period = 10000;
unsignedlong PWM_duty = 1500;
unsignedlong SpeedCount = 100;
CString LogString_ST;
char pWork_c[150];
CMFCBotBrain2Dlg *pDial_O;
pDial_O = (CMFCBotBrain2Dlg *) pthis;
pDial_O->AddLog("Thread Start");
if (rcservo_Initialize(RCSERVO_USECHANNEL0 + RCSERVO_USECHANNEL1 + RCSERVO_USECHANNEL2) == RBAPI(false))
{
pDial_O->AddLog("RC SERVO INIT FAILED ");
pDial_O->AddLog(roboio_GetErrMsg());
}
else
{
pDial_O->AddLog("RC SERVO INIT SUCCESSFULL");
}
rcservo_EnterPWMMode();
do
{
rcservo_SendPWMPulses(RCSERVO_USECHANNEL0,PWM_peri od,PWM_duty,SpeedCount);
rcservo_SendPWMPulses(RCSERVO_USECHANNEL1,PWM_peri od,PWM_duty,SpeedCount);
rcservo_SendPWMPulses(RCSERVO_USECHANNEL2,PWM_peri od,PWM_duty,SpeedCount);
do
{
}
while(!rcservo_IsPWMCompleted(RCSERVO_USECHANNEL2));
if (PWM_duty != pDial_O-> PWM_duty)
{
PWM_duty = pDial_O->PWM_duty;
sprintf(pWork_c,"PWM DUTTY UPDATED %d",PWM_duty);
LogString_ST = pWork_c;
pDial_O->AddLog(LogString_ST);
}
}
while(pDial_O->QuitThread_b == false);
rcservo_Close();
pDial_O->AddLog("THREAD ENDED");
return (0);
}
Thanks for your reply
By the way those are cheap standard servo without feedback.
And i'm using the provided lib function within there is no way of choosing any pwm ports.
here is the code
DWORD CMFCBotBrain2Dlg::MainThread(void * pthis)
{
unsignedlong PWM_period = 10000;
unsignedlong PWM_duty = 1500;
unsignedlong SpeedCount = 100;
CString LogString_ST;
char pWork_c[150];
CMFCBotBrain2Dlg *pDial_O;
pDial_O = (CMFCBotBrain2Dlg *) pthis;
pDial_O->AddLog("Thread Start");
if (rcservo_Initialize(RCSERVO_USECHANNEL0 + RCSERVO_USECHANNEL1 + RCSERVO_USECHANNEL2) == RBAPI(false))
{
pDial_O->AddLog("RC SERVO INIT FAILED ");
pDial_O->AddLog(roboio_GetErrMsg());
}
else
{
pDial_O->AddLog("RC SERVO INIT SUCCESSFULL");
}
rcservo_EnterPWMMode();
do
{
rcservo_SendPWMPulses(RCSERVO_USECHANNEL0,PWM_peri od,PWM_duty,SpeedCount);
rcservo_SendPWMPulses(RCSERVO_USECHANNEL1,PWM_peri od,PWM_duty,SpeedCount);
rcservo_SendPWMPulses(RCSERVO_USECHANNEL2,PWM_peri od,PWM_duty,SpeedCount);
do
{
}
while(!rcservo_IsPWMCompleted(RCSERVO_USECHANNEL2));
if (PWM_duty != pDial_O-> PWM_duty)
{
PWM_duty = pDial_O->PWM_duty;
sprintf(pWork_c,"PWM DUTTY UPDATED %d",PWM_duty);
LogString_ST = pWork_c;
pDial_O->AddLog(LogString_ST);
}
}
while(pDial_O->QuitThread_b == false);
rcservo_Close();
pDial_O->AddLog("THREAD ENDED");
return (0);
}