diff --git a/MyDrivers/Timer.c b/MyDrivers/Timer.c index 61eb197..e969778 100644 --- a/MyDrivers/Timer.c +++ b/MyDrivers/Timer.c @@ -237,7 +237,11 @@ int Timer_encoder_getAngle(TIM_TypeDef * timer) return LL_TIM_GetCounter(timer); } -int Timer_encoder_getDirection(TIM_TypeDef * timer) +enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer) { - return LL_TIM_GetDirection(timer); + const int dir = LL_TIM_GetDirection(timer); + if (dir == LL_TIM_COUNTERDIRECTION_UP) + return CLOCKWISE; + else + return COUNTER_CLOCKWISE; } diff --git a/MyDrivers/Timer.h b/MyDrivers/Timer.h index a28ac9c..6580262 100644 --- a/MyDrivers/Timer.h +++ b/MyDrivers/Timer.h @@ -2,6 +2,13 @@ #define TIMER_H #include "stm32f103xb.h" +#include "stm32f1xx_ll_tim.h" // Pour les timers + +enum CounterDirection { + CLOCKWISE = LL_TIM_COUNTERDIRECTION_UP, + COUNTER_CLOCKWISE = LL_TIM_COUNTERDIRECTION_DOWN, +}; + /**************************************************************************** * INTERRUPTIONS @@ -125,6 +132,6 @@ int Timer_encoder_getAngle(TIM_TypeDef * timer); * @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @retval None */ -int Timer_encoder_getDirection(TIM_TypeDef * timer); +enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer); #endif diff --git a/Services/IncrementalEncoder.c b/Services/IncrementalEncoder.c index a799aa7..cefd96c 100644 --- a/Services/IncrementalEncoder.c +++ b/Services/IncrementalEncoder.c @@ -1 +1,24 @@ #include "IncrementalEncoder.h" + +#include "Timer.h" + +void IncrementalEncoder_conf(TIM_TypeDef * timer) +{ + Timer_encoder_conf(timer); + // TODO GPIO config +} + +void IncrementalEncoder_start(TIM_TypeDef * timer) +{ + Timer_start(timer); +} + +int IncrementalEncoder_getAngle(TIM_TypeDef * timer) +{ + return Timer_encoder_getAngle(timer); +} + +enum CounterDirection IncrementalEncoder_getDirection(TIM_TypeDef * timer) +{ + return Timer_encoder_getDirection(timer); +} diff --git a/Services/IncrementalEncoder.h b/Services/IncrementalEncoder.h index fc68d34..3137432 100644 --- a/Services/IncrementalEncoder.h +++ b/Services/IncrementalEncoder.h @@ -1,4 +1,38 @@ #ifndef INC_ENCODER_H #define INC_ENCODER_H +#include "stm32f103xb.h" + +/** + * @brief Configure le codeur incrémental associé au timer donné + * @note + * @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 + * @retval None + */ +void IncrementalEncoder_conf(TIM_TypeDef * timer); + +/** + * @brief Démarre le codeur incrémental associé au timer donné + * @note + * @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 + * @retval None + */ +void IncrementalEncoder_start(TIM_TypeDef * timer); + +/** + * @brief Récupère l'angle du codeur incrémental associé au timer donné + * @note + * @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 + * @retval int angle + */ +int IncrementalEncoder_getAngle(TIM_TypeDef * timer); + +/** + * @brief Récupère la direction du codeur incrémental associé au timer donné + * @note + * @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 + * @retval int dir + */ +enum CounterDirection IncrementalEncoder_getDirection(TIM_TypeDef * timer); + #endif