B001-Atmega16-看门狗WDT-(ques=1)

发布者:柔情细语最新更新时间:2022-02-18 来源: eefocus关键字:Atmega16  看门狗  WDT 手机看文章 扫描二维码
随时随地手机看文章

今天测试了下看门狗


可以使用wdt.h中的wdt_enable(value)和wdt_disable(),也可以使用自己定义的WDT_enable(uint8_t count)和WDT_disable(void)。


复位看门狗用wdt.h中的wdt_reset()。


----------------------------------------------------------------------------------------------------------------------------------


使用PA0测试复位时间:

1、上电时PA0输出0.5s的高电平(示波器)


2、接着PA0拉低,同时启用看门狗(2s后复位)


3、如果看门狗复位,那么复位后会再次将PA0会被拉高,而且复位前PA0的低电平持续时间应该是2s(5V电源下)


测试代码:

#include

#include "watch_dog.h"

#include "_noinit.h"

#include "system.h"

#include "config.h"

int main(void)

{

    // PA0为输出口

    DDRA  = (IO_OUTPUT << DDA0);

 

    // PA0拉高

    PORTA = (1 << PA0);

    // 维持0.5秒

    delay_ms(500);

 

    // PA0拉低

    PORTA &= ~(1 << PA0);

    // 使能看门狗 @ 2s

    wdt_enable(WDTO_2S);

//  WDT_enable(WDTO_2S);

    // 

    // 1. 看门狗在2秒后复位,所以PA0的低电平会维持2秒

    // 2. 而后芯片复位,PA0会被拉高

    // 3. 跳转到1

    // 

    // 记录复位次数

    _noinit_using();

 

    while(1)

    { }

    return 0;

}


增加使用.noinit特性测试复位:

上面的_noinit_using()使用了.noinit特性,通过观察PORTB上的8位LED的状态(二进制计数器)得知复位次数。


测试代码:

uint8_t v_noinit __attribute__ ((section(".noinit")));

void _noinit_using(void)

{

    v_noinit++;

    // 8位LED,低推

    DDRB  = 0xFF;

    PORTB = 0xFF;

    PORTB = v_noinit;

}

_noinit_using具体原理参考这里:

http://blog.csdn.net/manon_des_source/article/details/51536802


测试结果:

1、示波器可以看到PA0输出的是0.5的高电平H和1.86秒的低电平L。


      同时PORTB上的8位LED组成的二进制计数器在0.5秒的高电平出现时就会加1。


2、0.5秒高电平是启动看门狗之前的时间,1.86秒是看门狗定时器溢出时间,溢出后复位MCU。


     于是又重新出现0.5秒的高电平。


      这说明看门狗工作正常,确实实现了复位MCU。


3、当然每次下载程序或看门狗复位后,PORTB上的8位LED组成的二进制计数器也会加1


----------------------------------------------------------------------------------------------------------------------------------


结果误差分析:

1、复位时间只有1.86s,而不是2秒。


测试电源电压是5V,所以应该是温度和示波器造成的误差。


特地查看了下Atmega16的Datasheet,发现在室温30度下,WDT的频率大概是1020Hz(下图)。


频率是1.02倍,对应的时间应该是 2s / (1020 / 1000) = 1.96s。


剩下的误差,也许是示波器的问题吧。



另外、芯片使用的是8MHz的时钟,这需要手动校准,看看复位时间是否更接近2s


|<----待测试-question-001

或者使用内部自动校准的1MHz时钟测试。


----------------------------------------------------------------------------------------------------------------------------------


关键字:Atmega16  看门狗  WDT 引用地址:B001-Atmega16-看门狗WDT-(ques=1)

上一篇:A005-软件结构-从前后台到调度器
下一篇:B001-Atmega16-定时器1-(ques=1)

推荐阅读最新更新时间:2024-11-11 11:36

使用STM32ADC看门狗测量出待测信号
我们在做ADC应用时,有些场合需要精确测量出待测信号的数据,有时可能并不关心ADC结果多准确,只要满足某个范围即可,这时我们就可以考虑使用STM32ADC看门狗功能了。 STM32 ADC基本上都支持模拟看门狗功能,即ADC模块对被检测的模拟通道的转换结果基于硬件对其合法性、安全性进行监测。我们可以设置被监测通道的转换结果合法性检查的上下阈值,若结果处于阈值之外则视为异常,并可以触发中断。 尤其有些场合,我们可能使用到数个ADC通道,8个、10个甚至更多,同时程序还需要基于各通道的转换结果进行合法性或安全性监测,此时使用ADC模拟看门狗功能就很方便。我们可以先让模拟看门狗做第一步把关,只有出现异常数据时才去进一步检查确认。
[单片机]
使用STM32ADC<font color='red'>看门狗</font>测量出待测信号
stm8s_iwdg(独立看门狗)
//内部时钟源128Khz,硬件2分频=64khz 这里写代码片 IWDG_Initializes(); //初始化 IWDG_ReloadCounter(); //喂狗(重载计数值) 初始化流程: void IWDG_Initializes(void) { IWDG_Enable(); //使能看门狗 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //允许写分频值和重载值 IWDG_SetPrescaler(IWDG_Prescaler_256); //分频值 IWDG_SetReload(250);
[单片机]
STM32单片机学习(4) 独立看门狗实验
/* * * 软件功能: 独立看门狗实验 * */ #include stm32f10x.h #include delay.h /* 函数: void RCC_Configuration(void) 功能: 配置系统时钟 参数: 无 返回: 无 / void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; //定义外部高速晶体启动状态枚举变量 RCC_DeInit(); //复位RCC外部设备寄存器到默认值 RCC_HSEConfig(RCC_HSE_ON); //打开外部高
[单片机]
一个看门狗电路
如上图:电路工作的时候只要定时给CD4060复位脉冲,就能保证Q1处于截至状态,从而使受控的NMOS管处于导通状态给处理器电路系统供电。 该电路的优点是定时的时间可以比较长,几分钟都没问题,可以给那些需要较长时间初始化的系统足够的时间进行初始化工作。脉冲触发喂狗,上电时通过R2、C1、R3自动给计数器一个复位脉冲,确保Vout有输出。电路成本也低廉。 该电路的最大缺点是喂狗脉冲要求比较宽。 对于该电路还有什么地方可以改善的欢迎各位大虾提出宝贵的意见。
[模拟电子]
一个<font color='red'>看门狗</font>电路
Part5核心初始化_lesson3---关闭看门狗
1、看门狗---作用 2、看门狗工作方式 3、原理图 时钟源来自于PCLK经过分频器,经过选择器,输出到作为看门狗定时器,WTDAT为一个预载值,当它计数为零的时候,还没有给WTDAT赋值,那么它会发出一个重启信号RESET。 找到S3C6410X文件,找到里面的watch dog章节, 关闭代码如下: start.s代码:
[单片机]
Part5核心初始化_lesson3---关闭<font color='red'>看门狗</font>
STM32进阶-独立看门狗应用的详细步骤
看门狗概述 为什么需要看门狗 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。 独立看门狗原理 看门狗( watchdog timer),是一个定时器电路, 一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一
[单片机]
STM32进阶-独立<font color='red'>看门狗</font>应用的详细步骤
我的独立看门狗总结
一、独立看门狗IWDG概述 1.)看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。 2.)功能图:(由于本人无法贴图,请见参考手册,125页) 3.)独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。 4.)其中IWDG_PR为预分频器寄存器,IWDG_RLR为重新加载计数器寄存器,IWDG_KR为控制器存器。IWDG_SR为状态寄存器。(见图) 5.)IWDG_KR写入OXCCCC,启动独立看门狗功能,计数器值开始递减,减到0时,看门狗复位。IWDG_KR写入0XAAAA,计数器值被重新加载
[单片机]
S3C2410看门狗watchdog寄存器介绍与使用
看门狗应用实验 1、实验目的 了解watchdog 的作用 掌握S3C2410 的watchdog 定时器的使用方法 2、实验内容 实现看门狗复位 编程实现看门狗喂狗 3、实验设备 S3C2410 开发板 ADS1.2 集成开发环境,JTAG 调试器、串口连接线 4、实验原理 4.1 看门狗功能简述 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗 (watchdog )电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 4.2 看门狗的工作原理 其基
[单片机]

推荐帖子

如果你开发一个生物大数据管理平台,该如何选用UDP/TCP技术提高大数据传输性能。
如果你开发一个生物大数据管理平台,该如何选用UDP/TCP技术提高大数据传输性能。如果你开发一个生物大数据管理平台,该如何选用UDP/TCP技术提高大数据传输性能。好高深的样子,要数据挖掘吗?
Sassa的番茄号 TI技术论坛
SM32f429ZI通过FSMC读写SDRAM失败,求指教
使用SM32f429ZI芯片,通过FSMC读写32M的SDRAM(IS42S16160J),测试读写失败。每次擦除和写入的数据在memory窗口看都只有第一行显示,后面全是FF。感觉memory是不可信的。执行全片擦除(全片写入0x00)后结果如下图:而且发现擦除任意一个byte,在memory就会显示第一行全是0x00,然后其他行全是FF执行全片写入后结果如下图:跟擦除一样,写入任意一个字节,都会在第一行显示该字节,其他行为FF。所以觉得m
wjroy11 stm32/stm8
大电容滤低频,小电容滤高频?
不了解多组LCR串联后再并联的特性,没有相当的多阶LC滤波器、多级LC陷波器设计能力,千万不要以为用瞎猫碰死耗子的方法可以试出好用的滤波电容器组,你高价买来的某些优秀的参数可能会害死你。大电容滤低频,小电容滤高频?1000uF高频电解电容与典型104MLCC并联的阻抗特性图上图的Y轴转为对数 可见,多颗不同的电容并联,ESR并不是越小越好,这下,知道高手高手高高手为什么要在退耦用的MLCC上串零欧电阻(实际约50mR)了吧!谢谢分享
PowerAnts 模拟电子
IEC61850方案分享,基于全志、瑞芯微国产平台实现!
什么是IEC61850协议?IEC61850是一种用于在电力自动化系统中进行数据交换和控制的通信协议。它定义了一种标准化的通信和数据模型,以支持设备和系统之间的数据交换和互操作性。IEC61850协议被广泛应用于电力系统自动化和数字化转型中,特别是在智能电网和分布式能源资源管理中。通过使用IEC61850协议,电力系统的组件可以更加高效地互相通信,实现更加精确的监测和控制。IEC61850协议应用框架图如下:图1IEC61850标准的服务
别打牛牛 ARM技术
【得捷Follow me第3期】任务5:使用外部传感器
环境光传感器:这是一颗模拟传感器.通过Grove连接到核心板的GPIO2接口,利用内置的ADC进行电压读取ADC读取时可以以u16格式读数,也可以直接拿到具体电压值.直接调用方法即可.这颗环境光传感器使用的是SENBA的LS06-S传感器,串联一颗68k电阻,中间输出至LM358.由于输出与光照强度不太不线性,这里不计算具体照度值,只做定性分析.旁边放一个手机作为亮度参考.读取的数据通过显示屏显示.代码如下adc=ADC(Pin(2)
epix DigiKey得捷技术专区
给当年磁学没学好的朋友《磁性元器件分册》-赵修科
这是一本很经典的有关磁性元件的书在学校一般磁方面讲得比较少很多人也没有理解什么是磁场上次看到一个人怎么都不理解(很多人仅仅凭感觉来理解问题而非用逻辑,用定量的计算)为什么开气隙的磁环中磁能大多储存在气息中(准确的说是储存在磁导率低的地方,如果气隙处塞入塑料磁能也会储存于塑料处),因为低磁导率的部分磁阻(磁导率的倒数)最大,所以同样的磁通密度磁场更强,储能也就多了,其实这就像电容一样电容的电场能储存在两个平板之间而非导线上。 给当年磁学没学好的朋友《磁性元器件分册》-赵
ssawee 模拟电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved