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

28377D CLA执行

Other Parts Discussed in Thread:CONTROLSUITE

把例程cla_adc_fir32_cpu01烧到CPU,为什么在void cla1Isr7 ()打断点,程序进不去,自己写的程序也进不去?

Susan Yang:

应该是没有满足 ISR的条件,所以不会进入中断服务程序中

//! This example implements a 5 Tap FIR filter. It will setup
//! EPWM1 to trigger ADCA at a frequency of 50KHz. Once the ADC
//! completes sampling, it will trigger task 7 of the CLA which
//! runs the filter on the ADC sample.

//! \b External \b Connections \n
//!- EPWM2A (GPIO2) to ADCA0

您是否有连接对应的引脚?目前使用的硬件是什么?

,

user5860441:

EPWM1 触发 ADCA采样,转换完成后触发CLA task7,task7执行完,返回到CPU中的void cla1Isr7 (),和EPWM2没有关系吧?

,

Susan Yang:

所以您现在使用的是launchpad?程序是否load到CLA了?请先看一下我之前的帖子

e2echina.ti.com/…/529741

,

user5860441:

我是按照28035的使用方法来的,不知道28377d有什么不同,load symbol是啥意思,只有一个.out文件,我先不debug CLA我只想让CLA运行起来,程序load到CLA是要单独烧写CLA程序吗?

,

user5860441:

控制板是自己画的。

,

Susan Yang:

我们有一个专门的CLA workshop,您可以看一下training.ti.com/control-law-accelerator-cla-hands-workshoptraining.ti.com/cla-hands-workshop-part-4-debugging-cla讲述了如何debug CLA

,

user5860441:

第一,我的目的不是验证这个滤波器的效果,所以那两个引脚连不连在一起没关系。
第二,我也不是想学CLA怎么debug,调试的方法很多,可以把cla中的变量传到cpu,在cpu中查看,还可以在cla中控制EPWM,用示波器看。
第三,给的链接我看了,前面介绍了CLA的知识,中间基本是代码的解释,最后讲了CLA调试。
第四,我的目的是验证CLAtask有没有运行,在CLA中变量自加,传到cpu查看,这个值没有变化,cla task end触发的中断也进不去。当我给adc引脚电压扰动,结果寄存器值发生变化,说明ADC是正常的,就是不知道为什么CLAtask不运行?麻烦帮我想想

,

user4522357:

用Cla1ForceTask2andWait();应该能判断出来是不是运行了,进入了死循环就是CLA没运行,我也遇见了问题,现在也是不知道为什么CLA没有运行,不知道是设置的问题还是CMD的问题

,

user5860441:

for(;;){
//if(SampleCount == ADC_BUF_LEN-1)
//{
////asm(" ESTOP0");
//SampleCount = 0;
//}cpudata2++;if (Cla1Regs.MIRUN.bit.INT7 == 1){cpudata1++;}
}

cpudata1一直是0,cla没有运行

,

user5860441:

下午把F28379D_CLAHandsOn_Solution程序烧进芯片,在调试时,task end触发的中断能够进去,说明cla task执行了。但是例程cla_adc_fir32_cpu01不行。

,

Susan Yang:

我试了一下是可以进入中断的(连接了launchpad的GPIO2和GPIO30)

,

user5860441:

我把我写的程序发给你,帮我看看,能否,感谢。

,

Susan Yang:

请问您现在解决问题了吗?

,

user5860441:

感谢关注,我更新C2000,利用里面的empty_project和一个cla例程,在上面添加自己的代码,实现了CLA运行,cla task end 触发的中断,每次都能进去。自己建工程没搞出来,问题没找出来。

,

Susan Yang:

若是可以的话,请您私信一下工程,我们具体看一下,谢谢

,

user5860441:

终于知道原因了,原来是cla program的段和ramfuncs的段重合了,在初始化CLA时,如果把cla的program 定义在RAMLS4 RAMLS5,在执行ADC初始化的DELAY_US(1000);时,就进入了非法中断;如果把cla的program 定义在别处,不会出现非法中断,但是cla program的定义与CMD不符合。

如果把ramfuncs的段定义在RAMD0,就正常了。

我这个CMD是从controlSUITE F28377D V210中拷贝的2837xD_FLASH_CLA_lnk_cpu1。

感觉例程中给的CMD太多了,有的名字一样,但是内容不同,比如F2837xD_Headers_nonBIOS_cpu1,有一个缺少CANA CANB的段定义。

这对新手很不友好。

赞(1)
未经允许不得转载:TI中文支持网 » 28377D CLA执行
分享到: 更多 (0)