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; bool RFE_Pulled = false;
uint16_t menu_counter = 0; uint16_t menu_counter = 0;
float duty = (float)CONFIG_DUTY_PWM; float duty = (float)CONFIG_DUTY_PWM;
duty = 75.0; duty = 15.0;
char display_message[50]; // Puffer für die Nachricht char display_message[50]; // Puffer für die Nachricht
bool enc_but_state = false; bool enc_but_state = false;
bool in_menu = false; bool in_menu = false;
@@ -50,11 +50,11 @@ void app_main(void)
mcpwm_init(); mcpwm_init();
set_mcpwm_output(PHASE_U, PHASE_V, PHASE_W); set_mcpwm_output(PHASE_U, PHASE_V, PHASE_W);
set_enc_in_counter(menu_counter); set_enc_in_counter(menu_counter);
mcpwm_freq = 40000; mcpwm_freq = 20000;
set_mcpwm_duty(duty); set_mcpwm_duty(duty);
set_mcpwm_frequency(mcpwm_freq); set_mcpwm_frequency(mcpwm_freq);
set_mcpwm_output(PHASE_U, PHASE_W, PHASE_V); set_mcpwm_output(PHASE_U, PHASE_W, PHASE_V);
//gpio_set_level(CONFIG_HIN_V_GPIO, 1); //gpio_set_level(CONFIG_HIN_V_GPIO, 1);
while (1) { while (1) {
//ssd1306_clear_screen(dev_pt, false); //ssd1306_clear_screen(dev_pt, false);
@@ -77,7 +77,8 @@ void app_main(void)
RFE_Pulled = !(gpio_get_level(CONFIG_RFE_GPIO)); 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); //Current_bridge = get_current_bridge(adc1_handle, CONFIG_I_SENSE_ADC);
//gpio_set_level(CONFIG_LIN_U_GPIO,1); //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_sync_handle_t sync_signal = NULL;
mcpwm_timer_sync_src_config_t sync_src_config = 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, .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)); 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_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))); 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)); ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, 0,true));
break; break;
case PHASE_V: 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_V_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_LIN, 0,true));
break; break;
case PHASE_W: 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_W_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_LIN, 0,true));
break; break;
default: default:
@@ -227,12 +227,12 @@ static void set_highside(Phase highside){
ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, -1,true)); ESP_ERROR_CHECK(mcpwm_generator_set_force_level(generator_U_LIN, -1,true));
break; break;
case PHASE_V: 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_V_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_LIN, -1,true));
break; break;
case PHASE_W: 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_W_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_LIN, -1,true));
break; break;
default: default:
@@ -265,10 +265,11 @@ esp_err_t set_mcpwm_output(Phase highside, Phase lowside, Phase inactive){
if (timer_U == NULL) { if (timer_U == NULL) {
return ESP_ERR_INVALID_STATE; // Fehlerbehandlung, wenn mcpwm nicht initialisiert wurde return ESP_ERR_INVALID_STATE; // Fehlerbehandlung, wenn mcpwm nicht initialisiert wurde
} }
conf_gen(); set_mcpwm_duty(duty);
set_inactive(inactive); set_inactive(inactive);
set_highside(highside); set_highside(highside);
set_lowside(lowside); set_lowside(lowside);
conf_gens();
return ESP_OK; 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 return ESP_ERR_INVALID_STATE; // Fehlerbehandlung, wenn mcpwm nicht initialisiert wurde
} }
duty = new_duty; 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; return ESP_OK;
} }