Sfoglia il codice sorgente

修复ACT时间切段异常

Signed-off-by: hanyongwei <2043702190@qq.com>
dev1
hanyongwei 3 settimane fa
parent
commit
1941ee6b05
2 ha cambiato i file con 1212 aggiunte e 1202 eliminazioni
  1. +1200
    -1200
      iar/plsr.dep
  2. +12
    -2
      plsr/run_control/plsr_run_control.c

+ 1200
- 1200
iar/plsr.dep
File diff soppresso perché troppo grande
Vedi File


+ 12
- 2
plsr/run_control/plsr_run_control.c Vedi File

@@ -1463,9 +1463,13 @@ static void PlsrRunControlBeginSeg(uint16_t seg_idx0)

if (s_follow_cont != 0U)
{
/* 分支 A:段间无缝(FOLLOW 或 ACT handoff),PWM 已在跑 */
/* 分支 A:段间无缝(FOLLOW 或 ACT handoff) */
PlsrPulseDriverClearOnePulseStop();
PlsrRunControlRefreshProfile(0U);
/*
* FOLLOW 真不停表:do_start=0 只改频。
* ACT 经 OPM 边界停表后 s_pwm_on 已为 0:须 Start 重开,否则无脉冲卡死。
*/
PlsrRunControlRefreshProfile((s_pwm_on == 0U) ? 1U : 0U);
s_state = RC_RUN;
s_follow_cont = 0U;
PlsrRunControlArmActExtOnPulseStart();
@@ -1887,6 +1891,12 @@ void PlsrRunControlOnPulseIsr(void)
{
s_act_cut_pending = 0U;
s_act_handoff_keep = 1U;
/*
* TIM5 已 ArmOnePulseStop:本拍 UPDATE 后计数器会停。
* 必须清 s_pwm_on,否则 ActExpire 同向衔接走 RefreshProfile(0)
* 时误判「表仍在跑」而不 Start,卡死在下一段入口。
*/
s_pwm_on = 0U;
s_state = RC_IDLE;
s_act_expire_req = 1U;
PlsrRunControlWakePost();


Caricamento…
Annulla
Salva