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.
您好!
我正在使用由 EPWM1周期结束触发的 ADC 中断(第一优先级中断)。
设置等于 EPWM1周期的中断时间时、无法设置为高于50kHz。 低于50kHz 时可以正常工作
尊敬的 Aditya:
我正在尝试为控制环路设置 ADC 中断、我 使用 ePWM 周期触发 ADC 中断。
EALLOW;
EPwm1Regs.TBPRD = 0x1000;
// EPwm1Regs.TBPHS.bit.TBPHS = 0x0000;
EPwm1Regs.TBCTR = 0x0000;
//设置比较值
EPwm1Regs.CMPA.bit.CMPA = 0x0080;//将比较 A 值设置为150个计数
EPwm1Regs.CMPB.bit.CMPB = 0x0080;//interrupt_period/2;
//设置计数器模式
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
//设置隐藏
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_shadow;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_影子;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//设置操作
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;
EPwm1Regs.DBCTL.bit.out_mode = DB_FULL_ENABLE;
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm1Regs.DBFED.bit.DBFED =带;
EPwm1Regs.DBRED.bit.DBRED =频带;
EPwm1Regs.ETSEL.bit.SOCAEN = 0;//在组上禁用 SOC
EPwm1Regs.ETSEL.bit.SOCASEL = 4;//在向上计数时选择 SOC
EPwm1Regs.ETPS.bit.SOCAPRD = 1;//在发生第1个事件时生成脉冲
EDIS;
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0;// SOC0结束将设置 INT1标志
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除
您好!
当您尝试在超过50kHz 的频率下运行时、您会发现什么问题? 我认为 PWM 频率工作正常。 是否不是在您配置的每个 PWM 边沿都进入 ADC 中断?
它正在进入中断、但当我降低 TBPRD 寄存器中的值时、它没有 反映。 但当我增加时、情况也是如此。
EPwm1Regs.TBPRD = 0x1000;
似乎现在它正在工作,有一些其他问题