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.

[参考译文] TMS320F28377S:使用仿真器时 EPwm3 ISR 停止

Guru**** 2448150 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/946167/tms320f28377s-epwm3-isr-stops-when-using-the-emulator

器件型号:TMS320F28377S

我已设置 EPwM3 (在向上向下计数模式下)、以便在向上计数时在 CMPA 匹配上触发中断。  除非 我在 观察窗口中手动清零 EPwm3Regs.ETCLRbit.INT、否则中断会执行、但会在随机时间停止、然后它会重新启动、但最终停止、除非我通过观察窗口重新清零。  这似乎只在我连接了仿真器(XDS110)时发生;幸运的是、在没有仿真器的情况下运行时、似乎不会发生。  

我正在使用 EPWMXLINK 寄存器将 EPwm3.TBPRD 与 EPwm2、6、8、10 (EPwm3Regs.EPWMXLINK.BIT.TBPRDLINK = 0;)一起链接到 EPwm1.TBPRD。  如果我禁用 EPWMXLINK、问题就会消失、因此问题似乎与 EPWMXLINK 有关。  

  下面是 EPwM3的初始化和中断代码。

提前感谢您的任何见解。  

/***** 配置 EPwm3 /

CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;//禁用 PWM 时钟*

 

CpuSysRegs.PCLKCR2.bit.EPWM3 = 1;

 

EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;

EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;

EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;

EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;

EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1;

EPwm3Regs.TBCTL.bit.FREE_SOFT = 0;

EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

EPwm3Regs.CMPCTL.bit.LOADASYS = SET_LOADAMBMODE;

EPwm3Regs.CMPCTL.bit.LOADBSYNC = SET_LOADAMBMODE;

EPwm3Regs.ETSEL.bit.INTSEL = ET_CTRL_CMPA;

EPwm3Regs.ETSEL.bit.INTEN = ENABLE_EPWM_INTERRUPT;//启用 EPwm1中断*

EPwm3Regs.ETSEL.bit.SOCASELCMP = CMPA_CMPB_SOC;

EPwm3Regs.ETSEL.bit.SOCBSELCMP = CMPA_CMPB_SOC;

EPwm3Regs.ETSEL.bit.INTSELCMP = CMPA_CMPB_INT;

EPwm3Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO;

EPwm3Regs.ETSEL.bit.SOCAEN = DISABLE_EPWM_SOCA;

EPwm3Regs.ETSEL.bit.SOCBSEL = ET_CTR_ZERO;

EPwm3Regs.ETSEL.bit.SOCBEN = DISABLE_EPWM_SOCB;

EPwm3Regs.ETPS.bit.INTPRD = et_1st;

EPwm3Regs.ETPS.bit.INTPSSEL = USE_ETPS;

EPwm3Regs.ETPS.bit.SOCPSSEL = USE_ETPS_SOCPS;

EPwm3Regs.ETPS.bit.SOCAPRD = DISABLE_SOCA;

EPwm3Regs.ETPS.bit.SOCBPRD = DISABLE_SOCB;

EPwm3Regs.TBPRD = EPwm1Regs.TBPRD

EPwm3Regs.CMPA.bit.CMPA = 90;

EPwm3Regs.TBPHS.bit.TBPHS = 0;

EPwm3Regs.TBCTR = 0;

EPwm3Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;

EPwm3Regs.EPWMXLINK TBPRDLINK = 0;

 

PieVectTable.EPWM3_INT =&ISR_ePWM;

EPwm3Regs.ETCLR.bit.INT = 1;

PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;

PieCtrlRegs.PIEIER3.bit.INTx3=1

CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;//启用 PWM 时钟*

/ /

 

 

ISR 代码 如下所示。  代码停止时、变量 ISR_Counter 停止递增、表示出现问题。

中断 ISR_ePWM ()

 ISR_Counter++;

EPwm3Regs.ETCLR.bit.INT = 1;//清除 PCMC EPwm2中断标志*/

PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;}

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

    您的 ePWM 仿真模式是什么?

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

    相移

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

    Andrew、我是指您的仿真模式、正如您的 ePWM 模块在连接调试器并停止 CPU 时发生的情况。 您的 ePWM 是冻结还是自由运行?

    ePWM_setEmulationMode (ePWM[j]、ePWM_emulation_free_run);

    TBCTL.FREE_SOFT 设置为0、即"在下一次时基计数器递增或递减之后停止"。

    您可能需要确保这是您想要的模式。

    仿真事件期间的时基计数器

    00:在下一次时基计数器递增或递减之后停止

    01:计数器完成整个周期时停止:

       -递增计数模式:时基计数器=周期时停止(TBCTR = TBPRD)

       -递减计数模式:当时基计数器= 0x00 (TBCTR = 0x00)时停止

       -递增-递减计数模式:当时基计数器= 0x00 (TBCTR = 0x00)时停止

    1x:自由运行

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

    您是否尝试更改仿真模式?

    NIMA

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

    仿真模式被设定为00。  正如我所理解  的那样、仿真模式(FREE_SOFT)设置仿真事件期间的 PWM 计数器行为、通过此设置、计数器将在下一次递增/递减后停止。  

    当我观察到中断如上所述停止时、仿真器已连接并在表达式窗口中更新数据、但并未以其他方式停止 CPU。  在此模式下、仿真器是否可能发出某种类型的 STOP 命令?

    无论如何、我将把仿真模式更改为自由运行并观察。

    谢谢。

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

    如果您连接了调试器并且停止/执行了其他调试器操作、则可能会干扰应用程序计时、具体取决于所有运行的内容和停止的外设。

    NIMA

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

    Andrew、

    您的项目的状态是什么?

    NIMA

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

    做了更改、我没有观察到问题、因此、我想这解决了。