您好!
我尝试使用 DCCAP 来计算 ADC 值何时超过阈值。 我得到了第一个时间戳、但清楚的标记似乎没有效果。 我能够在观察窗口中手动清除、值更新、但它保持不变。 根据上一个主题、我的理解是、清晰的位允许我捕捉每个事件。
之前、我在每个单独的 if 语句中都有明文规定、并将其移出以进行调试。 如果 CAPCLR 在 if 语句之外、我仍然看不到我的状态位被清除。
我的代码如下:
if (AdcbResultRegs.ADCRESULT5 >阈值&& Rise1Caped=0)
{
EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET;
Time1 =(float32)(EPwm4Regs.DCCAP);
Rise1Capeded = 1;
EPwm4Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
}
否则、如果(AdcbResultRegs.ADCRESULT5 <阈值&& fallcaped = 0)
{
EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET;
Time2 =(float32)(EPwm4Regs.DCCAP)+ powerTime1;
EPwm4Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
fallCaped = 1;
}
否则、IF (AdcbResultRegs.ADCRESULT5 >阈值&& fallcaped = 1)
{
EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET;
Time3 =(float32)(EPwm4Regs.DCCAP)+ powerTime2;
EPwm4Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
Rise1Capeded = 0;
fallCaped = 0;
}
EPwm4Regs.DCCAPCTL.bit.CAPCLR = 1;
任何见解都值得赞赏。
谢谢、
Cameron