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.

[参考译文] TMS320F2800137:无法设置高于50kHz 的 ADC 中断

Guru**** 1969805 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1226510/tms320f2800137-not-able-to-set-adc-interrupt-above-50khz

器件型号:TMS320F2800137

您好!  

我正在使用由 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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    似乎现在它正在工作,有一些其他问题  

x 出现错误。请重试或与管理员联系。