@@ -113,7 +113,13 @@ void _configureTimerFrequency(long pwm_frequency, mcpwm_dev_t* mcpwm_num, mcpwm
113
113
mcpwm_num->timer [1 ].timer_cfg0 .timer_period_upmethod = 0 ;
114
114
mcpwm_num->timer [2 ].timer_cfg0 .timer_period_upmethod = 0 ;
115
115
_delay (1 );
116
- // _delay(1);
116
+ mcpwm_num->operators [0 ].gen_stmp_cfg .gen_a_upmethod =2 ;
117
+ mcpwm_num->operators [0 ].gen_stmp_cfg .gen_b_upmethod =2 ;
118
+ mcpwm_num->operators [1 ].gen_stmp_cfg .gen_a_upmethod =2 ;
119
+ mcpwm_num->operators [1 ].gen_stmp_cfg .gen_b_upmethod =2 ;
120
+ mcpwm_num->operators [2 ].gen_stmp_cfg .gen_a_upmethod =2 ;
121
+ mcpwm_num->operators [2 ].gen_stmp_cfg .gen_b_upmethod =2 ;
122
+ _delay (1 );
117
123
// restart the timers
118
124
mcpwm_start (mcpwm_unit, MCPWM_TIMER_0);
119
125
mcpwm_start (mcpwm_unit, MCPWM_TIMER_1);
@@ -322,11 +328,16 @@ void _writeDutyCycle2PWM(float dc_a, float dc_b, void* params){
322
328
// - hardware speciffic
323
329
// ESP32 uses MCPWM
324
330
void IRAM_ATTR _writeDutyCycle3PWM (float dc_a, float dc_b, float dc_c, void * params){
325
- // se the PWM on the slot timers
331
+ // Use the PWM on the slot timers
326
332
// transform duty cycle from [0,1] to [0,100]
327
- mcpwm_set_duty (((ESP32MCPWMDriverParams*)params)->mcpwm_unit , MCPWM_TIMER_0, ((ESP32MCPWMDriverParams*)params)->mcpwm_operator1 , dc_a*100.0 );
328
- mcpwm_set_duty (((ESP32MCPWMDriverParams*)params)->mcpwm_unit , MCPWM_TIMER_1, ((ESP32MCPWMDriverParams*)params)->mcpwm_operator1 , dc_b*100.0 );
329
- mcpwm_set_duty (((ESP32MCPWMDriverParams*)params)->mcpwm_unit , MCPWM_TIMER_2, ((ESP32MCPWMDriverParams*)params)->mcpwm_operator1 , dc_c*100.0 );
333
+ ((ESP32MCPWMDriverParams *)params)->mcpwm_dev ->operators [0 ].timestamp [0 ].gen = ((ESP32MCPWMDriverParams *)params)->mcpwm_dev -> timer[0 ].timer_cfg0 .timer_period * dc_a;
334
+ ((ESP32MCPWMDriverParams *)params)->mcpwm_dev ->operators [1 ].timestamp [0 ].gen = ((ESP32MCPWMDriverParams *)params)->mcpwm_dev -> timer[1 ].timer_cfg0 .timer_period * dc_b;
335
+ ((ESP32MCPWMDriverParams *)params)->mcpwm_dev ->operators [2 ].timestamp [0 ].gen = ((ESP32MCPWMDriverParams *)params)->mcpwm_dev -> timer[2 ].timer_cfg0 .timer_period * dc_c;
336
+
337
+ // mcpwm_set_duty(((ESP32MCPWMDriverParams*)params)->mcpwm_unit, MCPWM_TIMER_0, ((ESP32MCPWMDriverParams*)params)->mcpwm_operator1, dc_a*100.0);
338
+ // mcpwm_set_duty(((ESP32MCPWMDriverParams*)params)->mcpwm_unit, MCPWM_TIMER_1, ((ESP32MCPWMDriverParams*)params)->mcpwm_operator1, dc_b*100.0);
339
+ // mcpwm_set_duty(((ESP32MCPWMDriverParams*)params)->mcpwm_unit, MCPWM_TIMER_2, ((ESP32MCPWMDriverParams*)params)->mcpwm_operator1, dc_c*100.0);
340
+
330
341
}
331
342
332
343
bool IRAM_ATTR _getPwmState (void * params){
0 commit comments