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.
你好
如何在发生直流事件时捕获计数器值?
我正在使用外部 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 内的内容到某些存储器位置的传输。
此致!
马瑞安