This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28377S:清除 DCCAP 时间戳

Guru**** 2442090 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1009983/tms320f28377s-clearing-dccap-time-stamp

器件型号:TMS320F28377S

您好!

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Cameron、

    您为 DCCAP 选择了什么影子加载模式?

    另请注意、DCCAPCTL 寄存器受 EALLOW 保护、因此您需要执行如下操作:

    EALLOW;
    EPwm4Regs.DCCAPCTL.bit.CAPCLR = 1;
    EDIS;

    此致、

    Marlyn