Added support for working via timer
This commit is contained in:
@@ -1,7 +1,16 @@
|
||||
#include "Encoder.h"
|
||||
|
||||
|
||||
void DS_EncoderInitTim(DS_Encoder *Encoder, TIM_HandleTypeDef *hTim)
|
||||
{
|
||||
Encoder->hTim = hTim;
|
||||
Encoder->State = 0;
|
||||
HAL_TIM_Base_Start(Encoder->hTim);
|
||||
}
|
||||
|
||||
void DS_EncoderInit(DS_Encoder *Encoder, GPIO_TypeDef *PortSignal1, uint16_t PinSignal1, GPIO_TypeDef *PortSignal2, uint16_t PinSignal2)
|
||||
{
|
||||
Encoder->hTim = 0;
|
||||
Encoder->Direction = 0;
|
||||
Encoder->State = 0;
|
||||
Encoder->PrevTick = HAL_GetTick();
|
||||
@@ -72,7 +81,19 @@ void DS_EncoderUpdate(DS_Encoder *Encoder)
|
||||
|
||||
int8_t DS_EncoderGetState(DS_Encoder *Encoder)
|
||||
{
|
||||
int8_t ValueToReturn = Encoder->State;
|
||||
Encoder->State = 0;
|
||||
return ValueToReturn;
|
||||
if(Encoder->hTim != 0)
|
||||
{
|
||||
int8_t CurrentCounter = Encoder->hTim->Instance->CNT / 4;
|
||||
int8_t ValueToReturn = CurrentCounter - Encoder->State;
|
||||
Encoder->State = CurrentCounter;
|
||||
return ValueToReturn;
|
||||
}
|
||||
else
|
||||
{
|
||||
int8_t ValueToReturn = Encoder->State;
|
||||
Encoder->State = 0;
|
||||
return ValueToReturn;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user