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.

[参考译文] PMP23126:Alpha 状态和任务调度程序

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/1454794/pmp23126-alpha-states-and-task-scheduler

器件型号:PMP23126

工具与软件:

您好!

几乎在每个基于数字电源的示例项目中、都有基于计时器的任务结构、例如 α 状态、A 分支、B 分支。 但是、我找不到任何解释此状态机的文档。 我实际上需要一个可视化版本的状态机并进行解释。  

1) 1)对于 PMP23126、 您能否简要介绍一下状态机并展示这种安排的任务是如何按如下方式进行的? 视觉解释对我来说至关重要。

2)在 PMP23126中、我们在每个 A0任务中增加了 eTimer0[0]、但我们绝不会使用此数组。 vTimer0[0]++或 vTimer1[0]++ 有什么作用? 这行代码的用途是什么? 它从未使用。

3) 3)在 PMP23126上、您能简要定义任务的时间段吗?

4) 4) 在 PMP23126上、在每个任务上都有"下一次 CpuTimer1的'计数器'达到周期值 Go to b2"注释。 但是、B1任务与下面类似、该函数中没有计数器或等。 当计数器达到周期时、它如何跳转到 B1?

void B1(void)
{

    PSFB_UpdateOCPThreshold();

    PSFB_UpdateRampSlope();

    //
    //the next time CpuTimer1 'counter' reaches Period value go to B2
    //
    B_Task_Ptr = &B2;
}

5) 5) 在 PMP23126中、您能否解释一下这种定期任务调度器是否有任何缺点?

6) 6)我只是想实现三个任务、分别以精确的计时每1毫秒、10毫秒和100毫秒执行一次。 我可以接受微小偏差。 您能简要介绍一下吗?

提前感谢。

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

    Gokhan G.

    1.软件指南中的图8可能对此有所帮助。 请参阅以下内容:

    /cfs-file/__key/communityserver-discussions-components-files/234/pmp23126_5F00_software_5F00_guide.pdf

    2.我认为这是在开发过程中用于调试的目的、但当不再需要时、并没有将其删除。

    3.任务 A 的执行速率为2kHz、任务 B 为20Hz、任务 C 为10kHz。 psfbpcmc_user_settings.h 文件中对此进行了定义。 您还可以查看 psfbpcmc_hal.c 文件中的 PSFB_HAL_setupDevice 函数。

    4.我认为这是移动在代码中的其他地方重构,但评论从未被删除。

    5.我相信这确实取决于你正在安排的任务和更新速率。 您可能希望经常检查保护机制、以避免关断延迟等情况。 这是以牺牲更多利用率为代价的。  

    6.我相信您可以参考在 user_settings.h 和 psfbpcmc_hal.c 文件中设置任务 A、B、C 的方式。 例如、可以将 USER_SETTINGS 中的执行速率更改为1kHz、100Hz 和10Hz、以实现所需的计时。

    此致、

    Ben Lough