| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * PWM.c
- *
- * Created on: 14 janv. 2019
- * Author: e_rcluze
- */
- #include "PWM.h"
- #include "tim.h"
- #include "gpio.h"
- void PWMSetDutyCycle(uint8_t sortie, uint8_t pourcentage) {
- TIM_OC_InitTypeDef sConfigOC;
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- sConfigOC.Pulse = PourcentageToValue(pourcentage);
- HAL_Delay(1);
- switch (sortie) {
- case S0:
- HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3);
- break;
- case S1:
- HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4);
- break;
- case S2:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1);
- break;
- case S3:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2);
- break;
- case S4:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3);
- break;
- case S5:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4);
- break;
- case S6:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1);
- break;
- case S7:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2);
- break;
- case S8:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3);
- break;
- case S9:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4);
- break;
- }
- }
- void PWMStart(uint8_t sortie) {
- switch (sortie) {
- case S0:
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
- break;
- case S1:
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4);
- break;
- case S2:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
- break;
- case S3:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
- break;
- case S4:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
- break;
- case S5:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
- break;
- case S6:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
- break;
- case S7:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
- break;
- case S8:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
- break;
- case S9:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
- break;
- }
- }
- uint16_t PourcentageToValue(uint8_t val){
- HAL_Delay(1);
- return (uint16_t)val * PWM_MAX;
- }
- uint8_t PWMPourcentage(Heure *heure, Sortie *sortie){
- Heure hd,he;
- HeureAjout(hd,sortie->Demmarage,sortie->Pente);
- HeureSuppr(he,sortie->Extinxtion,sortie->Pente);
- if ((CompareHeure(*heure,sortie->Demmarage)>=0) & (CompareHeure(*heure,hd)<0)){
- return (DiffHeure(*heure,sortie->Demmarage)/sortie->Pente)*sortie->PuissanceMax;
- }
- else if ((CompareHeure(*heure,hd)>=0) &(CompareHeure(*heure,he)<=0)){
- return sortie->PuissanceMax;
- }
- else if ((CompareHeure(*heure,hd)>0) & (CompareHeure(*heure,sortie->Extinxtion)<=0)){
- return (DiffHeure(sortie->Extinxtion,*heure)/sortie->Pente)*sortie->PuissanceMax;
- }
- else{
- return 0;
- }
- }
|