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.

[参考译文] TMS320F280049C:根据多个 SOC 的多次 EOC 生成中断

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1368411/tms320f280049c-generating-interrupt-according-to-multiple-eoc-of-multiple-soc

器件型号:TMS320F280049C
Thread 中讨论的其他器件:C2000WARE

工具与软件:

您好!

我尝试使用不同 ADC 内核的多个 SOC 的多个 EOC 信号来生成单个中断。

我正在使用芯片的全部三个 ADC 内核(A、B 和 C)

我设置了采样和转换配置、因此它们没有问题。

总共有9个采样和转换。

我希望在所有转换完成后生成一个中断。

对于每个 ADC 内核、我可以为同一中断生成3个 EOC 触发、但在这种情况下、我想我不能知道每个内核的所有转换是否都已完成。 因为所有 ADC 内核同时运行、且内核之间可能存在细微差异、并且可以更早地设置其中一个 EOC。

我想象一下、如果我可以将来自每个内核的三个 EOC 信号插入逻辑中、操作者的输出可以是中断源。 但我不知道这是否可行。

如何为我的需求创建解决方案?

此致、

Gökhan μ A。

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

    尊敬的 Gokhan:

    我认为 解决此问题最简单的方法是让全部三个 EOC 信号触发中断、但您需要在执行 ISR 计算之前检查其他中断是否被触发。 例如、您可以在每次触发中断时递增某些全局变量、如下所示。

    执行此类操作的 CPU 开销应该非常低。   

    example_interrupt(){

      if (global_var=2){

        do_computation();

        global_var = 0;  

      }

      否则{

        global_var++;  

      }

    }

    此致、

    Ben Collier

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

    Ben、您好!  

    感谢您的回答。

    如果我不错、您是说每个 EOC 触发相同的中断对吧?

    如果是、我想知道如果一个 EOC 触发中断、而在检查条件&增大全局变量时、第二个 EOC 触发中断会发生什么情况。 由于第一个中断未被清除、第二个中断触发将发生什么情况?

    这三个 EOC 将同时生成。 可能在1-2个时钟周期内、因为其相关的 ADC 内核并行运行。

    另外、单独输入和存在三个中断(即使相同)也会导致执行时间。 是否可以组合三个 EOC 并触发单个中断?

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

    您好!

    此图像来自 TRM:

    每个 ADC 有4个中断、我曾建议您对每个 ADC 使用不同的中断。

    此致、

    Ben Collier

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

    Ben、您好!

    再次感谢您的支持。

    当我看到 C2000ware 5.01中的"ADC_EX10_MULTIPLE_SoC_EPWM"示例时、我注意到只有 ADCA 中断用于 ADCA 和 ADCC 转换结果。 EOC2置位时会触发 ADCA 中断。

    那么、我们如何确保在我们处于 ADCA 中断时所有 ADCC 转换都已完成?

    此致、

    Gökhan μ A。

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

    您好、Gökhan

    该专家目前正在休假、到2010年6月为止。 请等待、直至收到回复。 感谢您的耐心!

    此致、

    Allison

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

    您好!

    那么、我们如何才能确保在 soc 中断期间全部完成 ADCC 转换?

    该示例依赖于具有相同时序的两个 ADC、大多数情况都是如此。 如果一些软件停止然后恢复其中一个 ADC、则情况将不再是这样。

    那么、我们如何才能确保在 soc 中断期间全部完成 ADCC 转换?

    我认为唯一的方法就是使用来自 ADCC 的中断标志、该标志由 ADCC 的最后一个 EOC 触发。 即使不为 ADCC 使用 ISR、也可以执行如下操作:

    while (来自 ADCC 的中断标志为低电平){

    不采取任何措施;

    }

    然后确保之后从 ADCC 清除中断标志。

    此致、

    Ben Collier