AVR微控制器看门狗定时器的使用与配置
1. 看门狗定时器的工作模式
看门狗定时器(Watchdog Timer)有三种不同的工作模式,以下是具体介绍:
- 看门狗复位(Watchdog Reset, WDR) :若在超时时间内未对看门狗定时器进行复位操作,整个AVR微控制器将被强制复位。复位重启后,MCU状态寄存器(MCUSR)中的WDRF位会被置为1。通过查询该位,可判断AVR微控制器是否由看门狗触发复位。从看门狗引发的复位中唤醒后,看门狗定时器仍处于启用状态,但此时它以最短的超时时间运行,而非最初配置的时间。
- 看门狗中断(Watchdog Interrupt, WDI) :在每次看门狗定时器超时结束时,会触发一个中断。
- 中断与复位(Interrupt and Reset) :首次看门狗定时器超时时触发中断,下次超时时系统将复位,除非再次设置WDIE位以阻止复位。只要WDIE位持续被设置,系统就不会复位,仅触发中断。
数据手册中对看门狗定时器的使用给出了警告:若看门狗意外启用(如由失控指针或电源欠压情况导致),设备将复位,且看门狗定时器会保持启用状态。若代码未设置处理看门狗的逻辑,可能会导致超时复位的无限循环。为避免这种情况,即使不使用看门狗,应用程序软件也应在初始化程序中清除看门狗系统复位标志(WDRF)和WDE控制位。
不同的Arduino开发板的引导加载程序对看门狗定时器的处理方式不同。例如,Uno的引导加载程序在启动时会立即禁用看门狗,而Duemilanove的引导加载程序则不会,该开发板会出现看门狗复位循环的问题。以
超级会员免费看
订阅专栏 解锁全文

2667

被折叠的 条评论
为什么被折叠?



