ZHCU712B april 2020 – july 2023
该示例使用 CLB 的计数器、FSM 和 HLC 子模块来实现事件计时功能,该功能可以检测中断服务程序是否花费过长的时间来响应中断。该示例将四个 PWM 模块配置为在向上计数模式下运行,并在发生计时器零匹配事件时生成从低到高变化的边沿。零匹配事件还触发 PWM ISR,就该示例而言,该 ISR 包含长度可变的虚拟有效负载。在 ISR 结束时,对 CLB GP 寄存器执行写操作,以指示 ISR 已结束。
CLB 模块在检测到 PWM 计时器零事件后启动一个计时器。计时器“匹配 2”计数被设置为相应 PWM ISR 的最大预期持续时间。如果在达到匹配 2 计数之前未对 GP 寄存器进行写入操作,则 HLC 会触发 CLB 中断。四个 PWM 模块和 CLB 逻辑块的配置类似。
图 4-10 概述了一个逻辑块的工作方式。上半部分显示了 PWM 模块的配置,该配置用于生成固定频率波形,每个计数器零匹配处具有上升沿,比较 A 匹配处具有下降沿。零匹配事件会生成一个 CPU 中断,目的是当 PWM ISR 未在指定时间内完成时触发 CLB 中断。
下半部分显示 CLB 计数器,该计数器在 PWM ISR 开始时开始计数。如果 ISR 在达到匹配 2 值之前没有响应,则会生成一个中断。CLB ISR 包含一条“ESTOP”指令,其作用类似于程序中的软件断点。
要运行该示例,请执行以下过程:
在后续描述中,假设使用上述 C2000Ware 目录。
打开 CCS“Expressions”窗口并添加四个程序变量:“payload_x”,其中“x”为 1 到 4。请注意,在程序开始时,所有有效负载变量均已设置为 45。有效负载在每个 PWM ISR 中实现为“for”循环,每次迭代需要 12 个周期,因此有效负载 45 对应于大约 540 个周期。
打开 .syscfg 文件并检查四个 CLB 模块的计数器 0 中的匹配 2 设置。请注意,所有计时器限制都设置为 3200。
使用默认有效负载运行程序并验证 CLB 中断是否不会触发。然后,停止该程序并增加任何有效负载。重新运行该程序并确定是否超出了任何 ISR 限制。请记住,由于 PWM 未同步,因此最坏情况的 ISR 延迟是所有有效负载的总和加上中断开销。