ZHCU083I January 2013 – October 2021 TMS320F2802-Q1 , TMS320F28026-Q1 , TMS320F28026F , TMS320F28027-Q1 , TMS320F28027F , TMS320F28027F-Q1 , TMS320F28052-Q1 , TMS320F28052F , TMS320F28052F-Q1 , TMS320F28052M , TMS320F28052M-Q1 , TMS320F28054-Q1 , TMS320F28054F , TMS320F28054F-Q1 , TMS320F28054M , TMS320F28054M-Q1 , TMS320F2806-Q1 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28068F , TMS320F28068M , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M-Q1
例如,考虑以下情况:
SpinTAC 速度规划可用于生成一个含 4 种状态的机械运动序列(请参阅图 9-9)。请注意,此示例中的规划函数 STVELPLAN_run 和 STVELPLAN_runTick 均从 ISR 运行。在最后的执行中,STVELPLAN_run 可以从较慢的 ISR 或者后台循环中运行。
STVELPLAN_run 的最大周期数可能受条件 FSM 状态或转换 FSM 状态影响,但不可能同时受两者影响。
如果代码在 RAM 中运行,则最大周期数 = 374(条件 FSM 状态的固定周期数)+(转换数 * 274)+(EXIT(退出)操作数 * 334)。
图 9-9 中的规划示例配置了从状态 0 开始的三次转换。所有转换均会检查对比变量的各个条件(最差情况),同时为此状态配置了 2 个 EXIT(退出)操作。因此,当执行最后一次转换时,最大周期数 = 374 + (3 * 274) + (2 * 334) = 1864。
如果代码在 RAM 中执行,则最大周期数 = 229(转换 FSM 状态的固定周期数) + ENTER(进入)操作数 * 378。
以上示例显示状态 3 具有 3 个 ENTER(进入)操作。因此,转换 FSM 状态的最大周期数 = 229 + (3 * 378) = 1368。
对比这两种可以产生 STVELPLAN_run 最大周期数的情况。在此示例中,由条件 FSM 状态所决定的最大周期数为 1330。当计算中断所用 CPU 的百分比时,使用此值作为最差情况。
计算中断所用 CPU 的百分比,其中:
在以上计算中,SpinTAC 速度规划的主要组件从 ISR 运行。当从后台循环调用 SpinTAC 速度规划时,中断所用 CPU 的百分比计算方法如下: