工具/软件:
大家好、我正在努力解决一些问题、因为有些日子、也许有人会给我一个提示。
我们使用 2 个通过光缆连接的 F28335 来同步 PWM 计时器。 该光线由一个光电二极管通过逆变器接收并连接到 GPIO6。
我们遇到的是一些奇怪的行为:
*光电二极管和逆变器为 GPIO6(同步输入)生成非常好的信号, 仍然有零星的 PWM 中断
* PWM 中断被配置为 CNT=零,但在这些零星的中断期间检查计数器时,它远高于零
*禁用全部同步输入时,中断仍然存在(在 PWM 外设以及 GPIO 配置中)
*他们仍然有一些连接到 Sync-in,因为根据使用的(光缆),他们看起来或多或少(或根本不与一些电缆)。
我不理解的是、即使明显不满足配置的条件((CTR =零)、如何触发 PWM 中断、如何找到原因?
另外、 当 GPIO6 没有显示任何位置外信号的迹象时、为什么中断的发生会根据同步输入电缆而变化?
我为 EPwm1 添加了 PWM-config、如果您需要有关我的配置的任何更多详细信息、请告诉我。
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; //2 EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; //1 EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; //0 EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; //0 EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; //1 EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; //1 EPwm1Regs.TBCTL.bit.PHSDIR = TB_UP; //1 EPwm1Regs.TBCTL.bit.SWFSYNC = 0; EPwm1Regs.TBPHS.half.TBPHS = 0x0000; EPwm1Regs.TBPRD = 4600; EPwm1Regs.TBCTR = 0x0000; EPwm1Regs.CMPA.half.CMPA = 0; EPwm1Regs.CMPB = 0; EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_IMMEDIATE; //1 EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; //1 EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_IMMEDIATE; //1 EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; //1 EPwm1Regs.AQCTLA.bit.ZRO = 0; EPwm1Regs.AQCTLA.bit.PRD = 0; EPwm1Regs.AQCTLA.bit.CAU = 0; EPwm1Regs.AQCTLA.bit.CAD = 0; EPwm1Regs.AQCTLA.bit.CBU = 0; EPwm1Regs.AQCTLA.bit.CBD = 0; EPwm1Regs.AQCTLB.bit.ZRO = 0; EPwm1Regs.AQCTLB.bit.PRD = 0; EPwm1Regs.AQCTLB.bit.CAU = 0; EPwm1Regs.AQCTLB.bit.CAD = 0; EPwm1Regs.AQCTLB.bit.CBU = 0; EPwm1Regs.AQCTLB.bit.CBD = 0; EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; //1 EPwm1Regs.ETSEL.bit.INTEN = INT_ON; //1 Pwm1Regs.ETPS.bit.INTPRD = 1; EPwm1Regs.ETSEL.bit.SOCAEN = INT_ON; //1 EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO; //1 EPwm1Regs.ETSEL.bit.SOCBEN = INT_OFF; //0 EPwm1Regs.ETSEL.bit.SOCBSEL = ET_CTR_ZERO; //1 EPwm1Regs.ETPS.bit.SOCACNT = 1; EPwm1Regs.ETPS.bit.SOCAPRD = 1; EPwm1Regs.ETPS.bit.SOCBPRD = 1; EPwm1Regs.ETPS.bit.SOCBCNT = 1;