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.
尊敬的香槟:
我是为我们的客户提出这个问题的。
在 C2000ware V4.03 driverlib 中、
EPWM_setDeadBandControlShadowLoadMode (myEPWM1_base、EPWM_DB_LOAD_ON_CNTR_ZERO);
似乎清除了 DBCTL.OUT_MODE、这是意料之外的!!
请参阅观察窗口中的 CCS 分步调试、
在运行 EPWM_setDeadBandControlShadowLoadMode (myEPWM1_base、EPWM_DB_LOAD_ON_CNTR_ZERO)之前;
运行 EPWM_setDeadBandControlShadowLoadMode (myEPWM1_base、EPWM_DB_LOAD_ON_CNTR_ZERO)后;
查看其来源、
static inline void EPWM_setDeadBandControlShadowLoadMode(uint32_t base, EPWM_DeadBandControlLoadMode loadMode) { // // Check the arguments // ASSERT(EPWM_isBaseValid(base)); // // Enable the shadow mode and setup the load event // HWREGH(base + EPWM_O_DBCTL2) = ((HWREGH(base + EPWM_O_DBCTL2) & ~EPWM_DBCTL2_LOADDBCTLMODE_M) | (EPWM_DBCTL2_SHDWDBCTLMODE | (uint16_t)loadMode)); }
LoadMode 是否需要类似这样的移位 "(uint16_t) loadMode << ePWM_DBCTL2_LOADREDMODE_S"?
您是否愿意查看此内容?
韦恩、您好!
当影子模式被启用时、为 DBCTL 寄存器写入的位0:5中的值应该在影子模式被启用后被写入。 您已共享的代码片段中遵循的顺序似乎不正确。 客户首先尝试直接写入这些位、然后对其启用影子模式。
我不太确定为什么会清除它、我可以向设计负责人核实这一点。 但是、无论如何、用户应该配置的方式与您共享的代码片段中当前配置的方式不同。
谢谢。
Aditya.
尊敬的 Aditya:
我刚使用基于位域的代码、发现了相同的结果、因此它与 driverlib 无关。
相反、当我将1写入 DBCTL2.SHDWDBCTLMODE 时、它始终清除 DBCTL.DBCTL.OUT_MODE 和 POLSEL、TRM 中未记录这一点。
如果可能、您会帮助确认吗?
然后、我们应要求 TRM 所有者进行更新、以便用户知道他们应该 先设置 DBCTL2.SHDWDBCTLMODE、然后修改 DBCTL。
到目前为止,我是按这一顺序实施的,效果很好。
是的、我也观察到了同样的情况。 就用例而言、它不应该是用户的问题、因为无论如何、都应该在加载 DBCTL[0:5]位中的值之前启用影子配置。
我将跟踪设计团队、看看这是否是一个可以记录或不可以记录的已知项目。
谢谢。
Aditya.