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.

[参考译文] CC2652PSIP:Task_sleep 延迟问题:延迟长于预期

Guru**** 2393725 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1467265/cc2652psip-task_sleep-delay-issue-delays-longer-than-expected

器件型号:CC2652PSIP
主题中讨论的其他器件:SysConfig

工具与软件:

您好!

我遇到问题 Task_sleep 在 TI-RTOS 中、任务的延迟明显长于预期。 具体来说、我尝试通过指定Task_sleep(10000)(100ms = 10000次10 µs 滴答周期)将任务延迟100ms。 但实际延迟始终约为1.221秒。

以下是配置和设置:

  • 节拍周期 :10微秒、配置为周期模式。
  • 任务 :单个任务处于活动状态、所有其他任务都已注释掉。
  • 硬件计时器 : GPTIM1用于在此任务中对脉冲进行计数。
  • 观察结果 :延迟比预期的要长,但在使用 FreeRTOS 和使用生成类似代码时,没有发现此问题vTaskDelay

我已经尝试了以下方法:

  1. 验证了Clock.tickPeriod是否在 SysConfig 中正确设置为10 µs。
  2. 已确保任务是唯一的活动任务、并且环境最小。

问题:

  1. 这可能会导致什么原因 Task_sleep 导致延迟比预期更长?
  2. 之间是否存在已知的交互 Task_sleep 可能会干扰时序精度?
  3. 是否有办法通过实现更准确的延迟 Task_sleep 或者 TI-RTOS 中的替代方法?

我们非常感谢您提供任何见解或指导。 谢谢!

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

    Chris、您好!

    您使用的是哪个 SDK 版本和 CCS 版本?  

    我要在最后尝试设置类似的测试(使用 task_sleep + GPtimers)!

    谢谢!
    Alex F

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

    谢谢!


    CCS 版本= 12.8.0
    SDK 版本= SimpleLink CC13xx CC26xx v7.41.0.17

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

    Chris、您好!

    很抱歉耽误您的时间!

    我设置了使用 GPTimers +睡眠(睡眠调用 Task_sleep)的测试环境、结果如下。  

    我使用 GPTimers 切换红色 LED、然后在 main 中执行 while 循环、其中 SLEEP 和 GPIO 切换以切换绿色 LED。

    GPTimer 红色 LED 以1ms (993us)的频率切换。

    睡眠绿色 LED 在1s 切换  

    在您的设置中、您可以将直接 task_sleep 调用替换为间接睡眠调用、看看这是否会产生任何影响?

    谢谢!
    Alex F

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

    您好!

    感谢您花时间对此进行测试。 但是、我认为这种方法对解决我的问题没有帮助。 您能否在此处添加代码以便我回顾您做了什么?

    与配合使用的器件 Simple Peripheral BLE 示例 使用计时器捕获脉冲并在中断回调中对其进行计数时、会遇到问题。 为了管理此操作、我创建了一个额外的 TI-RTOS 任务、该任务调用Task_sleep()。 您能否模拟此设置、以验证示例中是否存在潜在错误?

    在使用 FreeRTOS 时、我不会遇到此问题;但是、没有针对 FreeRTOS 的简单外设示例、我认为这是更好的操作系统。

    感谢您的帮助、期待您的答复。

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

    Chris、您好!

    下面是我的代码、如果我们想看看我们是否可以获得用 BLE 示例测试 GPTimer 的示例设置、  

    e2e.ti.com/.../empty_5F00_LP_5F00_CC2652R7_5F00_tirtos7_5F00_ticlang.zip

    谢谢!
    Alex F

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

    Chris、您好!

    与我们的 BLE 专家交谈后、他建议使用 ClockP 驱动程序而不是 GPTimer、以满足您的计时需求、请参阅 https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_8_30_01_01/docs/drivers/doxygen/html/_clock_p_8h.html。 

    谢谢!
    Alex F

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

    您好、Alex、

    感谢您提供解决方案。 我将在明天一天结束时实施和测试它。 但是、我仍然想了解为什么Task_sleep函数的延迟比预期要长得多(因数为10)。

    您能向 BLE 专家咨询有关解决此问题的任何见解吗?

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

    Chris、您好!

    我希望 BLE stack + Task_sleep 中的内容会超出预期地"延迟"函数。  

    谢谢!
    Alex F

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

    我曾尝试使用 ClcokP.h 驱动程序 、但遇到了同样的问题、即延迟时间比应有的时间长近10倍。  BLE 专家是否还有其他建议?  是否有使用 FreeRTOS 的简单外设示例?  FreeRTOS 不存在这些问题。