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.

28335的EPWM关闭及AD中断问题



请问有什么好的方式可以关闭EPWM模块功能?

原本设计控制时钟的开关来启动EPWM,但是发现无法通过EPWM启动AD采样,AD中断无响应,而一旦初始化时候打开EPWM时钟,则能够正常通过EPWM触法AD采样?请问这是为什么?控制如下:

EALLOW;

SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1; // ePWM3

EDIS;

目前我仅能够通过复位EPwm3Regs.TBCTR来控制何时进行采样。

另外再请教一个问题,由于AD可以分成两个采样队列,因此PIE中断使能标志,分成了INT1.1 、INT1.2及INT1.6,那么我的中断服务程序只开一个,例如对应INT1.6,而一旦响应AD中断时,为什么PIEIFR的INT1.1标志位仍然为1?仅仅复位了INT1.6?

求解答,万分感谢

  • Clack,

    你采用PWM的什么事件去触发ADC转换?或者你ADC采样和PWM具体怎样配合?建议可以将PWM模块一直开着,选择合适的PWM事件和时间去触发ADC转换。

  • 谢谢你,我采用的是PWM的周期到触发采样,但是如果之前跟EPWM的时钟配合则无法启动AD采样。因此我改用复位PWM的计时时钟和PWM的CMPA等于计时时钟(加计数方式),具体如下:

        EPwm3Regs.ETSEL.bit.SOCAEN  = 1;        // Enable SOC on A group
        EPwm3Regs.ETSEL.bit.SOCASEL = 4;       // Select SOC from TBPRD on upcount
        EPwm3Regs.ETPS.bit.SOCAPRD  = 1;        // Generate pulse on 1st event

    麻烦您帮我解答。

    有没有其他解决方式,毕竟一直开着也占功耗,同时配合还搞复杂了,没有一种总开关直接关掉吗?

  • 你要使用epwm模块来触发ad采样,那就必须要使该模块工作啊,这怎么能要求把他关闭呢?

  • Clark,

    不理解你的具体需求是什么?既然要用PWM模块去触发ADC转换,那PWM模块需要一直开着,如果你只是需要一个ADCSOC信号来启动转换,而不是周期性或一直都需要用,则可以考虑其他SOC信号,如软件触发或GPIO触发等:

    如果的SOC又需要周期性的,按可以考虑用定时器+Software方式去触发。

  • 首先需精准的控制采样时刻,有时序配合要求;

    其次,当计时开始的时候,才让PWM工作,计时完成,产生触发信号后,关闭PWM模块,等到下次开启PWM模块。而不是你所理解的在计时的时候去关闭PWM模块。

  • 首先,在功能设计上,采样需要周期性的通过SOC触发。

    其次,程序已经开了一个定时器,而且采样时刻有非常精准的采样时刻点要求,而不仅仅是周期性,因此不能通过简单的定时器+Software方式实现;

  • Clack Tung 说:

    首先,在功能设计上,采样需要周期性的通过SOC触发。

    其次,程序已经开了一个定时器,而且采样时刻有非常精准的采样时刻点要求,而不仅仅是周���性,因此不能通过简单的定时器+Software方式实现;

    如果你要使用epwm模块连续不断地触发ad采样,那epwm模块是一定要保持正常工作的(这也是比较常见的设计,尤其是电力电子类的设计),epwm模块的工作不会对你系统的其他部分造成影响,你完全不需要去关闭它。