历史上的今天
返回首页

历史上的今天

今天是:2025年02月13日(星期四)

正在发生

2020年02月13日 | ATMEGA324P的AVR看门狗使用

2020-02-13 来源:eefocus

AVR芯片大多数都有看门狗功能,看门狗电路实际上是一个定时电路,该定时器使用内部独立的1M的RC振荡器,根据设置看门狗的定时时间,当程序运行超过规定的时间后,如果没有及时复位看门狗(俗称喂狗),看门狗定时器就会发生溢出,这个溢出将导致程序复位,从而保证在程序跑飞的情况下,不会长时间没有响应。WIN AVR内部带有看门狗函数,需要包含头文件:#include


新的AVR系列(例如,ATMEGA324P等)使用增强功能的看门狗(Enhanced Watchdog Timer),与原来的看门狗相比较,除了有相同复位的功能以外,还增加了中断的功能设计。使用看门狗的中断功能,可以实现从Power Down状态唤醒CPU;另外同时使能中断和复位功能,可以在系统发生错误时,先进入中断状态,保存关键数据到EEPROM,然后再进行系统复位。


下面说明以ATMEGA324P作一个简单例子,简要地说明一下注意要点:

看门狗定时器控制寄存器– WDTCR:



1.A1tmega168由于具有中断功能,所以WDTCR增加了WDIF和WDIE两个额外的bit的功能;


2.增加了WDP3,溢出周期可以有长达8秒;


3.新的看门狗在初始化时,WDT的值不再一定是0。只要MCUSR寄存器上的WDRF置位,WDT也将被强制置位。这时,如果WDE要清零,必须要WDRF先清零。


4.在设计时即使不用WDT,它也可能在无意中被使能,例如在runaway指针和掉电情况下。因此即使不用WDT,在初始代码中一定要检查复位标志,如果WDT系统复位发生要采取处理步骤。


AVR的看门狗是软狗,也是硬狗! 如果熔丝位不设定,就是软狗,因为程序可以关闭,也可以打开 如果熔丝位设定了,就是硬狗,因为程序只可以清除,而无法打开或关闭!如果你的while(1)循环体内每循环一次的时间不超过看门狗的复位时间,只要喂狗一次就可以了。


最近重新设计一个项目,由原先使用的ATMEGA16更新到ATMEGA324P。把原代码转换后,测试结果异常。经过一天多的测试,才发现是新的看门狗惹的祸。以前用ATMEGA16,在初始化后才开始喂狗,可是新的AVR系列(例如ATMEGA324P等),系统复位发生时(除上电复位外) ,WDT可能继续运行,并使用最小溢出周期(大约15mS) ,造成了系统不断复位。根据datasheet,在程序开始时的关狗后一切就恢复正常了:

#include

#include

uint8_t mcusr_mirror;

void get_mcusr(void)

__attribute__((naked))

__attribute__((section(".init3")));

void get_mcusr(void)

{

mcusr_mirror = MCUSR;

MCUSR = 0;

wdt_disable();

}


5.使用看门狗的中断时,当WDIF和WDIE置位,就会产生中断。进入相应的中断程序后,系统自动清零WDIF和WDIE。下次要使用看门狗的中断时必须重新置位WDIE。


//在AVR ICC中对M128的初始化时最近使用下种方式


void Init_watdog(void)


{


WDR();


WDTCR = 0x1F;//设置最大分频


WDTCR = 0x0f;//启动看门狗


}


WDR();


补充,特别说明


使能看门狗不能用 |=,必须要直接赋值=。


还有数据手册上说:


改变定时器溢出时间及禁止(已经使能的)看门狗定时器需要执行一个特定的时间序列:

1. 在同一个指令内对WDCE 和WDE 写"1“,即使WDE 已经为"1“。

2. 在紧接的4 个时钟周期之内将WDE 和WDP 设置为合适的值,而WDCE 写"0”。


所以在WDTCR=0x0E;之前加上一句WDTCR=0x1F;

推荐阅读

史海拾趣

FUJIKURA公司的发展小趣事

FUJIKURA(株式会社藤仓)在电子及光纤通信行业中有着悠久而辉煌的发展历程。以下是五个关于FUJIKURA公司发展起来的相关故事,每个故事均基于事实描述,并尽量保持字数在500字以上:

1. 创立与早期发展

FUJIKURA公司成立于1885年,由藤仓善八先生创立,起初专注于发电机用的绢卷线制造。这一初创阶段为公司奠定了坚实的电线电缆制造基础。随着技术的不断积累,FUJIKURA逐渐扩展到更广泛的电气和电子领域,为公司的长期发展奠定了坚实的基础。

2. 技术创新与行业领导地位

在多年的发展中,FUJIKURA始终致力于技术创新,不断推出具有行业影响力的新产品。特别是在光纤通信领域,FUJIKURA凭借其强大的研发能力和技术实力,成为了全球领先的光纤通信产品研发与生产商。公司不仅在光纤制造方面取得了显著成就,还在光纤熔接、光数据传输等领域拥有多项专利技术,推动了整个行业的发展。

3. 全球化战略与市场拓展

随着全球市场的不断开放和竞争的加剧,FUJIKURA积极实施全球化战略,通过设立海外分支机构、与当地企业合作等方式,不断拓展海外市场。目前,FUJIKURA的商务与服务网络已经覆盖全球多个国家和地区,为全球客户提供优质的产品和服务。这一战略不仅提升了公司的国际影响力,还为公司带来了更多的商业机会和发展空间。

4. 企业文化与团队建设

FUJIKURA注重企业文化的建设和团队精神的培养。公司秉承“向客户提供价值”的企业理念,致力于为员工创造一个积极向上、团结协作的工作环境。通过定期的培训、团队建设活动等方式,FUJIKURA不断提升员工的综合素质和团队协作能力,为公司的持续发展提供了有力的人才保障。

5. 应对挑战与持续发展

面对全球经济大萧条等严峻挑战,FUJIKURA展现出了强大的韧性和适应能力。公司全体员工团结一致,以共享目标和积极态度应对挑战,将危机视为机遇。通过实施“第三次创业”和企业文化改革等措施,FUJIKURA不仅成功度过了难关,还实现了持续稳健的发展。未来,FUJIKURA将继续秉持顾客价值创造的理念,积极应对社会需求,为实现赢得客户信赖的承诺而努力。

Electech Electronics公司的发展小趣事

Electech Electronics一直非常重视产品质量和品质管理。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测和包装等各个环节都进行严格把控。此外,公司还不断引进先进的生产设备和技术,提升产品的制造精度和品质。这些举措使得Electech Electronics的产品在市场上享有很高的声誉,赢得了客户的信赖。

Dynastream公司的发展小趣事

随着公司业务的不断扩展,Dynastream逐渐成为了行业内的佼佼者。2006年12月,Garmin International Inc.看中了Dynastream在技术和市场方面的优势,决定将其收购为全资子公司。这一收购不仅为Dynastream提供了更多的资源和支持,也让公司有机会接触到更广阔的市场和更多的客户。

Allied Electronic & Semiconductor Technology Inc公司的发展小趣事

在追求经济效益的同时,AE&ST公司也积极履行社会责任,致力于可持续发展。公司严格遵守环保法规,采用环保材料和工艺,减少生产过程中的污染排放。此外,公司还积极参与社会公益活动,支持教育事业和科技创新。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

请注意,这些故事是基于一般电子行业发展趋势和常见模式构建的虚构故事,旨在展示一个电子公司可能的发展路径。对于AE&ST公司的实际情况,建议查阅相关官方资料或行业报告以获取准确信息。

微芯(CMOSIC)公司的发展小趣事

在21世纪初,由一群资深的留学归国科学家组成的团队在深圳创立了微芯生物。他们专注于创新药物研发,特别是在小分子药物领域。初创期,公司面临技术难题和资金压力,但他们凭借对技术的执着和深厚的专业背景,成功研发出多款具有突破性的新药候选物,为公司的发展奠定了坚实的基础。

Cofan Usa Inc公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,Cofan Usa Inc公司开始积极拓展国内外市场。通过与各大电商平台和实体零售商建立合作关系,公司成功将产品推向更广泛的消费者群体。同时,公司注重品牌建设,通过精准的市场定位和有效的营销策略,逐渐树立了独特的品牌形象。

问答坊 | AI 解惑

EEWorld邀你来拆解(第7期)——拆拆减肥利器----日常测试

本帖最后由 吾妻思萌 于 2022-11-22 23:05 编辑 拆箱一个礼拜了,发现减肥利器确实不错,体重成功下了0.5公斤,但是一顿好吃的直接就回来啦。 所以大家减肥靠的是毅力和恒心,绝非买个健身房的课程或者器材就可以减下来的。 正常使用次数1 ...…

查看全部问答>

STM32单片机+ADXL345(中断方式)计步器的准备程序(串口调试)

本文介绍了利用ADXL345中断唤醒停止模式下的STM32F103C8T6,为进一步开发计步器做准备。 从上位机串口通讯记录了整个过程, 代码中有关OLED显示屏可以不接。 1. ADXL345寄存器, 有好多,为了观察明显,这里设置了ACTIVITY和INACTIVITY模式,都能 ...…

查看全部问答>

嘉立创EDA你在后台“挖矿”吗?

刚才用嘉立创EDA画了一个原理图,然后关掉。后来用的过程中CPU风扇一直调整转动,刚刚打开任务管理器看了一下,CPU占用25%以上,已经很长时间了。 看了一下右下角的任务,说明已经退出了。不清楚嘉立创EDA在后台用我的CPU干什么。   ...…

查看全部问答>

示波器测量之抖动的四个维度

抖动是在进行示波器测量的时候常见的一种现象,也是工程师比较头痛的问题之一,也是尝尝讨论的问题。为什么这个话题千古不变值得讨论呢?是因为抖动是示波器测量的诸多功能中与“数学”较为相关的,从此也可以看出,学好数学的必要性。 ...…

查看全部问答>

分享个迷你T2资料

想要DIY的网友可以收个。一个DIY群里收来了群主作品的资料。     …

查看全部问答>

请教一下电池供电的设备要求单片机低功耗,请问串口的TX和RX输出如何设置,依据是什么

请教一下电池供电的设备要求单片机低功耗,请问串口的TX和RX输出如何设置,依据是什么 …

查看全部问答>

【花雕动手做】有趣好玩的音乐可视化系列项目(32)--P10矩阵LED单元板

偶然心血来潮,想要做一个音乐可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累些有用的音乐频谱可视化的资料,也会争 ...…

查看全部问答>

ESP32没有pyb要怎么改这段代码

esp32/8266的定时器和pyb.timer不一样,要怎么改让他工作在esp32/8266下呢。 import pyb import micropython micropython.alloc_emergency_exception_buf(100) # Futaba PPM decoder # http://diydrones.com/profiles/blogs/705844:Bl ...…

查看全部问答>

分流电阻温漂计算

    在选择不同电流采样电阻时候,主要关注的当然是温度漂移拉,通常电阻的偏差可以当运算放大器的gain error 被校准掉。 但是电阻的温漂校准起来还是比较麻烦的,最好从一开始就选温漂较好的电阻。   小弟做了个表格, ...…

查看全部问答>

俄国大佬Valentin Yakovlevich Volodin 的Spice仿真库

LTspice可以直接拉进去 具体如何生成库可以参考以下   LTSPICE 器件与库   1.TL494 2.uc3825 3.sg3525 4.uc3527a 5.hcpl3180 6.k554ud2 7.moc3082 8.moc3052 * ------------------------------ ...…

查看全部问答>