Part Number:TMS320F28377S
你好,在使用28377s的CLA时,我遇到了两个问题。
问题1:我在cpu中定义了一个Uint16的test_wm1,在CCS的memory中观察到如下所示:
又在CLA中定义了一个Uint16的CLA_count4,在CCS的memory中观察到如下所示:
前者可以明显看出来是16bit的,但后者却是32bit的
我知道数据格式在cpu和CLA中是不同的,也搜到了这样的答疑帖,比如int在CLA中是32bit,所以前人建议定义成short,包含头文件typedefs.h
这些我都试过了,包含头文件,定义成short,结果都是我在CLA定义的数据是32bit的,以至于后来我直接定义为Uint16,结果还是一样。
这是第一个需要请求帮助的地方
问题2:我设置的是pwm4计数达到1500时,产生中断触发CLA任务,在主循环中一切运行正常,确实是pwm计数达到1500时触发CLA,但我发现在我第一次打开pwm中断,
即下面这句话执行后,EPWM4Regs.ETSEL.bit.INTEN=1后,也会进入CLA一次。而此时pwm计数值还远远未达到1500
此现象每次都会产生,且即使我在EPWM4Regs.ETSEL.bit.INTEN=1语句之前,强行清零pwm计数值,一旦执行这句话,就会误触发CLA
以上
此致
敬礼
Green Deng:
1、可以看一下这个链接的说明:https://software-dl.ti.com/C2000/docs/cla_software_dev_guide/faq.html#how-are-data-types-different-on-c28x-and-cla
2、你看下是否是这种情况:
If interrupts are enabled, ETSEL[INTEN] = 1 and the interrupt flag is clear, ETFLG[INT] = 0, then an interrupt pulse is generated and the interrupt flag is set, ETFLG[INT] = 1, and the event counter is cleared ETPS[INTCNT] = 0. The counter will begin counting events again.