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.

28335的epwm的时基模块TBCTR在程序里任意时刻人为重新使能后,能重新从0开始计数吗?谢谢

28335的epwm的时基模块TBCTR在程序里任意时刻人为重新使能后,能重新从0开始计数吗?谢谢,试了好多办法,比如关闭时钟TBCLKSYNC再开启,给TBCTR装初值,给TBPHS相位寄存器赋值0,再来一条TBCTL[SWFSYNC],好像都不行,现在怀疑28335有这个功能吗?能人为在某一时刻把TBCTR重新装0再开始吗?我现在只用了一路EPWM1,谢谢

  • 你好,想问下给TBPHS相位寄存器赋值0是debug时直接修改的寄存器值吗?

  • 不是啊,我做这个的目的是想切换控制策略,退出我自己的控制策略,然后想立刻切换到传统的PI控制。

    在我退出自己的控制策略后,我立马写了如下语句:

    EPwm1Regs.TBCTL.bit.PHSDIR = 1;
    EPwm1Regs.TBPHS.half.TBPHS = 0x0000;
    EPwm1Regs.TBCTL.bit.PHSEN=1;
    EPwm1Regs.TBCTL.bit.SWFSYNC=1;
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;// Enable TBCLK within the ePWM
    EDIS;
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;// Enable TBCLK within the ePWM
    EDIS;

    但是发现在我退出我的控制策略到正式进入新一轮的PI控制的epwm中断,中间存在较长时间的时间间隔(大概半个开关周期)。我的分析是,在我退出我自己的控制策略的那一刻,TBCTR的值并不为0,等到TBCTR在某个值先增大到TBPRD在减小到0后(我用了增减模式),才能正式进入新一轮EPWM中断进行新的PI控制。我只用了一路EPWM,我的目标是在我退出的那一瞬间希望TBCTR的值为0,但是一直实现不了。谢谢了啊