| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /*
- * 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 1:
- HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3);
- break;
- case 2:
- HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4);
- break;
- case 3:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1);
- break;
- case 4:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2);
- break;
- case 5:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3);
- break;
- case 6:
- HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4);
- break;
- case 7:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1);
- break;
- case 8:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2);
- break;
- case 9:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3);
- break;
- case 10:
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4);
- break;
- }
- }
- void PWMStart(uint8_t sortie) {
- switch (sortie) {
- case 1:
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
- break;
- case 2:
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4);
- break;
- case 3:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
- break;
- case 4:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
- break;
- case 5:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
- break;
- case 6:
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
- break;
- case 7:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
- break;
- case 8:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
- break;
- case 9:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
- break;
- case 10:
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
- break;
- }
- }
- void PWMStop(uint8_t sortie) {
- switch (sortie) {
- case 1:
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
- break;
- case 2:
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4);
- break;
- case 3:
- HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
- break;
- case 4:
- HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_2);
- break;
- case 5:
- HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3);
- break;
- case 6:
- HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_4);
- break;
- case 7:
- HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_1);
- break;
- case 8:
- HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_2);
- break;
- case 9:
- HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_3);
- break;
- case 10:
- HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_4);
- break;
- }
- }
- uint16_t PourcentageToValue(uint8_t val) {
- float t = ((100-val) * PWM_MAX) / 100; //Logic inverse (si 0 alors allumé si 1 alors eteint)
- return (uint16_t) t;
- }
- uint8_t POWMAX(uint8_t sortie){
- switch (sortie) {
- case 1://
- return 100;
- break;
- case 2://Jaune
- return 20;
- break;
- case 3://Bleu
- return 100;
- break;
- case 4://Jaune
- return 20;
- break;
- case 5://Rouge
- return 20;
- break;
- case 6://UV
- return 50;
- break;
- case 7:
- return 0;
- break;
- case 8:
- return 0;
- break;
- case 9:
- return 0;
- break;
- case 10:
- return 0;
- break;
- default :
- return 0;
- break;
- }
- }
|