您好!
我只想使用 eCAP 模块来查找波形的占空比和周期。 我正在使用下面的代码来设置 eCAP 模块、但是 DutyOnTime1和 PERIOD1等全部为0 (初始化值)。 我根据 需要设置 ePWM 模块及其输出。 我正在将其中一个 ePWM (GPIO00)输出连接到 GPIO24 (eCAP1)。 您能不能告诉我 eCAP 模块设置是否有任何错误。
void SetupECapture(){
// ECAP 模块1配置
ECap1Regs.ECCTL1.bit.CAP1POL=0;
ECap1Regs.ECCTL1.bit.CAP2POL=1;
ECap1Regs.ECCTL1.bit.CAP3POL=0;
ECap1Regs.ECCTL1.bit.CAP4POL=1;
ECap1Regs.ECCTL1.bit.CTRST1 = 1;
ECap1Regs.ECCTL1.bit.CTRST2 = 1;
ECap1Regs.ECCTL1.bit.CTRST3 = 1;
ECap1Regs.ECCTL1.bit.CTRST4 = 1;
ECap1Regs.ECCTL1.bit.CAPLDEN = 1;
ECap1Regs.ECCTL1.bit.prescale = 0;
ECap1Regs.ECCTL2.bit.CAP_APWM = 0;
ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2;
ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;//允许 TSCTR 运行
}
中断空 eCAP1_ISR(){
//运行时间(例如 CEVT1触发的 ISR 调用)
//========================================================================
//注意:此处的时间戳直接表示占空比值。
DutyOnTime1 = ECap1Regs.CAP2;//在 T2捕获蚀刻时间戳
DutyOffTime1 = ECap1Regs.CAP3;//在 T3捕获蚀刻时间戳
DutyOnTime2 = ECap1Regs.CAP4;//在 T4捕获蚀刻时间戳
DutyOffTime2 = ECap1Regs.CAP1;//在 T1捕捉获取时间戳
PERIOD1 = DutyOnTime1 + DutyOffTime1;
Period2 = DutyOnTime2 + DutyOffTime2;
ECap1Regs.ECCLR.bit.CEVT4 = 1;
ECap1Regs.ECCLR.bit.INT = 1;
ECap1Regs.ECCTL2.bit.rearm = 1;
//
//确认此中断以接收来自组4的更多中断
//
PieCtrlRegs.PIEACX.ALL = PIEACK_group4;
}
谢谢、