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.
大家好、我正在实施一个 I2C 多主机驱动器。 最终、它会卡在所需的众多 while 环路中、并且我的看门狗会将其复位。
我希望避免这种情况、并像一种超时方法那样实现、仅重置驱动器、而不是整个微控制器。
在这2种情况下、它会卡住。
案例1
要将其从控制器切换到主器件、我有以下序列:
它会在此期间卡住。
情形2:
在控制器模式下发送时、它会卡在这些 while 中的任何一个。
注意: 目前、我在同时激活3个微控制器的同时测试冲突(并且从未见过中断发生)、因此"卡住问题" 大约每150-200次激活一次。
所以、我希望创建一个超时值或捕获错误的值、重新启动外设、并中断这些 while。
这是我当前的配置:
韩语-
您是否有备用计时器模块可用于在等待 while 循环时捕获/实现超时?
您可以在进入 while 循环时启动/重置一个定时器、然后在 ISR 中为该定时器设置一个标志。 如果设置了标志、您可以中断 while 循环、然后进行错误处理。
此外、如果已经有一个正在运行的计时器、则可以向该 ISR 添加一个计数器变量。 您可以在启动 while 循环之前对计数器进行复位。
然后、您可以测试计数值以确定是否需要断开 while 循环。
-杰森