请问在启动/引导代码执行期间,我们应该启用还是禁用看门狗?我的朋友告诉我通常在引导代码中禁用看门狗。有人能告诉我这样做的优缺点吗?
这真的取决于你的项目。看门狗旨在帮助确保程序在执行代码时不会“卡住”。-- 如果您的程序在引导过程中可能会挂起,那么在那里加入看门狗可能是有意义的。
话虽如此,我通常会在我的启动程序结束时启动看门狗。
生产代码应始终启用看门狗。兴趣或原型项目显然是可能不需要看门狗的特殊情况。
如果在启动时启用了看门狗,则必须考虑一个特殊情况。擦除和写入内存需要很长时间(擦除整个设备可能需要几秒钟才能完成)。因此,您必须确保您的擦除和写入例程定期服务于看门狗以避免重置。
我一直将其启用。禁用它有什么优点?如果在引导代码期间必须重置它,那又怎样呢?
我猜是因为晶体管开关数量减少,所以能节省微小的功率。根据你睡眠的时间长短,这可能会带来很大的节省。你的朋友可能指的是在实际操作时关闭 WDT,然后在睡眠时打开它的做法。Microchip 关于 他们的 PICs 给出了一个不错的小提示:
"如果在正常操作期间禁用 WDT(FWDTEN = 0),则可以使用 SWDTEN 位(RCON<5>)在进入睡眠模式前打开 WDT"