@@ -1589,21 +1589,24 @@ void mc_interface_mc_timer_isr(bool is_second_motor) {
1589
1589
// functions. That will make this interrupt run a bit faster.
1590
1590
mc_state state ;
1591
1591
float current ;
1592
- float current_in ;
1592
+ float current_filtered ;
1593
+ float current_in_filtered ;
1593
1594
float abs_current ;
1594
1595
float abs_current_filtered ;
1595
1596
if (conf_now -> motor_type == MOTOR_TYPE_FOC ) {
1596
1597
state = mcpwm_foc_get_state_motor (is_second_motor );
1597
- current = mcpwm_foc_get_tot_current_filtered_motor (is_second_motor );
1598
- current_in = mcpwm_foc_get_tot_current_in_filtered_motor (is_second_motor );
1598
+ current = mcpwm_foc_get_tot_current_motor (is_second_motor );
1599
+ current_filtered = mcpwm_foc_get_tot_current_filtered_motor (is_second_motor );
1600
+ current_in_filtered = mcpwm_foc_get_tot_current_in_filtered_motor (is_second_motor );
1599
1601
abs_current = mcpwm_foc_get_abs_motor_current_motor (is_second_motor );
1600
1602
abs_current_filtered = mcpwm_foc_get_abs_motor_current_filtered_motor (is_second_motor );
1601
1603
} else {
1602
1604
state = mcpwm_get_state ();
1603
- current = mcpwm_get_tot_current_filtered ();
1604
- current_in = mcpwm_get_tot_current_in_filtered ();
1605
+ current = mcpwm_get_tot_current ();
1606
+ current_filtered = mcpwm_get_tot_current_filtered ();
1607
+ current_in_filtered = mcpwm_get_tot_current_in_filtered ();
1605
1608
abs_current = mcpwm_get_tot_current ();
1606
- abs_current_filtered = current ;
1609
+ abs_current_filtered = current_filtered ;
1607
1610
}
1608
1611
1609
1612
if (state == MC_STATE_RUNNING ) {
@@ -1616,8 +1619,8 @@ void mc_interface_mc_timer_isr(bool is_second_motor) {
1616
1619
pwn_done_func ();
1617
1620
}
1618
1621
1619
- motor -> m_motor_current_sum += current ;
1620
- motor -> m_input_current_sum += current_in ;
1622
+ motor -> m_motor_current_sum += current_filtered ;
1623
+ motor -> m_input_current_sum += current_in_filtered ;
1621
1624
motor -> m_motor_current_iterations ++ ;
1622
1625
motor -> m_input_current_iterations ++ ;
1623
1626
@@ -1670,12 +1673,12 @@ void mc_interface_mc_timer_isr(bool is_second_motor) {
1670
1673
float f_samp = motor -> m_f_samp_now ;
1671
1674
1672
1675
// Watt and ah counters
1673
- if (fabsf (current ) > 1.0 ) {
1676
+ if (fabsf (current_filtered ) > 1.0 ) {
1674
1677
// Some extra filtering
1675
1678
static float curr_diff_sum = 0.0 ;
1676
1679
static float curr_diff_samples = 0 ;
1677
1680
1678
- curr_diff_sum += current_in / f_samp ;
1681
+ curr_diff_sum += current_in_filtered / f_samp ;
1679
1682
curr_diff_samples += 1.0 / f_samp ;
1680
1683
1681
1684
if (curr_diff_samples >= 0.01 ) {
@@ -1841,7 +1844,7 @@ void mc_interface_mc_timer_isr(bool is_second_motor) {
1841
1844
}
1842
1845
1843
1846
m_vzero_samples [m_sample_now ] = zero ;
1844
- m_curr_fir_samples [m_sample_now ] = (int16_t )(mc_interface_get_tot_current () * (8.0 / FAC_CURRENT ));
1847
+ m_curr_fir_samples [m_sample_now ] = (int16_t )(current * (8.0 / FAC_CURRENT ));
1845
1848
m_f_sw_samples [m_sample_now ] = (int16_t )(f_samp / 10.0 );
1846
1849
m_status_samples [m_sample_now ] = mcpwm_get_comm_step () | (mcpwm_read_hall_phase () << 3 );
1847
1850
0 commit comments