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 时可以正常工作
您好!
你所说的中断时间是什么意思? 是否尝试使用 ePWM 配置 ADC SOC?
您可以详细说明您的问题吗?
尊敬的 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;
似乎现在它正在工作,有一些其他问题