55
66#define _PWM_RESOLUTION 12 // 12bit
77#define _PWM_RANGE 4095.0 // 2^12 -1 = 4095
8- #define _PWM_FREQUENCY 50000 // 50khz
8+ #define _PWM_FREQUENCY 25000 // 25khz
9+ #define _PWM_FREQUENCY_MAX 50000 // 50khz
910
1011
1112#define _HARDWARE_6PWM 1
@@ -188,8 +189,11 @@ int _interfaceType(const int pinA_h, const int pinA_l, const int pinB_h, const
188189// - Stepper motor - 2PWM setting
189190// - hardware speciffic
190191void _configure2PWM (long pwm_frequency,const int pinA, const int pinB) {
191- if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 50khz
192- else pwm_frequency = _constrain (pwm_frequency, 0 , _PWM_FREQUENCY); // constrain to 50kHz max
192+ if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 25khz
193+ else pwm_frequency = _constrain (pwm_frequency, 0 , _PWM_FREQUENCY_MAX); // constrain to 50kHz max
194+ // center-aligned frequency is uses two periods
195+ pwm_frequency *=2 ;
196+
193197 HardwareTimer* HT1 = _initPinPWM (pwm_frequency, pinA);
194198 HardwareTimer* HT2 = _initPinPWM (pwm_frequency, pinB);
195199 // allign the timers
@@ -201,8 +205,11 @@ void _configure2PWM(long pwm_frequency,const int pinA, const int pinB) {
201205// - BLDC motor - 3PWM setting
202206// - hardware speciffic
203207void _configure3PWM (long pwm_frequency,const int pinA, const int pinB, const int pinC) {
204- if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 50khz
205- else pwm_frequency = _constrain (pwm_frequency, 0 , _PWM_FREQUENCY); // constrain to 50kHz max
208+ if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 25khz
209+ else pwm_frequency = _constrain (pwm_frequency, 0 , _PWM_FREQUENCY_MAX); // constrain to 50kHz max
210+ // center-aligned frequency is uses two periods
211+ pwm_frequency *=2 ;
212+
206213 HardwareTimer* HT1 = _initPinPWM (pwm_frequency, pinA);
207214 HardwareTimer* HT2 = _initPinPWM (pwm_frequency, pinB);
208215 HardwareTimer* HT3 = _initPinPWM (pwm_frequency, pinC);
@@ -214,8 +221,11 @@ void _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const int
214221// - Stepper motor - 4PWM setting
215222// - hardware speciffic
216223void _configure4PWM (long pwm_frequency,const int pinA, const int pinB, const int pinC, const int pinD) {
217- if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 50khz
218- else pwm_frequency = _constrain (pwm_frequency, 0 , _PWM_FREQUENCY); // constrain to 50kHz max
224+ if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 25khz
225+ else pwm_frequency = _constrain (pwm_frequency, 0 , _PWM_FREQUENCY_MAX); // constrain to 50kHz max
226+ // center-aligned frequency is uses two periods
227+ pwm_frequency *=2 ;
228+
219229 HardwareTimer* HT1 = _initPinPWM (pwm_frequency, pinA);
220230 HardwareTimer* HT2 = _initPinPWM (pwm_frequency, pinB);
221231 HardwareTimer* HT3 = _initPinPWM (pwm_frequency, pinC);
@@ -262,8 +272,10 @@ void _writeDutyCycle4PWM(float dc_1a, float dc_1b, float dc_2a, float dc_2b, in
262272// - BLDC driver - 6PWM setting
263273// - hardware specific
264274int _configure6PWM (long pwm_frequency, float dead_zone, const int pinA_h, const int pinA_l, const int pinB_h, const int pinB_l, const int pinC_h, const int pinC_l){
265- if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 50khz
266- else pwm_frequency = _constrain (pwm_frequency, 0 , 100000 ); // constrain to 100kHz max
275+ if ( !pwm_frequency || pwm_frequency == NOT_SET) pwm_frequency = _PWM_FREQUENCY; // default frequency 25khz
276+ else pwm_frequency = _constrain (pwm_frequency, 0 , _PWM_FREQUENCY_MAX); // constrain to |%0kHz max
277+ // center-aligned frequency is uses two periods
278+ pwm_frequency *=2 ;
267279
268280 // find configuration
269281 int config = _interfaceType (pinA_h, pinA_l, pinB_h, pinB_l, pinC_h, pinC_l);
0 commit comments