This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280041:CLA

Guru**** 2117280 points
Other Parts Discussed in Thread: C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/840037/tms320f280041-cla

器件型号:TMS320F280041
主题中讨论的其他器件:C2000WARE

使用  C2000TmPiccoloTmF28004x 系列 LaunchPadTm开发套件与 CCSv9.1的客户。

他们已开始使用 CCSv9.1中的 CLA 示例项目、该项目的结构类似于 他们在应用程序中要执行的操作。 (C:\ti\c2000\C2000Ware_2_00_00_02\device_support\f28004x\examples\cla)。  项目名称:cla_ex1_background_task。

 

它有3个任务、任务1对由 ePWM 脉冲触发的内部 ADC 进行采样并执行 FIR 低通滤波器。 此时会设置一个标志、以通知后台任务样本已准备就绪。  任务7是由软件触发运行的初始化任务、后台任务则持续运行、从任务1收集样本并将其保留在循环缓冲区中。  循环缓冲区“buffer”在 CPU 主函数中声明,并使用该 pragma 将其放置在 CLADataRAM 中

 

#pragma DATA_SECTION (buffer、"Cla1DataRam");

volatile float buffer[buffer_size];

 

CPU 和 CLA 均可访问该缓冲器。 该示例使用 CCS 绘制缓冲区图。  他们尝试了一个小示例、方法是在任务1中放置一个32位计数器、在任务1中递增计数器、并在任务结束中断服务例程 cla1Isr1()中查看计数器。   他们在 cla_ex1_background_task.c 中添加了以下代码

 

#pragma DATA_SECTION (Task1_Count、"Cla1DataRam");

volatile unsigned long Task1_Count;

 

并添加到 cla_ex1_background_task_shared.h

extern volatile unsigned long Task1_Count;

 

任务1代码现在在 ReadFlag 之后插入了一条语句“Task1_counter++”

 

f_filteredValueReady = true;

Task1_Count++;

 

他们 在任务1中将 Task1_Counter 初始化为0。

 

当 它们在任务1结束中断服务例程中放置一个断点时、 它们期望在每次迭代中看到变量 Task1_Counter 递增1。 但是、在 CCS 中为 Task1_Counter 显示的值未定义(如随机)、因此存在偏差或某种情况。  缺少 CLA 的一些信息。

无符号长整型 CLA_Counter = 0;//全局

#pragma CODE_SECTION (cla1Isr1、".TI.ramfunc")

#endif

__attribute__((中断) void cla1Isr1 ()

  CLA_Counter =任务1_Count;

  EALLOW;

  //

  //清除 ADC 中断标志,以便下一个 SOC 可以

  AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1U;

  //确认任务1的任务结束中断

  //

  PieCtrlRegs.PIEACK.bit.ACK11 = 1U;

  EDIS;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Lawrence、

    我正在研究这一点、并计划在今天(星期四)结束前向您提出问题或建议。

    此致

    Lori

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    劳伦斯

    在提供项目时 、Cla1DataRam 内存(RAMLS2)似乎已满。  将计数器添加到此存储器应会导致生成错误。

    是否以某种方式更改了链接器命令文件或工程以使其编译?

    请检查.map 文件以查看计数器的结束位置以及 CLA 和 CPU 是否可以访问该存储器。

    此致

    Lori

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Lori、

    是客户修改了项目。  Task1_Count 被分配到地址0x9000的第1页 RAMLS2

    如果需要、我可以共享该项目。

    此致、

    劳伦斯  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    劳伦斯

    您是否已检查计数器是否已正确初始化?   您在上面指出初始化在任务1中完成、但示例中的初始化例程在任务7中完成。

    -打开计数器的存储器窗口  

    -在强制任务初始化变量的位置运行

    -如果你连接了 CLA、CLA 将在 mdebugstop 处停止并且你可以单步执行 CLA 初始化代码。

    //
    //强制任务7,一次性初始化任务
    //
    Cla1Regs.MIFRC.bit.INT7 = 1U; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Lawrence Wong"]如果需要,我可以共享该项目。

    感谢您的邀请。  这可能需要更多时间,但(在合理范围内)我宁愿教如何调试问题以使其他人能够这样做:)  

    -洛里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Lawrence、

    我想看看是否需要进一步的帮助来解决此问题、或者我之前的帖子是否有所帮助。  如果问题得到解决、请按"已验证答案"按钮让我知道。  如果没有、请提供更多详细信息。

    此致

    Lori