Other Parts Discussed in Thread: AM6442, SYSCONFIG
器件型号: AM6442
主题: SysConfig 中讨论的其他器件
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.
Other Parts Discussed in Thread: AM6442, SYSCONFIG
器件型号: AM6442
主题: SysConfig 中讨论的其他器件
尊敬的会议:
EPWM ISR 优先级当前设置为 0(R5F 上 FreeRTOS 允许的最高优先级)。
最初它是优先级 15、但作为调试步骤的一部分、我将其更改为 0。
但是、即使处于优先级 0、当启用 FreeRTOS 时、ePWM ISR 仍会延迟。
您能告诉我 在没有抖动或错过周期的情况下、在 FreeRTOS 上实施周期性 60Hz 任务的推荐方法吗?
我想知道 AM64x R5F 的最佳实践、能够以极小的延迟、无漂移的方式实现稳定的周期性任务 (60Hz 时约为 16.66666ms)。
此致、
Miyako
我想了解 AM64x R5F 的最佳实践、以超小的延迟和无漂移的方式实现稳定的周期性任务 (60Hz 时约为 16.66666ms)。[/报价]vTaskDelayUntil () 可用于以下目的: https://www.freertos.org/Documentation/02-Kernel/04-API-references/02-Task-control/02-vTaskDelayUntil
但是、即使处于优先级 0、当启用 FreeRTOS 时、EPWM ISR 仍会延迟。将其设置为优先级 0 是正确的、但您的 ISR 是否使用任何 FreeRTOS API? 对于 R5F 的 FreeRTOS 内核、configMAX_SYSCALL_INTERRUPT_PRIORITY 设置为 4、因此如果任何优先级高于此值的 ISR 使用 FreeRTOS API、则可能会导致一些未定义的行为、如果此 ISR 使用 FreeRTOS API、则可以将优先级设置为 4。 请参阅以下内容: https://www.freertos.org/Documentation/02-Kernel/03-Supported-devices/02-Customization#configkernel_interrupt_priority-configmax_syscall_interrupt_priority-and-configmax_api_call_interrupt_priority
[/quote]
尊敬的会议:
感谢您的解释。
关于 60Hz 周期任务:
我知道 vTaskDelayUntil () 是推荐的 FreeRTOS 方法、但由于 AM64x R5F 上的 1ms 节拍分辨率和中断延迟、似乎很难实现完全稳定的 16.666ms 周期。
我还在优先级 0 和其他几个优先级上测试了 ePWM ISR、但只要 FreeRTOS 运行、ISR 仍会显示延迟和抖动。
在其他 E2E 线程中、由于中断流水线行为和系统活动、EPWM 中断似乎仍会在 R5F 上经历延迟。
我的问题是:
1.使用 FreeRTOS 任务调度在 R5F 上实现抖动‑自由 60Hz 环路是否现实可行?
2.还是使用 EPWM ISR 并通知任务以获得准确计时而不是依赖于任务延迟的推荐方法? (使用信标)
3.在 R5F 上启用 FreeRTOS 时、通常预计 ePWM ISR 延迟吗?
对于 AM64x R5F 上低‑抖动周期性控制环路的最佳实践、如有任何指导意见、都将不胜感激。
此致、
Miyako
尊敬的 Miyako:
[quote userid=“659154" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1631931/am6442-epwm-isr-delayed-missed-when-enabling-freertos-on-am64x-r5f/6295974 实际上是否可以使用 FreeRTOS 任务调度在 R5F 上实现抖动‑自由 60Hz 环路?只使用任务调度和 vTaskDelay 函数是不可能的。 这是因为 FreeRTOS 节拍的分辨率为 1ms 节拍、因此无法实现 16.66ms 的精确周期。
[quote userid=“659154" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1631931/am6442-epwm-isr-delayed-missed-when-enabling-freertos-on-am64x-r5f/6295974 或者、是否推荐使用 ePWM ISR 并通知任务的准确计时而不是依赖于任务延迟的方法? (使用信标)是的、这将是获得精确的 60Hz 任务的建议方法。
[quote userid=“659154" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1631931/am6442-epwm-isr-delayed-missed-when-enabling-freertos-on-am64x-r5f/6295974在 R5F 上启用 FreeRTOS 时、通常是否需要 ePWM ISR 延迟?
[/报价]是的、由于中断流水线、上下文保存和其他可能的场景(如 FreeRTOS 关键部分)、预计会有一些延迟、但这应该很小、您能告诉我您当前观察到的延迟/抖动量。
如果您观察到较大的延迟、则可能来自 FreeRTOS 内核代码的关键部分、这些部分会屏蔽高于优先级 configMAX_SYSCALL_INTERRUPT_PRIORITY (4) 的中断。 您也无法从优先级低于 4 的 ISR 调用任何 FreeRTOS API、因此、如果 ISR 具有 0-3 优先级、则无法调用 Semaphore_POST、如果执行此操作、可能会导致内核数据损坏或任务调度程序损坏、从而导致未定义的行为。
是的、如果您使用的 ISR 的优先级高于 4、那么您可以观察到一些延迟、如果该延迟对您来说是不可接受的、那么您可以继续使用裸机应用程序。 最好知道您目前观察到的延迟是多少(应该是几个小时)。
此致、
会面。