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.

[参考译文] RM48L950:SCI 对我的 RTI 计时器产生负面影响

Guru**** 2445440 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/623080/rm48l950-sci-negatively-impacting-my-rti-timers

器件型号:RM48L950
主题中讨论的其他器件:HALCOGEN

我注意到、一系列 SCI 传输会对我的 RTI 计时器产生负面影响。

我的应用具有 RTI 计数器0、配置为在4个周期上生成中断、提供1ms、10ms、100ms 和1000ms 回调。 在回调函数中、我处理一系列计时器、这些计时器分别配置为1ms、10ms、100ms 和1000ms 分辨率。 迄今为止,解决这些计时人员问题从未成为我的关切问题。

但是、我最近使用 SCI 通道上的调试输出加载了1000ms 回调。 调试输出相当重、似乎是1ms 节拍的源、开始落后于1秒节拍。

例如、845个1秒时钟周期后、我只看到755106个1毫秒时钟周期。 这种情况以前从未发生过、在1s 周期增量为1ms 时、1秒周期将完全如您所期望的那样翻转。

这两个构建之间的唯一区别是、我每1秒调用一次 SCI 通信调试输出。 在中、总 SCI 以9600波特输出大约50个字节。 因此、根据我的计算结果、应该花费0.04s;当然、这一时间长于1ms、也是10ms。 因此、有充分的理由希望 SCI 驱动程序例程被1ms 节拍和10ms 节拍中断。

我的问题是、RTI 中断为什么不会优先于 SCI 驱动程序。 我已经将 HALCoGen 中的 SCI 驱动程序设置为低电平。 我找不到可以提高 RTI 优先级的其他地方、但我现在假设应该可以让我的1ms 节拍优先?

提前感谢您提供有关优化 RTI 设置的任何信息。

Jamie

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

    除此之外、我为什么要使用通知例程来代替比较中断例程来处理回调?

    void rtiCompare3中断(void)
    {
    //用户代码开始(83)*/
    //*用户代码结束*/
    
    rtiREG1->INTFLAG = 8U;
    rtiNotification (rtiNOTIFICATION_COMPARE3);
    
    //用户代码开始(84)*/
    
    UnI_TIM_TIMERS_1sec_CBK ();
    
    //用户代码结束*
    }
    

    这就是我刚才所说的、我从未见过有任何理由将回调函数移至通知例程。

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

    首先、我对延迟回答您的问题表示歉意。

    关于您的问题、当您调整 SCI 中断优先级时、这是否可以解决 RTI 中断的延迟问题? 也可以将 RTI 中断指定为 FIQ 与 SCI 中断的 IRQ。 FIQ 中断将优先于 IRQ。

    关于回调函数的放置位置、我认为这是由您决定的。 因此、无论您的系统级需要什么、显示如何工作都是可以的。 在通知函数本身中保留回叫函数没有硬性要求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更改 SCI 中断的优先级不会产生任何明显的差异。 我所做的是调整调试输出、以最大程度地减少传输的字节数、并将其移至1秒回调。 与第二个漂移相比、这改善了我在 ms 内看到的结果、但并未完全消除问题。

    我将 RTI 作为 FIQ、看看它是否有用。 中断优先级(级别)的更改并未解决、这仍然让我感到惊讶。

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

    很抱歉后续行动晚了、但 FIQ 的变化是否显示有任何改进? 我还感到惊讶的是,优先事项的变化没有显示出改善。 您是否允许在应用程序中使用嵌套中断?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我查看了 FIQ、并了解到建议使用汇编器来实现这些中断、我还认为我在中断例程中具有的逻辑也许是我在尝试之前可以进一步优化的东西。 总之、不是、我没有尝试 FIQ、因为我认为这对我来说现在不会是永久性修复。

    优先级的变化没有帮助使我感到困惑、我真的需要在这上面放置一个逻辑分析器、以便清楚地了解我们看到的延迟。 现在、我无法投入时间来解决这个问题。

    您能不能评论嵌套中断的允许-这是我应该专门设置的东西、还是您提到一个较低优先级中断中的数据在较高优先级中断中被修改的可能副作用-以及可能产生的负面影响 具体取决于应用。

    谢谢

    Jamie

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

    如果您不使用嵌套中断、我的问题与它们更相关。 即、如果 SCI 中断正在消耗所有可用的 CPU 资源、RTI 中断可能只能定期获得服务、这将影响其有效性、即使 SCI 的优先级较低。
    如果您有兴趣、请访问以下链接、获取有关 Hercules 的嵌套中断用法的应用手册: www.ti.com/.../spna219.pdf