fixed mcpwm
This commit is contained in:
@@ -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,7 +50,7 @@ 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);
|
||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
27
main/mcpwm.c
27
main/mcpwm.c
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user