您好!
我尝试使用 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