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.

TMS320F2809: EPWM切换PRD和CMPA后,通过SOCA触发的ADC不能进入中断?

Part Number: TMS320F2809


问题:下面代码的配置是否不正确?

操作:在程序运行过程中,修改了EPwm5Regs.TBPRD、EPwm5Regs.CMPA.half.CMPA、EPwm5Regs.TBPHS.half.TBPHS

现象:通过SOCA启动的ADC不再进入中断ISR

    AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1; // 启用SOCA从PWM启动SEQ1
    AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;   // 使能SEQ1中断

    EPwm5Regs.ETSEL.bit.SOCAEN = 1;  // Enable SOC on A group
    EPwm5Regs.ETSEL.bit.SOCASEL = ET_CTRU_CMPA; // TBCTR==CMPA上升沿作为触发事件
    EPwm5Regs.ETPS.bit.SOCAPRD = 1;  // 每发生1次事件,产生ADC启动信号

  • 有两个可能:

    1、PWM中断的优先级本身就高于ADC,如果中断频率太高,可能会导致ADC中断无法正常响应。

    2、得看一下你修改的3个寄存器值是多少,会不会有冲突。比如最简单的CMPA的值大于TBPRD的话就没办法触发中断。