主题中讨论的其他器件:SysConfig
您好!
我的目的是读取输入 PWM 信号的频率和占空比。 当输入信号的占空比为50%时、频率被正确读取。 但是、当我将占空比设置为75%时、频率会发生变化、这与直流不同。
示例:1800hz,输入信号的 DC 为50%。 输入信号的75%时。 频率更改为3600 Hz、DC 保持不变。
我将使用以下公式来计算此参数:
DebugP_log ("freq! %d\r\n"、1000000000/(5*(cap1Count- cap2Count)+5*(cap1Count- cap3Count));//miseconds
DebugP_log ("Duty! %d%'%\r\n"、100*5*(cap1Count- cap2Count)/(5*(cap1Count - cap3Count)+ 5 *(cap1Count - cap4Count));
设置与 ECAP_CAPTURE_PWM 项目的设置相同。
在中断中设置了 eCAP 时间戳
静态 void App_ecapIntrISR (void *句柄)
{
volatile uint16_t status;
状态= ECAP_getInterruptSource (gEcapBaseAddr);
if (status 和 ECAP_ISR_SOURCE_CAPTURE_EVENT_4)
{
//获取捕获计数。 每次捕获应是 ePWM 计数的4倍
//由于 ePWM 时钟分频器。
cap1Count = ECAP_getEventTimeStamp (gEcapBaseAddr、ECAP_EVENT_1);
cap2Count = ECAP_getEventTimeStamp (gEcapBaseAddr、ECAP_EVENT_2);
cap3Count = ECAP_getEventTimeStamp (gEcapBaseAddr、ECAP_EVENT_3);
cap4Count = ECAP_getEventTimeStamp (gEcapBaseAddr、ECAP_EVENT_4);
SemaphoreP_POST (&gEscapSyncSemObject);
}
返回;
}