我正在尝试使用 ECAP 模块跟踪齿齿轮、并使用 ePWM 模块在特定时间发送脉冲。 但是、当 ePWM 触发时、ECAP 记录的事件时间不正确。
我已经按如下方式配置了 ECAP:
ECAP_STOPCounter (ECAP1_BASE); ECAP_enableCaptureMode (ECAP1_BASE); ECAP_setCaptureMode (ECAP1_base、ECAP_Continuous_CAPTURE_MODE、ECAP_EVENT_1); ECAP_setEventPolarity (ECAP1_base、ECAP_EVENT_1、ECAP_EVNT_RISTING _EDGE); ECAP_enableCounterResetOnEvent (ECAP1_base、ECAP_EVENT_1); eCAP_enableLoadCounter (ECAP1_base); ECAP_setSyncOutMode (ECAP1_base、ECAP_SYNC_OUT_SYNCI); ECAP_startCounter (ECAP1_base); ECAP_enableTimeStampCapture (ECAP1_BASE); eCAP_rearm (eCAP1_base); ECAP_enableInterrupt (ECAP1_base、(ECAP_ISR_SOURCE、CAPTURE_EVENT_1 | eCAP_ISR_SOURCE 计数器溢出); INTERRUPT_ENABLE (INT_ECAP1);
然后在 ECAP 的中断中、我使用以下代码测量事件:
periodCount = ECAP_getEventTimeStamp (ECAP1_base、ECAP_EVENT_1);
中断按预期工作。
但是、我在 ePWM 模块上设置了一个脉冲、当该脉冲执行时、我获得了一个针对 ECAP 模块的错误周期测量值。 我使用以下代码设置脉冲:
ePWM_setActionQualifierAction (EPWM1_base、 ePWM_AQ_OUTPUT A、 ePWM_AQ_OUTPUT 高电平、 ePWM_AQ_output_on_timebase_up_CMPA);
我设置一个数组来记录 ECAP 进行的每次测量。 齿齿轮的速度未改变。 当 ePWM 的操作执行时、ECAP 时序不正确。 您可以在以下数组中看到这一点:
我在这里迷路了。 我知道 ECAP 和 ePWM 可以同步它们的时钟、但我不知道它们之间会有何关联? 有人能解释一下吗?
编辑:我忘记了提到、当 ECAP 的时序不正确时、中断不会触发。 仅其事件时间不正确。