@@ -771,12 +771,32 @@ void _writeDutyCycle6PWM(float dc_a, float dc_b, float dc_c, PhaseState *phase_s
771
771
break ;
772
772
case _SOFTWARE_6PWM:
773
773
float dead_zone = ((STM32DriverParams*)params)->dead_zone / 2 .0f ;
774
- _setPwm (((STM32DriverParams*)params)->timers [0 ], ((STM32DriverParams*)params)->channels [0 ], _constrain (dc_a - dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
775
- _setPwm (((STM32DriverParams*)params)->timers [1 ], ((STM32DriverParams*)params)->channels [1 ], _constrain (dc_a + dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
776
- _setPwm (((STM32DriverParams*)params)->timers [2 ], ((STM32DriverParams*)params)->channels [2 ], _constrain (dc_b - dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
777
- _setPwm (((STM32DriverParams*)params)->timers [3 ], ((STM32DriverParams*)params)->channels [3 ], _constrain (dc_b + dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
778
- _setPwm (((STM32DriverParams*)params)->timers [4 ], ((STM32DriverParams*)params)->channels [4 ], _constrain (dc_c - dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
779
- _setPwm (((STM32DriverParams*)params)->timers [5 ], ((STM32DriverParams*)params)->channels [5 ], _constrain (dc_c + dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
774
+ if (phase_state[0 ] == PhaseState::PHASE_ON || phase_state[0 ] == PhaseState::PHASE_HI)
775
+ _setPwm (((STM32DriverParams*)params)->timers [0 ], ((STM32DriverParams*)params)->channels [0 ], _constrain (dc_a - dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
776
+ else
777
+ _setPwm (((STM32DriverParams*)params)->timers [0 ], ((STM32DriverParams*)params)->channels [0 ], 0 .0f , _PWM_RESOLUTION);
778
+ if (phase_state[0 ] == PhaseState::PHASE_ON || phase_state[0 ] == PhaseState::PHASE_LO)
779
+ _setPwm (((STM32DriverParams*)params)->timers [1 ], ((STM32DriverParams*)params)->channels [1 ], _constrain (dc_a + dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
780
+ else
781
+ _setPwm (((STM32DriverParams*)params)->timers [1 ], ((STM32DriverParams*)params)->channels [1 ], 0 .0f , _PWM_RESOLUTION);
782
+
783
+ if (phase_state[1 ] == PhaseState::PHASE_ON || phase_state[1 ] == PhaseState::PHASE_HI)
784
+ _setPwm (((STM32DriverParams*)params)->timers [2 ], ((STM32DriverParams*)params)->channels [2 ], _constrain (dc_b - dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
785
+ else
786
+ _setPwm (((STM32DriverParams*)params)->timers [2 ], ((STM32DriverParams*)params)->channels [2 ], 0 .0f , _PWM_RESOLUTION);
787
+ if (phase_state[1 ] == PhaseState::PHASE_ON || phase_state[1 ] == PhaseState::PHASE_LO)
788
+ _setPwm (((STM32DriverParams*)params)->timers [3 ], ((STM32DriverParams*)params)->channels [3 ], _constrain (dc_b + dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
789
+ else
790
+ _setPwm (((STM32DriverParams*)params)->timers [3 ], ((STM32DriverParams*)params)->channels [3 ], 0 .0f , _PWM_RESOLUTION);
791
+
792
+ if (phase_state[2 ] == PhaseState::PHASE_ON || phase_state[2 ] == PhaseState::PHASE_HI)
793
+ _setPwm (((STM32DriverParams*)params)->timers [4 ], ((STM32DriverParams*)params)->channels [4 ], _constrain (dc_c - dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
794
+ else
795
+ _setPwm (((STM32DriverParams*)params)->timers [4 ], ((STM32DriverParams*)params)->channels [4 ], 0 .0f , _PWM_RESOLUTION);
796
+ if (phase_state[2 ] == PhaseState::PHASE_ON || phase_state[2 ] == PhaseState::PHASE_LO)
797
+ _setPwm (((STM32DriverParams*)params)->timers [5 ], ((STM32DriverParams*)params)->channels [5 ], _constrain (dc_c + dead_zone, 0 .0f , 1 .0f )*_PWM_RANGE, _PWM_RESOLUTION);
798
+ else
799
+ _setPwm (((STM32DriverParams*)params)->timers [5 ], ((STM32DriverParams*)params)->channels [5 ], 0 .0f , _PWM_RESOLUTION);
780
800
break ;
781
801
}
782
802
_UNUSED (phase_state);
0 commit comments