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.
工具/软件:Code Composer Studio
您好!
我使用的是仅由 PWM 子模块的 SOCA 触发的 DMA。
由于开关频率是可变的、PWM 和控制任务不同步。
在控制任务的某个时刻、我想禁用 DMA、使用 CPU 移动一些数据并重新启用 DMA。 当我重新启用 DMA 时、我必须确保 DMA 操作与 SOCA 事件同步进行。 如果锁存了 SOCA 事件、我不会触发 DMA。
如何在启用 SOCA (SOCAEN=1;)之前擦除现有的 SOCA 事件?
谢谢你
此致
Rga88、
您是否使用事件触发器子模块生成 SOCA? 查看 ePWM 参考指南、它介绍了事件触发器子模块的功能。 图44"事件触发中断发生器"应该有用。
此致、
Cody
Rga88、
是图45专门用于生成"SOCA"触发器。
更正了2位计数器似乎不会被复位。
该文档指出、写入 SOCAPRD 将清除两个位计数器、因此我认为您可以简单地重写 SOCAPRD=1的配置来复位计数器、而无需先写入0。 这很可靠、但请记住、一旦发生 CTRL=CMPA 事件、计数器就会递增。
如果您未使用向上/向下计数模式、或其中一个 CMPx 事件、则可以确保其中一个事件不会发生。 例如、如果在向上计数模式下、CTRD= CMPx 将永远不会发生。 这是使用 SOCASEL 禁用它的一种可能方法。
禁用 SOCA 的正确方法是使用 SOCAEN。 重新启用时、应首先通过写入 SOCAPRD 来清除2位计数器、因为它将处于未知状态。
此致、
Cody