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.

[参考译文] TMS320F2.8069万M:CPU_TIME模块指南或文档

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/618896/tms320f28069m-cpu_time-module-guide-or-documentation

部件号:TMS320F2.8069万M

您好,

 

我想了解一些有关instaSPIN实验中使用的CPU_TIME模块的更多信息。 在哪里可以找到任何文档?

 

我的具体问题包括:


1) PWM周期的作用是什么?

2)我可以测量代码中任何位置的时间(例如背景循环),还是只对ISR有效?

3) TIME_delta_avg的单位是什么?

3)在双电机实验室中创建了CPU_TIME对象的两个实例。 这是否意味着我可以使用任何数量的完全独立的时间测量?

 

一个额外的注释:CPU_TIME模块通常在实验室中与CPU_USAGE混合使用(例如,我们使用的是前者的函数,但注释中涉及后者),这非常令人困惑。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1)虽然PWM周期包括在CPU_TIMER SET参数函数中,但模块此时不使用它

    2)可以,可以随时访问HAL CPU计时器,尽管您可能需要使用另一个CPU计时器,因为ISR CPU计时器更新可能会干扰正在后台循环中使用的计时器

    3)单位是计时器tick,其分辨率由CPU计时器周期确定。 例如,lab10d将timer2频率设置为CPU频率。 您可以在HAL_setParams()-> HAL_setupTimers()中看到此信息。

    4)这两个CPU_TIME对象都依赖于同一计时器(在本例中为timer2)。 只要您使用计时器确保线程之间不发生冲突,此操作就会生效。

    CPU_USAGE和CPU_TIME模块非常相似,CPU_TIME是这两个模块中较新开发的模块。 我们应该在引用先前开发的CPU_TIME时更改CPU_USAGE的注释;也就是说,用法非常相似,因此这些注释可能交叉适用,尽管使用/时间混乱

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

    感谢您的解释。

    正如您所说的,模块目前不使用PWM_Period,我应该如何理解实验中的这条评论?
    您需要确保“CPU_TIME[n].TIMER_delta最大值”小于“CPU_TIME[n].PWM_Period”–100,以避免ISR时间溢出。

    定时器周期 在HAL_setupTimers()中设置为0xFFFFFFFF,因此这似乎不是有效的问题。

    还有一件事我感到困惑。 我正在将此CPU_TIME模块与CCS中的Profile Clock进行比较,虽然它在使用usDelay()函数(来自ADC模块)进行测试时工作正常,但在与队列模块(尝试测量 queue_executeEvent()的时间)一起使用时会出现巨大的差异。  Profile clock (配置文件时钟)显示约1.5万个周期,CPU_TIME.TIMER_delta_NOW显示约2万个周期! 哪些因素可能导致了这种差异?我应该信任哪种结果?

    编辑:
    我刚刚注意到,当我使用printf函数时,CPU_TIME返回了很高的值,这可能是造成这种差异的原因。 为什么?

    我发现printf()函数中的换行符会给代码执行增加很多时间,尽管配置文件时钟仍显示合理的周期量。 我使用LED检查了它,看起来配置文件时钟在...