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:
Euan 2024-02-07 22:04:06 +00:00
parent e26a2bac38
commit 5e66bb4387
2 changed files with 16 additions and 16 deletions

View File

@ -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);

View File

@ -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