历史上的今天
今天是:2024年10月21日(星期一)
2021年10月21日 | ATmega48 看门狗定时器
2021-10-21 来源:eefocus
看门狗定时器由独立的128 kHz片内振荡器驱动。通过设置看门狗定时器的预分频器可以调节看门狗复位的时间间隔,如 P44Table26 所示。看门狗复位指令 WDR 用来复位看门狗定时器。此外,禁止看门狗定时器或发生复位时它也被复位。复位时间有 10 个选项。如果没有及时复位定时器,一旦时间超过复位周期, ATmega48/88/168 就复位,并执行复位向量指向的程序。具体的看门狗复位时序在 P44Table26 有说明。
看门狗定时器还可用来产生中断。这在使用看门狗将系统从掉电状态唤醒是非常有用的。
为了防止无意之间禁止看门狗定时器或改变了复位时间,熔丝位 WDTON 为此提供了 2个不同的保护级别,如 Table 24.所示。请参见P47”改变看门狗定时器配置的时间序列” 。


看门狗定时器控制寄存器-WDTCSR

· Bits 7 – WDIF: 看门狗超时中断标志
当看门狗定时器超时且定时器作为中断使用时,该位置位。执行相应的中断处理程序时 WDIF 由硬件清零。也可通过对标志位写 "1” 对 WDIF 清零。当 SREG 寄存器中的 I 位与 WDIE 也置位时, MCU 执行看门狗超时中断。
· Bit 6 – WDIE: 看门狗超时中断使能
WDIE置"1”时WDE被清零,状态寄存器中的I位置位,看门狗超时中断使能。当看门狗定时器出现超时时执行相应的中断程序。
如果 WDE置位,当超时出现时, WDIE 由硬件自动清零。 这对使用中断时保证看门狗复 位的安全性非常有效。在 WDIE 位被清零后,下一个超时将引发系统复位。为避免看门狗 复位,在每次中断后必须对 WDIE置位。

· Bit 4 – WDCE: 看门狗修改使能
清零 WDE时必须置位 WDCE,否则不能禁止看门狗。一旦置位,硬件将在紧接的 4 个时 钟周期之后将其清零。请参考有关 WDE 的说明来禁止看门狗。修改预分频器也必须置位 WDCE,如 P47“改变看门狗定时器配置的时间序列”所示。
· Bit 3 – WDE: 使能看门狗
WDE为“1” 时,看门狗使能,否则看门狗将被禁止。只有在WDCE为“1”时WDE 才能清零。以下为关闭看门狗的步骤:
1. 在同一个指令内对WDCE 和WDE 写"1",即使WDE 已经为"1"。
2. 在紧接的4 个时钟周期之内对WDE 写"0"。这会禁用看门狗。
工作于安全级别 2 时,即使使用了上述的算法,也无法禁止看门狗定时器。参见 P47“改变看门狗定时器配置的时间序列”所示。
工作于安全级别 1 时, WDE 被 MCUSR 的 WDRF 功能所替换 ,请参见 P41”MCU 状态寄存器 – MCUSR” 中关于 WDRF 的说明。这意味着当 WDRF 置位时 WDE 同时置位。为清零 WDE,在使用上述过程禁用看门狗之前必须清零 WDRF。这一特性保证在出现故障时有多重复位,且在故障解决后可以安全地启动。
Note: 如果在应用中不需要使用看门狗定时器,则在器件初始化时应运行看门狗禁用程序。如果 看门狗被意外使能,如程序跑飞或出现 BOD,器件将会复位,且在结束复位时 WDRF 标 志位置位。这将自动激活看门狗,引发新的看门狗复位。为避免出现这种状况,在初始化 过程中应用程序应将 WDRF 标志位与 WDE控制位清零 。
· Bits 5,2..0 – WDP3..0:看门狗定时器预分频器 3, 2, 1, 与 0
当看门狗定时器使能时, WDP3..0 决定看门狗定时器的预分频器,如 Table26 所示。


下面的例子分别用汇编和 C 实现了关闭 WDT 的操作。在此假定中断处于用户控制之下 ( 比如已经禁止了x全局中断 ) ,因而在执行下面程序时中断不会发生。
汇编代码例程
WDT_off:
; MCUSR中的WDRF 清零
ldi r16, ( 0<< WDRF )
out MCUSR, r16 ; 置位WDCE 与 WDE
ldi r16, (1<< WDCE )|( 1<< WDE ) ; 关闭WDT
ldi r16, (0<< WDE )
out WDTCSR, r16
ret
C 代码例程
void WDT_off(void)
{
/*MCUSR 中的 WDRF清零*/
MCUSR = 0x00
/* 置位WDCE 与 WDE */
WDTCSR = (1<< WDCE) | (1<< WDE);
/* 关闭WDT */
WDTCSR = 0x00;
}
上一篇:ATmega48 中断向量
史海拾趣
|
xp下,fat16/32中应该是支持长文件名,但我在64M U盘上建立一个文件名bb.txt 后,用winhex查看fdt,发现只有短文件名目录项。而且是大写存 xp下,fat16/32中应该是支持长文件名,但我在64M U盘上建立一个文件名bb.txt 后,用winhex查看fdt,发现只有短文件名目录项。而且是大写存储。 请问,xp如何区分大小写的呢??因为没有长文件名目录项存在啊。 … 查看全部问答> |
|
在网上有下了《51+sl811读写U盘的源程序+原理图》的原代码,但找不到原理图,请问哪位大哥有可以寄一份给我,或告知下载地址。谢谢! 我邮箱是: power_wjc@163.com… 查看全部问答> |
|
大家好我想问一下:我做的瘦客户机系统,在两台PC机上实验 现在有个问题:我通过网络从主机传nk.bin镜象到从机后,从机可以访问主机(类似远程桌面系统),但是如果把nk.bin直接拷到硬盘中,从硬盘启动后也可以进入瘦客户机界面,但是就是不能访问 ...… 查看全部问答> |
|
内存96k的,1M Flash 因为想跑eCOS,可就是不行,对比官方的3210E开发板,怀疑是内存不够导致 现在用的是VBT,才20k SRAM,所以想换成VGT试试看。。。 VGT版的不好买吗?google居然都很少有,dkey、派睿居然也没有,汗啊。。。… 查看全部问答> |
|
市场卖的便宜货实在不行,贵的又实在是贵啊~~ 干脆自己做了。 铁的头哦~~ 超耐用 不侧漏。连续12小时通讯测试,丢失率千万分之一不到。振动通讯测试,高温通讯测试(70°)效果都非常不错。 想要的同学可M 我啊~~ USB线给你弄根带屏蔽 ...… 查看全部问答> |
|
使用MSP430AFE253+NRF24L01+,做数据只发送模式,进入LPM3电流为330UA,如果NRF24L01+去掉电流就为0.5UA左右,最后发现是430跟无线发送模块的模拟SPI有问题,但是我怎么配置430的I/O口,电流都300UA以上(接NRF24L01+)。请各位大侠帮忙。(进入LPM ...… 查看全部问答> |




