|
|
@@ -120,44 +120,40 @@ void phase_current_get(s16 *iABC){
|
|
|
}
|
|
|
|
|
|
|
|
|
-u32 phase_current_point(u8 *sector, u16 *duty, u16 low, u16 midle){
|
|
|
+void phase_current_point(void *p){
|
|
|
+ FOC_OutP *out = p;
|
|
|
current_samp_t *cs = &g_cs;
|
|
|
- phase_time_t *time = &cs->time;
|
|
|
- u32 low_side_low_duty = FOC_PWM_Half_Period - low;
|
|
|
- u32 low_side_mid_duty = FOC_PWM_Half_Period - midle;
|
|
|
- cs->sector = *sector;
|
|
|
- time->Samp_p1 = FOC_PWM_Half_Period + 1;
|
|
|
- time->Samp_p2 = FOC_PWM_Half_Period + 1;
|
|
|
+ u32 low_side_low_duty = FOC_PWM_Half_Period - out->n_lowDuty;
|
|
|
+ u32 low_side_mid_duty = FOC_PWM_Half_Period - out->n_midDuty;
|
|
|
+ cs->sector = out->n_Sector;
|
|
|
+ out->n_Sample1 = FOC_PWM_Half_Period + 1;
|
|
|
+ out->n_Sample2 = FOC_PWM_Half_Period + 1;
|
|
|
/*底边开mos的时间是2倍的 low_side_low_duty(一个周期)*/
|
|
|
if (low_side_low_duty * 2 >= TSampleMIN) { //可以采样
|
|
|
if (low_side_low_duty >= (TADC + TDead)) {//可以在pwm的中心点采样
|
|
|
- time->Samp_p1 = FOC_PWM_Half_Period - 1;
|
|
|
+ out->n_Sample1 = FOC_PWM_Half_Period - 1;
|
|
|
cs->sector = SECTOR_1;
|
|
|
}else {
|
|
|
- u32 Samp_p = low + TSampleBefore;
|
|
|
+ u32 Samp_p = out->n_lowDuty + TSampleBefore;
|
|
|
if (Samp_p >= FOC_PWM_Half_Period) { //需要在pwm中心点过后采样,需要配置PWM0模式
|
|
|
- time->Samp_p2 = ( 2u * FOC_PWM_Half_Period ) - Samp_p - (uint16_t) 1;
|
|
|
+ out->n_Sample2 = ( 2u * FOC_PWM_Half_Period ) - Samp_p - (uint16_t) 1;
|
|
|
}else {
|
|
|
- time->Samp_p1 = Samp_p;
|
|
|
+ out->n_Sample1 = Samp_p;
|
|
|
}
|
|
|
}
|
|
|
}else if (low_side_mid_duty * 2 >= TSampleMIN){
|
|
|
if (low_side_mid_duty >= (TADC + TDead)) {//可以在pwm的中心点采样
|
|
|
- time->Samp_p1 = FOC_PWM_Half_Period - 1;
|
|
|
+ out->n_Sample1 = FOC_PWM_Half_Period - 1;
|
|
|
}else {
|
|
|
- u32 Samp_p = midle + TSampleBefore;
|
|
|
+ u32 Samp_p = out->n_midDuty + TSampleBefore;
|
|
|
if (Samp_p >= FOC_PWM_Half_Period) { //需要在pwm中心点过后采样,需要配置PWM0模式
|
|
|
- time->Samp_p2 = ( 2u * FOC_PWM_Half_Period ) - Samp_p - (uint16_t) 1;
|
|
|
+ out->n_Sample2 = ( 2u * FOC_PWM_Half_Period ) - Samp_p - (uint16_t) 1;
|
|
|
}else {
|
|
|
- time->Samp_p1 = Samp_p;
|
|
|
+ out->n_Sample1 = Samp_p;
|
|
|
}
|
|
|
}
|
|
|
- }else {
|
|
|
- time->three_shunts_flags = 1; //means do'nt use the sample current
|
|
|
- time->Samp_p1 = FOC_PWM_Half_Period - 1;//dumy trigger
|
|
|
}
|
|
|
- *sector = cs->sector;
|
|
|
- return (time->Samp_p1 | time->Samp_p2<<16);
|
|
|
+ out->n_Sector = cs->sector;
|
|
|
}
|
|
|
|
|
|
|