Add SetCompare method to PWM channel
This commit is contained in:
parent
fe499d69f0
commit
13dcb08f94
@ -21,7 +21,7 @@ struct IO
|
||||
GPIO_TypeDef* port;
|
||||
std::uint16_t pin;
|
||||
|
||||
IO() = default;
|
||||
IO() = delete;
|
||||
IO(GPIO_TypeDef* port, const unsigned short pin);
|
||||
|
||||
void Set(const bool state);
|
||||
|
||||
@ -24,7 +24,7 @@ struct PwmChannel
|
||||
std::uint32_t timer_code;
|
||||
IO pin;
|
||||
|
||||
PwmChannel() = default;
|
||||
PwmChannel() = delete;
|
||||
|
||||
PwmChannel(TIM_HandleTypeDef* timer,
|
||||
const std::uint32_t channel,
|
||||
@ -36,6 +36,8 @@ struct PwmChannel
|
||||
|
||||
void Enable();
|
||||
void Disable();
|
||||
|
||||
void SetCompare(const std::uint32_t compare);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -28,34 +28,34 @@ void DualDrvMotors::Set(const std::int16_t left, const std::int16_t right)
|
||||
{
|
||||
if (left > 0)
|
||||
{
|
||||
__HAL_TIM_SET_COMPARE(_left.forward.timer, _left.forward.channel, left);
|
||||
__HAL_TIM_SET_COMPARE(_left.backward.timer, _left.backward.channel, 0);
|
||||
_left.forward.SetCompare(left);
|
||||
_left.backward.SetCompare(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
__HAL_TIM_SET_COMPARE(_left.forward.timer, _left.forward.channel, 0);
|
||||
__HAL_TIM_SET_COMPARE(_left.backward.timer, _left.backward.channel, (-1 * left));
|
||||
_left.forward.SetCompare(0);
|
||||
_left.backward.SetCompare(-1 * left);
|
||||
}
|
||||
|
||||
if (right > 0)
|
||||
{
|
||||
__HAL_TIM_SET_COMPARE(_right.forward.timer, _right.forward.channel, right);
|
||||
__HAL_TIM_SET_COMPARE(_right.backward.timer, _right.backward.channel, 0);
|
||||
_right.forward.SetCompare(right);
|
||||
_right.backward.SetCompare(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
__HAL_TIM_SET_COMPARE(_right.forward.timer, _right.forward.channel, 0);
|
||||
__HAL_TIM_SET_COMPARE(_right.backward.timer, _right.backward.channel, (-1 * right));
|
||||
_right.forward.SetCompare(0);
|
||||
_right.backward.SetCompare(-1 * right);
|
||||
}
|
||||
}
|
||||
|
||||
void DualDrvMotors::Coast()
|
||||
{
|
||||
__HAL_TIM_SET_COMPARE(_left.forward.timer, _left.forward.channel, 0);
|
||||
__HAL_TIM_SET_COMPARE(_left.backward.timer, _left.backward.channel, 0);
|
||||
_left.forward.SetCompare(0);
|
||||
_left.backward.SetCompare(0);
|
||||
|
||||
__HAL_TIM_SET_COMPARE(_right.forward.timer, _right.forward.channel, 0);
|
||||
__HAL_TIM_SET_COMPARE(_right.backward.timer, _right.backward.channel, 0);
|
||||
_right.forward.SetCompare(0);
|
||||
_right.backward.SetCompare(0);
|
||||
}
|
||||
|
||||
void DualDrvMotors::Break()
|
||||
|
||||
@ -55,4 +55,9 @@ void PwmChannel::Disable()
|
||||
HAL_TIM_PWM_Stop(timer, channel);
|
||||
}
|
||||
|
||||
void PwmChannel::SetCompare(const std::uint32_t compare)
|
||||
{
|
||||
__HAL_TIM_SET_COMPARE(timer, channel, compare);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user