我正在尝试使用 EPwm6A 复制 TRM (SPRUHX5F)中图14-30的行为。
向上计数设置按预期工作、但向下计数设置不工作。
EPwm6寄存器设置如下:
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_updown;
EPwm6Regs.CMPCTL.bit.LOADAMODE = 0; // CTR 上的负载= 0 *
EPwm6Regs.CMPCTL.bit.LOADBMODE = 0; // CTR 上的负载= 0 *
EPwm6Regs.CMPCTL.bit.SHDWAMODE = 0; //启用影子
EPwm6Regs.CMPCTL.bit.SHDWBMODE = 0; //启用影子
EPwm6Regs.CMPCTL.bit.LOADASHNC = 0; //使用 LOADAMODE *
EPwm6Regs.CMPCTL.bit.LOADBSYNC = 0; /*使用 LOADBMODE *
EPwm6Regs.AQCTL.bit.LDAQAMODE = 0;//在 CTR 上加载= 0 *
EPwm6Regs.AQCTL.bit.LDAQBMODE = 0;// CTR 上的负载= 0 *
EPwm6Regs.AQCTL.bit.SHDWAQAMODE = 1;//启用影子
EPwm6Regs.AQCTL.bit.SHDWAQBMODE = 1;//启用影子
EPwm6Regs.AQCTL.bit.LDAQASYNC = 0;/*使用 LDAQAMODE *
EPwm6Regs.AQCTL.bit.LDAQBSYNC = 0;/*使用 LDAQBMODE *
EPwm6Regs.TBPRD = 166;
EPwm6Regs.CMPA.bit.CMPA = 120;
EPwm6Regs.CMPB.bit.CMPB =(EPwm6Regs.TBPRD - EPwm6Regs.CMPA.bit.CMPA);// CMPB = 46 *
EPwm6Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
EPwm6Regs.AQCTLA.bit.PRD = AQ_NO_ACTION;
EPwm6Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm6Regs.AQCTLA.bit.CAD = AQ_NO_ACTION;
EPwm6Regs.AQCTLA.bit.CBU = AQ_NO_ACTION;
EPwm6Regs.AQCTLA.bit.CBD = AQ_CLEAR;
在这些设置下、我希望出现图14-30中所示的行为:
下面的示波器图中显示了我实际得到的结果。 通道1为 EPwm2A (其上升沿对应于 EPwm2.TBCNT = EPwm6.TBCNT = 0)。 CH2 = EPwm6A。 为了清晰起见、死区为零。
请注意、EPwm6A 在递增计数时在 TBCNT = CMPA 时变为高电平、正如预期的那样。 在倒计数时、它不会在 TBCNT = CMPB 时变为低电平、而是在 TBCNT = 0前保持高电平。
我已经尝试交换 EPwm6Regs.CMPA.bit.CMPA 和 EPwm6Regs.CMPB.BIT.CMPB 的值(即 CMPA = 46、CMPB = 120)、结果是一样的。
我还尝试将 EPwm6Regs.CMPCTL.bit.LOADAMODE 和 EPwm6Regs.CMPCTL.bit.LOADBMODE 设置为1和2 (PRD 负载以及 ZRO 和 PRD 负载)、但也没有效果。
我是设置错误的寄存器、还是尝试无法完成的操作? 提前感谢您的任何见解。
