diff --git a/MyDrivers/Timer.c b/MyDrivers/Timer.c index b0b5cad..023998d 100644 --- a/MyDrivers/Timer.c +++ b/MyDrivers/Timer.c @@ -165,7 +165,41 @@ void Timer_conf(TIM_TypeDef * timer, int arr, int psc) /**************************************************************************** * PWM INPUT ***************************************************************************/ +void PWMi_conf(TIM_TypeDef * TIMx, uint32_t channels){ + //Periode à recuperer dans TIMx_CCR1, duty cycle dans TIMx_CCR2 + // Validation horloge locale + if (TIMx == TIM1) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_TIM1); + else if (TIMx == TIM2) LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2); + else if (TIMx == TIM3) LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM3); + else LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM4); + + //LL_TIM_CC_EnableChannel(TIMx, channels); + //LL_TIM_IC_Init + TIMx -> CCMR1 |= TIM_CCMR1_CC1S_0; //01 + //TIM_CCMR1_IC1F_0; Potentiellement utile, à voir plus tard + TIMx -> CCER &= ~(TIM_CCER_CC1P); //0 = Rising edge + TIMx -> CCMR1 &= ~(TIM_CCMR1_IC1PSC); + + TIMx -> CCMR1 |= TIM_CCMR1_CC2S_1; + TIMx -> CCER |= TIM_CCER_CC2P; + TIMx -> SMCR |= TIM_SMCR_TS_0 | TIM_SMCR_TS_2; //101 + TIMx -> SMCR |= TIM_SMCR_SMS_2; //100 + + TIMx -> CCER |= TIM_CCER_CC1E; + TIMx -> CCER |= TIM_CCER_CC2E; + TIMx -> DIER |= TIM_DIER_CC1IE; + //TIM_DIER_CC1DE_Pos; Probablement pas utile +} +int get_input_period(TIM_TypeDef * TIMx) { + + return TIMx -> CCR1; +} + +int get_input_duty_cycle(TIM_TypeDef * TIMx) { + + return TIMx -> CCR2; +} /**************************************************************************** * PWM OUTPUT