mirror of https://github.com/rusefi/bldc.git
Scale sampled data properly
Needs to be rescaled back to int for storage, 8* higher resolution so the hw can use oversampling. BLDC can use floats for these variables, since they get changed to floats later anyway. Might as well do it earlier to make the code simpler.
This commit is contained in:
parent
e26a2bac38
commit
5e66bb4387
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue