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.

[参考译文] TMS320F28P550SJ:CLA 类型2 -如何从 CLATask1内触发 CLATask2

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1467367/tms320f28p550sj-cla-type-2---how-to-trigger-clatask2-from-within-clatask1

器件型号:TMS320F28P550SJ

工具与软件:

各位专家、您好!

在我的当前任务中、我正在 使用 CLA (CLA 类型2)来卸载快速任务、并且我正在寻找一种从 CLATask1内触发 CLATask2的方法(不使用 CPU C28x)。您知道可以执行此操作或其他方法的任何 CLA 指令吗?  

我使用了 EPWM9来触发任务1、现在我希望从任务1中触发任务2。我不打算使用任务1中的 CPU 软件中断、因为我不会中断 CPU 中的高速中断。

我希望能够为这一挑战提供一些帮助。 我在下面添加了一个图来帮助解释这种情况。

谢谢!

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

    您好、

    可以、您可以将 SOFTINTFRC 寄存器中的相关位从 CLA 任务1写入软件触发任务2。 确保通过设置 SOFTINTEN 中的任务2位字段来启用此软件触发。 这些寄存器均只能由 CLA 内核访问、不会要求/对 CPU 进程造成任何干扰。 有关这些寄存器的说明、请参阅此处提供的链接。

    此致、

    Delaney

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

    您好、Delaney、  

    感谢您的意见。 我认为这里有一些混淆。 您所指的 SOFTINTFRC (软件中断力)实际上会向 CPU 强制执行该任务的软件中断。 如果我误解了数据表、请更正我。 下面是屏幕截图。
    您说这个 SOFTINTFRC 将触发相应的 CLATASK。 是这样吗? 我可以尝试一下、但我在 TRM 中没有看到任何提及。

    此致



      

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

    您好、

    我的错误、是的、您是对的。 CLA1SOFTINTEN 和 CLA1INTFRC 在 C28x 端生成中断、而不是 CLA。 请参阅常见问题解答问题的答案(已 在此处链接)、如下所示:

    如果您想从另一个任务触发任务、但阻止任何 CPU 干预、我建议使用前面提到的 ePWM 寄存器解决方案。

    此致、

    Delaney

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

    您好、Delaney、  
    非常感谢您提供有用的建议。 我发现了该文档、 很高兴知道 ePWM 方法是 我唯一可以使用的方法。

    我想问一下、使用 EPWMxINT 同时触发 CLATask1和 CLATask2是否被视为最佳实践。 如果是、则将根据优先级首先触发 CLATask1。

    此致

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

    您好、

    您的应用是否要求在每次调用任务2之前执行任务1的每次调用?

    • 如果不需要、则任一种方法都可行(使用相同的源触发或使用不同的源/ePWM 通过软件触发第二种)
    • 如果是、从技术上讲、同时触发应该没有问题(由于优先级方案)。 但是、我唯一担心的是在芯片上移动的内部任务触发信号涉及任何类型的潜在延迟、可能导致任务2的触发首先达到(并在收到任务1触发信号之前开始执行任务2)。 据我所知、发生这种情况的可能性很低、但是、如果你想确保安全、我可以使用不同的 ePWM 实例、并在任务1结束时直接触发它。

    此致、

    Delaney

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

    感谢您的意见、Delaney。
    我对如何进行这里的讨论有了一些了解。


    我有 EPWM9、这很好、我还可以使用 EPWM1来生成 SOCA。 随后、我可以使用 ADC EOC INT 触发 CLATask1。 在任务1结束时、我可以强制触发 EPWM8 INT 以触发 CLATask2。 这有道理吗?

    我将在任务实施和测试完成后提供更新。  


    此致
    深  


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="581592" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1467367/tms320f28p550sj-cla-type-2---how-to-trigger-clatask2-from-within-clatask1/5635792 #5635792"]EPWM8 INT[/QUOT]

    当然我是说** EPWM9INT

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

    您好、

    这种设置听起来不错。 我现在将关闭该主题、如果该主题 在实施后遇到任何问题、请随时进行再次讨论。

    此致、

    Delaney