ZHCACV2 july 2023
本节包含 PFC 实验中 ISR1 的中断执行时间,并介绍运行分析测试的过程。
在构建和加载代码之前,为所需的 ISR 添加分析代码。使用 API CycleCounterP_getCount32() 在 ISR 开始时捕获周期计数器的值。使用同一 API 在 ISR 结束时捕获周期计数器的值。现在,结束计数器值和开始计数器值之间的差异给出了执行 ISR1 代码所需的确切 CPU 时钟周期数。此分析代码在应用程序中进行了注释,因为它仅用于对 ISR1 执行时间进行基准测试。要使用此代码,请在工程中定义 PROFILING_ISR1_MAIN 宏。
通过 CCS 构建代码更改并在 AM263x controlCARD 中加载代码。在“Watch”窗口中添加变量 TINV_startPowerStage、TINV_closeGiLoop、Max_CPU_Cycles 和 Min_CPU_Cycles。在 CCS 中运行应用程序,并设置 TINV_startPowerStage = 1 和 TINV_closeGiLoop = 1 的值,以启动电流和电压环路转换。暂停代码并查找 Max_CPU_Cycles 和 Min_CPU_Cycles 的值以查看所记录的值。要复位 CPU 周期值,请将 Max_CPU_Cycles 设置为 0,将 Min_CPU_Cycles 设置为任意最大值。
此基准测试中未捕获 ISR 中断延迟,即从硬件中断触发 ISR 到软件应用程序中开始执行 ISR1 所用的时间。
表 5-4 中的 CPU 周期值在“Max”列中较高,因为未缓存代码并且为首次执行设置了一些标志。表的“Min”列中列出了 Control ISR1 在首次执行后的执行。“Min”列中的值用于捕获理想情况下的 ISR1 执行时间。
最小值 | 最大值 | |||
---|---|---|---|---|
实验编号 | CPU 周期数 | 执行时间 (μs) | CPU 周期数 | 执行时间 (μs) |
实验 5 | 599 | 1.4975 | 627 | 1.5675 |
实验 6 | 842 | 2.105 | 895 | 2.2375 |
实验 7 | 856 | 2.14 | 924 | 2.31 |