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.

[参考译文] CCS/TMS320F28335:如何测量每个循环之间经过的时间?

Guru**** 2535750 points
Other Parts Discussed in Thread: TMS320F28335

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/612205/ccs-tms320f28335-how-can-i-measure-the-elapsed-time-between-each-loop

器件型号:TMS320F28335

工具/软件:Code Composer Studio

你好

我正在尝试测量每次运行代码之间经过的时间。 我查看了示例"CpuTimer"、但我不知道我是否可以使用此示例、因为我不想使用中断、而只想测量经过的时间。 我应该如何测量它?

最棒的

ATA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 ATA、
    使用系统配置时钟对周期进行计数:
    processors.wiki.ti.com/.../Profile_clock_in_CCS

    然后使用以下公式转换为时间:
    processors.wiki.ti.com/.../Profile_clock_in_CCS

    谢谢
    Ki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你,Ki。 但是、我想在我的代码中使用这个经过的时间、所以我需要将它包含在我的代码中。
    例如、在第一个"t=0"时、一个周期之后将为"1微秒"。 我希望能够在我的代码中使用这一次。 我可以这么做吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否将 TI-RTOS 与您的应用配合使用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不、我不知道它是什么以及我应该如何使用它。 您能告诉我它的目的是什么吗? 它是否具有内置函数?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在浏览这个论坛、看到一篇文章说可以使用 eCAP 来实现它。 请问我该怎么做? 或者是否有一个示例文件来显示它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="ATA Khiabani""命令]不,我不知道它是什么以及应该如何使用它。 您能告诉我它的目的是什么吗? 它是否具有内置函数?[/quot]

    TI-RTOS 是 TI 的实时嵌入式操作系统。 它具有用于仪表的功能、例如您所需的功能

    http://processors.wiki.ti.com/index.php/TI-RTOS

    很显然、如果您尚未使用它、则不会仅将其用于性能分析。

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

    [引用 user="ATA Khiabani)]我浏览论坛时,看到一篇文章说可以使用 eCAP 执行该操作。 请问我该怎么做? 或者是否有示例文件来显示它?

    最好在 C2000论坛中提问:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171

    那里的专家可以为您提供最好的帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以设置和清除 GPIO 位、并使用示波器测量经历的时间。
    GpioDataRegs.GPACLEAR.bit.GPIO11=1;
    GpioDataRegs.GPASET.bit.GPIO11=1;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、但正如我说过的、我需要在我的代码中进行这次操作。 代码中的每个循环都需要使用更新的"经过的时间"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要哪种分辨率?

    我建议进行二元论并创建"millis()"功能。 创建一个长无符号变量并设置一个计时器中断、该中断将使其每毫秒递增一次。

    每次通过循环时、您只需记下该变量的值、即可知道经过的毫秒数。 如果使用减法、甚至无需担心翻转。

    如果您需要更好的分辨率、则可以每100us 或诸如此类的值递增一次。

    如果您使用的是 DriverLib/Simpllink、请查看 SysTick 模块。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议。
    我希望能够每20us 进行一次切换、因此分辨率至少为20us。 是否可以每微秒递增一次? 我想如果我能够做到这一点、它有望解决问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     在本文档的末尾有一些 eCAP 代码示例。

    http://www.ti.com/lit/ug/sprufg4a/sprufg4a.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    取决于您的时钟速度,Arduino 上的 micros()每4 us 递增一次。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 TMS320F28335中、时钟速度是否为150 MHz? 那么、它是否应该能够做到这一点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    将此主题移至 C2000论坛

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

    如果您想每20us 执行一次某些任务、那么为什么不只设置一个 CPU 定时器或 ePWM 定时器来恰好每20us 生成一个中断呢?