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