NXP MCU 技术论坛
直播中

哈哈哈

11年用户 863经验值
擅长:可编程逻辑
私信 关注
[问答]

eTPU - AN4907引擎控制演示的问题求解

我目前正在研究 eTPU - AN4907 引擎控制演示。在 etpuc_fuel.c(FUEL 函数)中,有两个线程(UPDATE_0 和 UPDATE_1)以根据最新的 injection_time 和 injection_end_angle 值刷新和驱动喷射信号。
我很难理解红色圆圈代码的工作原理?(见下文)


我曾经在ASH WARE eTPU2+ Development Tool中模拟运行这一段代码。不幸的是,无论我做什么,我都无法运行这个部分。我添加了额外的垃圾 while 循环以延长设置 MRLA 的时间,以便在设置 MRLA 时发送 HSR。  


下面是发生的情况:UPDATE_1 线程正在等待 PULSE_START 线程得到服务。因此,当 UPDATE_1 线程正在服务时,MRLA 已经清除。因此,红色圆圈代码(如果部分)不起作用。 正常吗?如果它不起作用(也许我们可以说它是一个死代码?)为什么我们将这个 if 部分放入 UPDATE_0 和 UPDATE_1 线程?
注意: SPARK 函数中也存在相同的设计


更多回帖

发帖
×
20
完善资料,
赚取积分