程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
he code:
调整程序找到一个方法修改CMA了,在CLA1对应的中断中修改。
难道在CLA任务中修改不了吗?
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
10#:
可以操作。
那么是否有报错呢?是uint16还是Uint16?
对浮点和Uint16数据类型是可以操作的。
另外,你是如何确定问题是在这句话呢?有没有单步调试或反汇编看看?
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
Eric Ma:
回复 he code:
he code,
CLA 对不能在变量定义的时候就初始化,不知道你的代码有没有这样操作。如
int x; // valid
int x=5; // not valid
另外,你可以直接给cmpa直接赋一个固定的值,如0x55,并让CLA run,然后在CPU中查看是否正确。
Eric
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
Yanbin Zhao:
回复 10#:
你好,我也遇到相同的问题,CLA程序能运行,变量都在变,但是就是无法修改PWM寄存器的值。 请问你们遇到过这样的问题吗?是什么原因呢?
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
10#:
回复 Yanbin Zhao:
在C28x里是否ok?确定ePWM的时钟有使能,且EALLOW也使能。
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
Jason Wang83:
请问你用的是哪一款芯片?
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
Yanbin Zhao:
回复 10#:
问题是在C28x主核里可以,但是在CLA里不可以,所以我觉得GPIO肯定设置成了PWM模式,而且PWM时钟也使能了。
你说的EALLOW使能是什么意思?修改PWM脉宽,或者Software Force PWM是不需要EALLOW的呀。
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
Yanbin Zhao:
回复 10#:
在C28x里有效;ePWM时钟肯定使能了;AQ不需要EALLOW。
问题找到了:
CLA的16 bit数据类型只能用short。在我们的DSP C2000平台软件的头文件里,是用int去定义16 bit数据类型,所以在CLA操作时有问题。
CLA代码必须调用CLA源文件里leaf函数,否则可能出错:
a) 编译时出现relocation警告,这也是为什么说“可能”出错的原因,下载到目标MCU中的可执行代码可能会无法得到正确执行。Warning信息是:“Multiple markers at this line – <a href="file:/D:/Programs/TICCS5/ccsv5/tools/compiler/dmed/HTML/17003.html">#17003-D</a> relocation from function”。
b) C源文件中的全局变量虽然初始化了,但是在CLA代码中访问时会有问题。
例如:在CLA源文件中执行“EPwm1Regs.AQCSFRC.bit.CSFB=2”有效;但是,用C源文件中自己定义的全局变量ePWM[0] (指针类型,用于指向PWM寄存器,ePWM[0]=&EPwm1Regs) 去执行“ePWM[0]-> AQCSFRC.bit.CSFB=2”就无效;必须在CLA源文件中定义全局变量ePWM_CLA[0] (指针类型,用于指向PWM寄存器,ePWM_CLA[0]=&EPwm1Regs) ,才能通过执行“ePWM_CLA [0]-> AQCSFRC.bit.CSFB=2”改变寄存器值。
EPwm1Regs是在TI的C源文件《DSP2803x_GlobalVariableDefs.c》中定义的结构体全局变量,并由DATA_SECTION放入指定的PWM寄存器RAM空间。虽然都是在C源文件中定义,但是执行结果却不同,这一点依旧不理解。
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
Yanbin Zhao:
回复 10#:
通过对生成的Assembly汇编的分析发现,C源文件中自己定义的全局变量ePWM[0](指针类型,用于指向PWM寄存器,ePWM[0]=&EPwm1Regs)位于C28x的RAM空间里,而CLA源文件中定义的ePWM_CLA[0] (指针类型,用于指向PWM寄存器,ePWM_CLA[0]=&EPwm1Regs)位于CLA的RAM空间里。所以,当试图通过CLA代码去访问并操作C28x的RAM空间里的ePWM[0]所指向的PWM寄存器时,操作是无效的。由于TI的C源文件《DSP2803x_GlobalVariableDefs.c》中定义的结构体全局变量EPwm1Regs由DATA_SECTION指定放入PWM寄存器RAM空间,非C28x的RAM空间,而CLA可以直接访问操作PWM模块,所以当试图通过CLA代码去访问并操作EPwm1Regs寄存器时,该操作是有效的,表现为——在CLA代码中执行“EPwm1Regs. AQCSFRC.bit.CSFB=2”,该操作有效。
程序设计初衷是PWM启动ADC,ADC启动CLA任务。
在任务中根据ADC结果调整PRD的占空比。
难道在CLA中无法直接对CMPA直接操作吗?操作方式如下:
EPwm1Regs.CMPA.half.CMPA=Result;
其中Result是uint16类型的。
还是说在cla中要设置什么标志吗?
要设置MEALLOW为1吗?初始化的配置MEALLOW为了也没用啊。CMPA又不受保护啊。
请教是怎么回事?
gqdeng:
回复 Yanbin Zhao:
我也遇到这样的问题,在CLA里比较寄存器无法修改。http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/p/44702/96750.aspx#96750