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.

[参考译文] TMS320F280039:TMS320F280039

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1309978/tms320f280039-tms320f280039

器件型号:TMS320F280039

你好

如何在发生直流事件时捕获计数器值?

我正在使用外部 ZCD 信号进行可变频率控制。 当有 ZCD 信号出现时、我将生成直流事件。 使用数字比较同步事件、我将使 ePWM 0的计数器(相位)成为零。 出于控制目的、我需要知道计数器在变为0之前的值。 您能建议如何捕获计数器值吗?  

我曾尝试使用 ECAP、但我没有看到任何使用 DC 事件创建 ECAP 事件的选项。

谢谢!

阿米尔·侯赛因

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

    尊敬的 Amir:

    DCCAPCTL 寄存器、您就可以获得更多信息。 这可以帮助您在发生 DCEVTFILT 信号时捕获 TBCTR。

    要在发生直流事件时捕获计数器值、可使用增强型脉宽调制器(ePWM)模块中的数字比较捕获控制寄存器(DCCAPCTL)。 DCCAPCTL 寄存器有一个 CAPMODE 位、当置位时、在发生"数字比较事件过滤"(DCEVTFILT)且计数器捕捉启用时、捕获活动寄存器中的当前时基计数器(TBCNT)值。 会忽略进一步的跳闸(捕获)事件、直到 CAPSTS 标志被清除、或者直到下一个周期相等(PRD_Eq)或计数器零(CNT_ZERO)事件重新触发捕获机制、具体取决于 DCFCTL 寄存器中的 PULSESEL 位

    以下是来自 DCCAPCTL 寄存器说明的相关信息:- CAPMODE (位15):计数器捕获模式- CAPCLR (位14):直流捕获锁存状态清除标志- CAPSTS (位13):捕捉事件的锁存状态标志

    当一个 DC 事件发生时、TBCNT 值被捕获到活动寄存器中。 如果设置了 SHDWMODE 位、则活动寄存器值会在发生 PRD_eq 或 CNT_ZERO 事件时复制到影子寄存器中。 您可以通过访问此寄存器从 CPU 读取捕获的值。  

    查看可用选项、我建议的一种方法是使用从外部 ZCD 信号生成的外部中断来触发 DMA 请求。

    注意:外部信号+数字比较信号锁存至该条件的3 *最小 TBCLK 周期将会有一些延迟。

    你可以通过外部中断来触发 DMA、启动 TBCTR 内的内容到某些存储器位置的传输。

    此致!

    马瑞安