TI中文支持网
TI专业的中文技术问题搜集分享网站

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?

求解答,万分感谢

Martin Yu:

Clack,

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

请问有什么好的方式可以关闭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 Tung:

回复 Martin Yu:

谢谢你,我采用的是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模块功能?

原本设计控制时钟的开关来启动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?

求解答,万分感谢

rookiecalf:

回复 Clack Tung:

你要使用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?

求解答,万分感谢

Martin Yu:

回复 Clack Tung:

Clark,

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

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

请问有什么好的方式可以关闭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 Tung:

回复 rookiecalf:

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

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

请问有什么好的方式可以关闭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 Tung:

回复 Martin Yu:

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

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

请问有什么好的方式可以关闭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?

求解答,万分感谢

rookiecalf:

回复 Clack Tung:

Clack Tung

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

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

赞(0)
未经允许不得转载:TI中文支持网 » 28335的EPWM关闭及AD中断问题
分享到: 更多 (0)