工具与软件:
尊敬的 TI:
我正在使用 PWM5和 PWM7的一个频率更改项目。 我的主 ISR 频率是20KHz 的计时器。 PWM 将从20KHz 更改为400KHz。 在20K ISR 中、软件可以同时更改 PRD、CMPA、CMPB。
PWM 为向上/向下计数模式。 并从影子寄存器加载 PRD 和 CMP。
有时 AQ 子模块可能会丢失 CAU 以开启 PWMA。
我将 PWMA 更改为从 CC_CTR_ZERO、CC_CTR_PRD、CC_CTR_ZERO_PRD 加载时间。 但缺失仍然存在。
是否有任何其他我忘记配置的寄存器?
以下代码是 PWM5配置、PWM7是相同的。
EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW; // set Shadow load EPwm5Regs.TBCTL2.bit.PRDLDSYNC = 0; EPwm5Regs.TBPRD = 400; // PWM frequency = 1/(2*TBPRD) EPwm5Regs.CMPA.bit.CMPA = 200; // set duty 50% initially EPwm5Regs.CMPA.bit.CMPAHR = 0; // initialize HRPWM extension EPwm5Regs.CMPB.bit.CMPB = 200; // set duty 50% initially EPwm5Regs.CMPB.bit.CMPBHR = 0; EPwm5Regs.TBPHS.all = 0; EPwm5Regs.TBCTR = 0; EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Select up-down // count mode EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV1; // TBCLK = SYSCLKOUT EPwm5Regs.TBCTL.bit.FREE_SOFT = 11; EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; // LOAD CMPA on CTR = PRD EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR; // PWM toggle high/low EPwm5Regs.AQCTLA.bit.CAD = AQ_SET; EPwm5Regs.AQCTLB.bit.CBU = AQ_SET; // PWM toggle high/low EPwm5Regs.AQCTLB.bit.CBD = AQ_CLEAR;
感谢你的帮助