Beispiel #1
0
void speed_set(MOTOR_SELECT Select, int32_t speed)
{
	if (Select == MOTOR_RIGHT)
	{
		SetPoint[0] = speed;
	}
	else if (Select == MOTOR_LEFT)
	{
		SetPoint[1] = speed;
	}
	speed_control_runtimeout(20);
}
/**
 * @brief Control speed
 * @param select motor select
 * @param speed motor speed (encoder pulse / 20ms)
 */
void speed_set(MOTOR_SELECT Select, int32_t speed)
{
	//speed_Enable_Hbridge(true);
	if (Select == MOTOR_RIGHT)
	{
		if (SetPoint[0] != speed)
		{
			SetPoint[0] = speed;
			speed_control_runtimeout(20);
		}
	}
	else if (Select == MOTOR_LEFT)
	{
		if (SetPoint[1] != speed)
		{
			SetPoint[1] = speed;
			speed_control_runtimeout(20);
		}
	}
	if (SetPoint[0]==0 && SetPoint[1]==0 )
	{
		speed_Enable_Hbridge(false);
	}
}
static void speed_update_setpoint(void)
{
	int i;
	speed_control_timID = INVALID_TIMER_ID;

	for (i = 0; i < 2; i++)
	{
		if (RealSpeedSet[i] + 20 < SetPoint[i])
			RealSpeedSet[i] += 20;
		else if (RealSpeedSet[i] > SetPoint[i] + 20)
			RealSpeedSet[i] -= 20;
		else
			RealSpeedSet[i] = SetPoint[i];
	}

	speed_control_runtimeout(20);
}