历史上的今天
返回首页

历史上的今天

今天是:2024年12月14日(星期六)

2021年12月14日 | ATmega88 看门狗定时器

2021-12-14 来源:eefocus

看门狗定时器由独立的128 kHz片内振荡器驱动。通过设置看门狗定时器的预分频器可以调节看门狗复位的时间间隔,如 P44Table26 所示。看门狗复位指令 WDR 用来复位看门狗定时器。此外,禁止看门狗定时器或发生复位时它也被复位。复位时间有 10 个选项。如果没有及时复位定时器,一旦时间超过复位周期, ATmega88 就复位,并执行复位向量指向的程序。具体的看门狗复位时序在 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;
}


推荐阅读

史海拾趣

Coil-Q Corporation公司的发展小趣事

随着全球环保意识的提高,Coil-Q积极响应绿色发展的号召,将环保理念融入公司的生产和经营中。公司投入大量资金研发环保材料和技术,优化生产工艺,降低能耗和排放。同时,Coil-Q还积极参与环保公益活动,推动行业的绿色转型。

Clever Little Box公司的发展小趣事

Clever Little Box公司成立于1964年,当时正值电子行业的蓬勃发展时期。创始人凭借对音频和电子技术的深厚理解,以及对市场的敏锐洞察,决定成立这家公司,专注于音频和电子组件的分销。创业初期,公司面临着资金短缺、市场竞争激烈等诸多挑战,但创始人凭借坚定的信念和不懈的努力,逐渐在市场中站稳了脚跟。

Gruner AG公司的发展小趣事
将光耦合器接入实际电路中,测试其是否能正常传输信号并实现电气隔离。
达方(DARFON)公司的发展小趣事

随着市场竞争的加剧,达方电子意识到单一产品线的风险。因此,公司开始实施多元化战略,逐步拓展至电源元件、整合通讯元件等领域。通过多元化战略的实施,达方电子成功降低了经营风险,并为公司带来了新的增长点。

DMEL Inc公司的发展小趣事

在技术创新的基础上,DMEL Inc开始积极拓展市场。公司首先瞄准了欧美等发达国家市场,通过参加国际展会、建立海外销售网络等方式,成功打开了国际市场的大门。同时,DMEL Inc也关注国内市场的变化,不断调整产品策略,满足国内消费者的需求。随着市场份额的逐步扩大,DMEL Inc的知名度也不断提升。

Bedford Opto公司的发展小趣事

Bedford Opto公司在成立初期,面临着激烈的市场竞争和技术瓶颈。然而,公司的研发团队通过不懈努力,成功开发出一款具有革命性的光电传感器。这款产品不仅提高了信号传输的效率,还降低了能耗,迅速在市场上获得了认可。Bedford Opto公司因此逐渐在电子行业中崭露头角。

问答坊 | AI 解惑

mega48单片机用双积分测量电阻

诸位好:     我是刚学习的菜鸟,有一个问题,用mega48单片机,用双积分方法测量电阻(0.1欧搭配999.9欧)     设置6个数码管,两个按键。     先按一个按键,记录当前阻值R1,存如单片机,前4个数码管显示阻值 ...…

查看全部问答>

wince如何加载mp3的filter?

要在wince下用DirectShow实现mp3的播放?但是没有mp3的filter,于是从xp里找了一个filter,请问该如何加载,能否给个实例?谢谢了…

查看全部问答>

ATD拨打电话出现NO CARRIER 错误如何解决.

我现在用的是一快MC37I的GSM模块. 我通过串口操作如下: AT+CSQ    +CSQ: 28,99 //确认有信号 AT+CREG=1 OK     AT+COPS? +COPS: 0,0,\"CHINA MOBILE\" //确认已注册上中国移动 ATD15989500805 //拨打电话 NO CARRIER ...…

查看全部问答>

同样的工程文件IAR编译出的bin文件内容不同,为什么?

完全相同的工程文件,使用IAR编译,仅仅工程文件存放路径不同,编译出来的bin文件不同,不能理解,这是为什么?…

查看全部问答>

G2553的官方例程有些代码有错误

本人感觉G2553的官方例程有些代码不正确或者不完善,不知看了官方例程的朋友有这种感觉没?…

查看全部问答>

整了好几天sd多块写超过16个扇区无法继续,何解?

网上到处都是例程里的多块写dma方式. 我就是想发一个cmd25指令连续写入N个扇区,这个应该可以实现的.但是现在写入前16个没问题,也看到确实写入了. 但到第17个扇区就报crc错误,咋回事呢?初步分析是sd卡缓冲区写满之后出问题了,这个该怎么操作呢?另 ...…

查看全部问答>

msp430中usart模块的问题

msp430中usart模块的问题USART模块中    异步通信寄存器和同步通信寄存器中有些东西都一样么?比如IAR中里面用的 // Put state machine in reset     UCB1CTL1 |= UCSWRST; 而我在头文件中查到: // UCAxCTL1 UART-Mode Co ...…

查看全部问答>

TI资料:负载开关:什么是负载开关,为什么需要负载开关,如何选择正

负载开关:什么是负载开关,为什么需要负载开关,如何选择正 下载: 负载开关:什么是负载开关,为什么需要负载开关,如何选择正 ? …

查看全部问答>

MSP430F149单片机的车体调平装置设计

随着国防技术的发展,根据任务需求,越来越多的军用武器需要随时变更工作地点。为了保证这些军用武器的机动性能,往往以载车为运输载体,如火箭炮这样的大型武器就被安装在载车上。载车到达目的地后,借助平台快速将武器架设调至水平而后工作,工作 ...…

查看全部问答>