diff --git a/motor/mc_interface.c b/motor/mc_interface.c index dbaa3cc6..635ecd60 100644 --- a/motor/mc_interface.c +++ b/motor/mc_interface.c @@ -2164,8 +2164,8 @@ void mc_interface_mc_timer_isr(bool is_second_motor) { } if (state == MC_STATE_DETECTING) { - m_curr0_samples[m_sample_now] = (int16_t)mcpwm_detect_currents[mcpwm_get_comm_step() - 1]; - m_curr1_samples[m_sample_now] = (int16_t)mcpwm_detect_currents_diff[mcpwm_get_comm_step() - 1]; + m_curr0_samples[m_sample_now] = (int16_t)(mcpwm_detect_currents[mcpwm_get_comm_step() - 1] * (8.0 / FAC_CURRENT)); + m_curr1_samples[m_sample_now] = (int16_t)(mcpwm_detect_currents_diff[mcpwm_get_comm_step() - 1] * (8.0 / FAC_CURRENT)); m_curr2_samples[m_sample_now] = 0; m_ph1_samples[m_sample_now] = (int16_t)mcpwm_detect_voltages[0]; @@ -2178,9 +2178,9 @@ void mc_interface_mc_timer_isr(bool is_second_motor) { m_curr1_samples[m_sample_now] = ADC_curr_raw[4]; m_curr2_samples[m_sample_now] = ADC_curr_raw[5]; } else { - m_curr0_samples[m_sample_now] = ADC_curr_norm_value[3]; - m_curr1_samples[m_sample_now] = ADC_curr_norm_value[4]; - m_curr2_samples[m_sample_now] = ADC_curr_norm_value[5]; + m_curr0_samples[m_sample_now] = ADC_curr_norm_value[3] * (8.0 / FAC_CURRENT); + m_curr1_samples[m_sample_now] = ADC_curr_norm_value[4] * (8.0 / FAC_CURRENT); + m_curr2_samples[m_sample_now] = ADC_curr_norm_value[5] * (8.0 / FAC_CURRENT); } m_ph1_samples[m_sample_now] = ADC_V_L4 - zero; @@ -2192,9 +2192,9 @@ void mc_interface_mc_timer_isr(bool is_second_motor) { m_curr1_samples[m_sample_now] = ADC_curr_raw[1]; m_curr2_samples[m_sample_now] = ADC_curr_raw[2]; } else { - m_curr0_samples[m_sample_now] = ADC_curr_norm_value[0]; - m_curr1_samples[m_sample_now] = ADC_curr_norm_value[1]; - m_curr2_samples[m_sample_now] = ADC_curr_norm_value[2]; + m_curr0_samples[m_sample_now] = ADC_curr_norm_value[0] * (8.0 / FAC_CURRENT); + m_curr1_samples[m_sample_now] = ADC_curr_norm_value[1] * (8.0 / FAC_CURRENT); + m_curr2_samples[m_sample_now] = ADC_curr_norm_value[2] * (8.0 / FAC_CURRENT); } m_ph1_samples[m_sample_now] = ADC_V_L1 - zero; @@ -2895,9 +2895,9 @@ static THD_FUNCTION(sample_send_thread, arg) { buffer_append_float32_auto(buffer, (float)m_vzero_samples[ind_samp], &index); buffer_append_float32_auto(buffer, (float)m_curr_fir_samples[ind_samp], &index); } else { - buffer_append_float32_auto(buffer, (float)m_curr0_samples[ind_samp], &index); - buffer_append_float32_auto(buffer, (float)m_curr1_samples[ind_samp], &index); - buffer_append_float32_auto(buffer, (float)m_curr2_samples[ind_samp], &index); + buffer_append_float32_auto(buffer, (float)m_curr0_samples[ind_samp] / (8.0 / FAC_CURRENT), &index); + buffer_append_float32_auto(buffer, (float)m_curr1_samples[ind_samp] / (8.0 / FAC_CURRENT), &index); + buffer_append_float32_auto(buffer, (float)m_curr2_samples[ind_samp] / (8.0 / FAC_CURRENT), &index); buffer_append_float32_auto(buffer, ((float)m_ph1_samples[ind_samp] / 4096.0 * V_REG) * ((VIN_R1 + VIN_R2) / VIN_R2) * ADC_VOLTS_PH_FACTOR, &index); buffer_append_float32_auto(buffer, ((float)m_ph2_samples[ind_samp] / 4096.0 * V_REG) * ((VIN_R1 + VIN_R2) / VIN_R2) * ADC_VOLTS_PH_FACTOR, &index); buffer_append_float32_auto(buffer, ((float)m_ph3_samples[ind_samp] / 4096.0 * V_REG) * ((VIN_R1 + VIN_R2) / VIN_R2) * ADC_VOLTS_PH_FACTOR, &index); diff --git a/motor/mcpwm.c b/motor/mcpwm.c index 3801e6c7..74c5462e 100644 --- a/motor/mcpwm.c +++ b/motor/mcpwm.c @@ -1457,14 +1457,14 @@ static THD_FUNCTION(timer_thread, arg) { void mcpwm_adc_inj_int_handler(void) { uint32_t t_start = timer_time_now(); - int curr0 = HW_GET_INJ_CURR1(); - int curr1 = HW_GET_INJ_CURR2(); + float curr0 = HW_GET_INJ_CURR1(); + float curr1 = HW_GET_INJ_CURR2(); - int curr0_2 = HW_GET_INJ_CURR1_S2(); - int curr1_2 = HW_GET_INJ_CURR1_S2(); + float curr0_2 = HW_GET_INJ_CURR1_S2(); + float curr1_2 = HW_GET_INJ_CURR1_S2(); #ifdef HW_HAS_3_SHUNTS - int curr2 = HW_GET_INJ_CURR3(); + float curr2 = HW_GET_INJ_CURR3(); #endif #ifdef INVERTED_SHUNT_POLARITY