5
5
6
6
#define _PWM_RESOLUTION 12 // 12bit
7
7
#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
9
10
10
11
11
12
#define _HARDWARE_6PWM 1
@@ -188,8 +189,11 @@ int _interfaceType(const int pinA_h, const int pinA_l, const int pinB_h, const
188
189
// - Stepper motor - 2PWM setting
189
190
// - hardware speciffic
190
191
void _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
+
193
197
HardwareTimer* HT1 = _initPinPWM (pwm_frequency, pinA);
194
198
HardwareTimer* HT2 = _initPinPWM (pwm_frequency, pinB);
195
199
// allign the timers
@@ -201,8 +205,11 @@ void _configure2PWM(long pwm_frequency,const int pinA, const int pinB) {
201
205
// - BLDC motor - 3PWM setting
202
206
// - hardware speciffic
203
207
void _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
+
206
213
HardwareTimer* HT1 = _initPinPWM (pwm_frequency, pinA);
207
214
HardwareTimer* HT2 = _initPinPWM (pwm_frequency, pinB);
208
215
HardwareTimer* HT3 = _initPinPWM (pwm_frequency, pinC);
@@ -214,8 +221,11 @@ void _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const int
214
221
// - Stepper motor - 4PWM setting
215
222
// - hardware speciffic
216
223
void _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
+
219
229
HardwareTimer* HT1 = _initPinPWM (pwm_frequency, pinA);
220
230
HardwareTimer* HT2 = _initPinPWM (pwm_frequency, pinB);
221
231
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
262
272
// - BLDC driver - 6PWM setting
263
273
// - hardware specific
264
274
int _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 ;
267
279
268
280
// find configuration
269
281
int config = _interfaceType (pinA_h, pinA_l, pinB_h, pinB_l, pinC_h, pinC_l);
0 commit comments