fixed mcpwm

This commit is contained in:
2025-02-05 23:56:42 +01:00
parent d98977432e
commit b48361f32d
2 changed files with 20 additions and 16 deletions

View File

@@ -39,7 +39,7 @@ void app_main(void)
bool RFE_Pulled = false;
uint16_t menu_counter = 0;
float duty = (float)CONFIG_DUTY_PWM;
duty = 75.0;
duty = 15.0;
char display_message[50]; // Puffer für die Nachricht
bool enc_but_state = false;
bool in_menu = false;
@@ -50,11 +50,11 @@ void app_main(void)
mcpwm_init();
set_mcpwm_output(PHASE_U, PHASE_V, PHASE_W);
set_enc_in_counter(menu_counter);
mcpwm_freq = 40000;
mcpwm_freq = 20000;
set_mcpwm_duty(duty);
set_mcpwm_frequency(mcpwm_freq);
set_mcpwm_output(PHASE_U, PHASE_W, PHASE_V);
//gpio_set_level(CONFIG_HIN_V_GPIO, 1);
while (1) {
//ssd1306_clear_screen(dev_pt, false);
@@ -77,7 +77,8 @@ void app_main(void)
RFE_Pulled = !(gpio_get_level(CONFIG_RFE_GPIO));
get_enc_in_counter();
duty = get_enc_in_counter();
set_mcpwm_duty(duty);
//Current_bridge = get_current_bridge(adc1_handle, CONFIG_I_SENSE_ADC);
//gpio_set_level(CONFIG_LIN_U_GPIO,1);

View File

@@ -67,7 +67,7 @@ void mcpwm_init(){
mcpwm_sync_handle_t sync_signal = NULL;
mcpwm_timer_sync_src_config_t sync_src_config =
{
.flags.propagate_input_sync = false,
.flags.propagate_input_sync = SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX,
.timer_event = MCPWM_TIMER_EVENT_EMPTY,
};
@@ -176,7 +176,7 @@ void mcpwm_init(){
ESP_ERROR_CHECK(mcpwm_generator_set_dead_time(generator_W_HIN, generator_W_LIN, &deadtime_config));
}
static void conf_gens(Phase phase){
static void conf_gens(){
ESP_ERROR_CHECK(mcpwm_generator_set_action_on_compare_event(generator_U_HIN, MCPWM_GEN_COMPARE_EVENT_ACTION(MCPWM_TIMER_DIRECTION_UP, comperator_U, MCPWM_GEN_ACTION_LOW)));
ESP_ERROR_CHECK(mcpwm_generator_set_action_on_compare_event(generator_U_HIN, MCPWM_GEN_COMPARE_EVENT_ACTION(MCPWM_TIMER_DIRECTION_DOWN, comperator_U, MCPWM_GEN_ACTION_HIGH)));
@@ -205,12 +205,12 @@ static void set_lowside(Phase lowside){
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, 0,true));
break;
case PHASE_V:
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_HIN, 0,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, 0,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_V_HIN, 0,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_V_LIN, 0,true));
break;
case PHASE_W:
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_HIN, 0,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, 0,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_W_HIN, 0,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_W_LIN, 0,true));
break;
default:
@@ -227,12 +227,12 @@ static void set_highside(Phase highside){
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, -1,true));
break;
case PHASE_V:
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_HIN, -1,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, -1,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_V_HIN, -1,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_V_LIN, -1,true));
break;
case PHASE_W:
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_HIN, -1,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, -1,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_W_HIN, -1,true));
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_W_LIN, -1,true));
break;
default:
@@ -265,10 +265,11 @@ esp_err_t set_mcpwm_output(Phase highside, Phase lowside, Phase inactive){
if (timer_U == NULL) {
return ESP_ERR_INVALID_STATE; // Fehlerbehandlung, wenn mcpwm nicht initialisiert wurde
}
conf_gen();
set_mcpwm_duty(duty);
set_inactive(inactive);
set_highside(highside);
set_lowside(lowside);
conf_gens();
return ESP_OK;
}
@@ -277,7 +278,9 @@ esp_err_t set_mcpwm_duty(float new_duty){
return ESP_ERR_INVALID_STATE; // Fehlerbehandlung, wenn mcpwm nicht initialisiert wurde
}
duty = new_duty;
conf_gen();
ESP_ERROR_CHECK(mcpwm_comparator_set_compare_value(comperator_U, (periode_ticks*duty/100)/2));
ESP_ERROR_CHECK(mcpwm_comparator_set_compare_value(comperator_V, (periode_ticks*duty/100)/2));
ESP_ERROR_CHECK(mcpwm_comparator_set_compare_value(comperator_W, (periode_ticks*duty/100)/2));
return ESP_OK;
}