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.

[参考译文] AM2432:R5F 中的 Σ — Δ ISR 进入时刻抖动

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1557729/am2432-sigma-delta-isr-entrance-moment-jitter-in-r5f

器件型号:AM2432


工具/软件:

嗨、TI、

我们使用 PRU 成名差值、基于触发器的双更新模式。 SD 完成后、它会在 ARM R5F 侧生成中断。 我们将此中断 (SD ISR) 配置为最高优先级。 但我们发现进入该 ISR 的时刻有非常大的抖动、可以达到 4us。 我们无法理解为什么以及如何减少发射。 需要您的帮助。

捕获此抖动的方法是在请求 SD ISR 时添加时间戳并计算两个 ISR 之间的时间差。 预计时间为 62.5us、但我们看到最大值为 66.4us。

   

  

两个 ISR 之间的时间间隔(一个有趣的部分是 FFT 显示的纹波是 1k Hz 的多次)

一个假设是、此 SD ISR 会阻止 FreeRTOS、并从 FreeRTOS 切换到 ISR 需要较长时间。 我们在 RTOS 中有 250us、500us 和 1ms 调度器。 我将所有测试时间都增加到 2ms 以进行测试。 我有更好的结果。  

  

增加 RTOS 调度器周期后两个 ISR 之间的时间间隔

谢谢

Logan

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

    您好、Logan、

    在您分享的测试用例中、当 FreeRTOS 调度器周期增加到~时、ISR 抖动从~μ s 7.5µs 减少到 μ s 3µs。 这表明较短的调度器节拍周期 (250µs、500µs) 会增加与 RTOS 相关的开销、这可能导致 ISR 抖动。

    我认为观察到的抖动可能受多个因素的影响:
    1. FreeRTOS 调度程序节拍抢占 ISR。
    2.全局中断被暂时禁用的关键部分。
    3.内存访问延迟,特别是在较慢内存 (DDR) 中的 ISR 代码或 FreeRTOS 代码。

    之前的一个类似场景是、我们通过将整个 FreeRTOS 库放置在最快的存储器 (MSRAM) 中来降低抖动、该存储器消耗了大约~40KB 的 MSRAM。

    我不确定您的应用程序当前是在 MSRAM 还是 DDR 模式下运行。 如果它在 DDR 上运行、我建议尝试将 FreeRTOS 库和高频 ISR 代码放置在 MSRAM 中、并检查抖动是否改善。

    这种方法通常提供更确定性的 ISR 时序。

    https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1326858/am243x-freertos-jitter?pifragment-323357=2#5118831

    我们需要在版本构建中测量抖动值。

    此致、

    Anil.

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

    尊敬的 Anil:

    谢谢你。 我们对您的发布版本测试结果感兴趣。

    我也来自 STX。 有关设置的更多信息、

    1. FreeRTOS configTICK_RATE_Hz 设置为 1000、但我们将一些调度器配置为 250us。 在 SD ISR 中、我们还手动执行调度器。 该 ISR 会执行大约 10-20us。

    2.在我们的应用中使用了 DDR、SRAM 和 TCM。

    谢谢

    Logan

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

    您好、Logan、

    如果希望我在我这边进行测试、我需要在 EVM 上运行可重现的代码。

    请在 EVM 上共享可重现的代码

    如果您只是在版本构建中运行相同的示例、则可能会得到正确的结果。

    如果您在调试构建中进行测量、则 抖动结果不是正确的值。

    此致、

    Anil.