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.

[参考译文] TMS320F28388D:有关 CLA 后台任务和 ADC 转换的问题

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1475807/tms320f28388d-questions-about-cla-background-tasks-and-adc-conversion

器件型号:TMS320F28388D

工具与软件:

您好!

我在 CLA 上运行了一个高优先级任务、每个任务触发一次 31.25 µs 演示 CPU2计时器0 . 由于这项任务是时间关键型的、我想确保它不会被延迟。

同时、我想使用 CLA 来处理 ADC 转换 就会调用这个函数。 我遇到了 后台任务 、这些任务可以被其他 CLA 任务中断、因此我正在考虑将它们用于此目的。

我有几个问题:

  1. 使用后台任务是一种很好的方法 或者允许它们的开销是否太大?
  2. 据我所知、 任务8. 应该在启动时运行一次以进行初始化。 这需要一个while(1)环路吗? 如果是、由于 CLA 没有真正的"中断"、这不会有问题吗?
  3. 我不经常需要 ADC 值– 每个500 µs 就足够了。 您建议连续转换、还是会有任何不利之处?
  4. 将任务8从标准任务更改为后台任务时、是否有任何注意事项或潜在问题?

感谢您的见解。

此致、

Wilko.

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

    尊敬的 Wilko:

    后台任务和常规任务之间的唯一区别是其他任务可以嵌套在后台任务中。 如果你想要添加一个 while (1)循环(就像只需要一次任务触发一样)、你可以、并且在触发另一个任务前、循环将一直运行。

    但是、对于您的应用、听起来您不需要这个。 您可以将后台任务设置为定期触发(例如由另一个 CPU 计时器外设触发)、并让任务8中的每个 ADC 读取都发生。 如果在任务8执行期间触发了更高优先级的任务、CLA 将首先保存并完成更高优先级的任务。

    涉及的开销应仅限于每个嵌套的上下文保存和恢复、只应是保存和恢复 MVECTBGRNDACTIVE 寄存器中的当前地址。 我认为这不会带来任何重大问题。  

    此致、

    Delaney