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.

[参考译文] F28M36P63C2:首次运行 PWM 2Hz 失败(第二次启动和其他频率-无问题)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1661538/f28m36p63c2-failed-to-run-pwm-2hz-first-time-second-launch-and-other-frequencies---no-problem

器件型号: F28M36P63C2

下面是 C28 ePWM 寄存器的写入序列:

SYSCLK = 150MHz

ConfigOutput();
EnablePWMCLOCK();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
TBCTL.CLKDIV = 7;
TBCTL.HSPCLKDIV = 6;
TBPRD = 0xBEB;
CMPA.HALF.CMPA = 0x5F5E;
CMPB = 0x5F5E;
CMPCTL.BIT.SHDWAMODE = TB_REMEDIATE;
TBPHS.ALL = 0;
TBCTR= 0;
TBCTL.CTRMODE = TB_FREEZE;
TBCTLPHSEN =  TB_DISABLE;
TBCTL.PRDLD  = TB_IMMEDIATE;
TBCTL.SYNCOSEL = TB_SYNC_DISABLE;
AQCTLA.PRD = AQ_NO_ACTION;
AQCTLA.ZRO = AQ_SET;
AQCTLA.CBU = AQ_CLEAR;
AQCTLA.CBD = AQ_CLEAR;
AQCTLA.CAU = AQ_NO_ACTION;
AQCTLA.CAD = AQ_NO_ACTION;
AQSFRC = 0;
AQCSFRC = 0;
ETSEL.INTSEL = ET_CTRLU_CMPB;
ETPS.INTPRD  = ET_1st;
ETSEL.BIT.INTEN = 0;
ETCLR.bit.INT = 1;
ETPS.bit.INTPSSEL = 0;   //使用 ETPS 旧版第一事件预分频器
ETPS.bit.INTCNT = 0;
ETCNTINIT.BIT.INTINIT = 0;
ETCNTINITCTL.BIT.INTINITEN = 1;
ETCNTINITCTL.BIT.INTINITFRC = 1;
ETCNTINITCTL.BIT.INTINITEN = 0;
DBCTL.POLSEL = DB_ACTV_HI;
DBCTL.OUT_MODE = DB_DISABLE;
TBCTR = TBPRD;
TBCTL.CTRMODE = TB_COUNT_UP;

GPIO 不切换。

如果我只删除 TBCTL.PRDLD  = TB_immediate、则从第一次启动开始一切都有效
启动后出现此类行为的可能原因是什么? 未在勘误表中找到任何内容

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

    您好:

    请允许我再过一天来查看这些信息。

    此致、

    Allison

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

    您好:

    您可以尝试移除即时加载线路吗:

    // Delete this:
    // TBCTL.PRDLD = TB_IMMEDIATE;
    

    当从周期值开始时、影子模式(默认)正确地初始化周期比较逻辑 、或者 如果必须使用立即模式、则从 0 启动计数器。 如果您看到行为发生变化、请告诉我。

    此致、

    Allison