0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于ATmega128单片机的看门狗定时器设计方案

基于ATmega128单片机的看门狗定时器设计方案

来源: elecfans
2021-10-27
类别:工业控制
eye 15
文章创建人 拍明

原标题:基于ATmega128单片机的看门狗定时器设计方案

  一、ATMEGA128数据手册

  看门狗定时器

  看门狗定时器由独立的1 Mhz 片内振荡器驱动。这是VCC= 5V 时的典型值。请参见特性数据以了解其他VCC电平下的典型值。通过设置看门狗定时器的预分频器可以调节看门狗复位的时间间隔,如P53 Table 22所示。看门狗复位指令WDR用来复位看门狗定时器。此外,禁止看门狗定时器或发生复位时定时器也被复位。复位时间有8 个选项。如果没有及时复位定时器,一旦时间超过复位周期,ATmega128就复位,并执行复位向量指向的程序。具体的看门狗复位时序在P50有说明。

  为了防止无意之间禁止看门狗定时器或改变了复位时间,根据熔丝位M103C 和 WDTON 芯片提供了3 个不同的保护级别,如Table 21. 所示。安全级别0 相应于ATmega103 的 设置。使能看门狗定时器则没有限制。请参考P 54“ 改变看门狗定时器配置的时间序列”。

  

1.jpg


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

  

image.png


  ? Bits 7..5 – Res: 保留

  保留位,读操作返回值为零。

  ? Bit 4 – WDCE: 看门狗修改使能

  清零WDE 时必须先置位WDCE,否则不能禁止看门狗。一旦置位,硬件将在紧接的4 个 时钟周期之后将其清零。请参考有关WDE 的说明来禁止看门狗。工作于安全级别1 和2 时也必须置位WDCE 以修改预分频器的数据,如P 54 “ 改变看门狗定时器配置的时间序列” 所示。

  ? Bit 3 – WDE: 看门狗使能

  WDE为“1“时,看门狗使能,否则看门狗将被禁止。只有在WDCE为”1“时WDE才能清零。以下为关闭看门狗的步骤:

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

  2. 在紧接的4 个时钟周期之内对WDE 写“0”。

  工作于安全级别2 时是永远无法禁止看门狗定时器的。参见 P 54 “ 改变看门狗定时器配置的时间序列” 。

  ? Bits 2..0 – WDP2, WDP1, WDP0: 看门狗定时器预分频器2, 1, 和0

  WDP2、WDP1 和WDP0 决定看门狗定时器的预分频器,如Table 22 所示。

  

image.png


  下面的例子分别用汇编和C 实现了关闭WDT 的操作。在此假定中断处于用户控制之下 (比如禁止全局中断) ,因而在执行下面程序时中断不会发生。

  汇编代码例程WDT_off:

  ; 置位 WDCE 和 WDE

  ldir16, (1《outWDTCR, r16

  ; 关闭WDT

  ldir16, (0《outWDTCR, r16

  ret

  C 代码例程

  voidWDT_off(void)

  {

  WDTCR = (1《

  WDTCR = 0x00;

  }

  看门狗初始化程序

  C 代码例程

  voidWDT_Init(void)

  {

  _WDR();//reset watchdog timer

  WDTCR |= (1《WDTCR = 0x0F;//enable watchdog TImer andset TImeout value 1.9 sencond

  }

  改变看门狗定时器配置的时间序列

  改变配置的序列根据不同的安全级别略有不同。下面将逐一说明。

  安全级别0

  这个模式与ATmega103 的看门狗操作相兼容。看门狗的初始状态是禁止的,可以没有限制地通过置位WDE 来使能它,以及改变定时器溢出周期。禁止看门狗定时器时则需要遵 守有关WDE 的说明。

  安全级别1

  在这个模式下,看门狗定时器的初始状态是禁止的,可以没有限制地通过置位WDE 来使能它(例如:WDTCR|= (1《1. 在同一个指令内对WDCE 和WDE 写”1“,即使WDE 已经为“1“。

  2. 在紧接的4 个时钟周期之内同时对WDE 写”0”,以及为WDP 写入合适的数据,而WDCE 则写“0”。

  安全级别2

  在这个模式下,看门狗定时器总是使能的, WDE 的读返回值为”1”。 改变定时器溢出周期需要执行一个特定的时间序列:

  1. 在同一个指令内对WDCE和WDE写“1“。虽然WDE总是为置位状态,也必须写”1“以启动时序。

  2. 在紧接的4 个时钟周期之内同时对WDCE 写“0”,以及为WDP 写入合适的数据。WDE 的数值可以任意。

  二、看门狗AVR-GCC例程

  头文件:#include ,包含看门狗复位命令 _WDR();

  avr-libc 提供三个API 支持对器件内部Watchdog 的操作,它们分别是:

  wdt_reset() // Watchdog 复位

  wdt_enable(TImeout) // Watchdog 使能

  wdt_disable() // Watchdog 禁止

  调用上述函数前要包含头文件 wdt.h ,wdt.h 中还定义Watchdog 定时器超时符号常量,它们用于为wdt_enable 函数提供TImeout 值。符号常量分别如下:

  符号常量值含意

  WDTO_15MS Watchdog定时器15 毫秒超时

  WDTO_30MS Watchdog定时器30 毫秒超时

  WDTO_60MS Watchdog定时器60 毫秒超时

  WDTO_120MS Watchdog定时器120 毫秒超时

  WDTO_250MS Watchdog定时器250 毫秒超时

  WDTO_500MS Watchdog定时器500 毫秒超时

  WDTO_1S Watchdog定时器1 秒超时

  WDTO_2S Watchdog定时器2 秒超时

  Watchdog 测试程序:

  在CA-M8 上执行此程序时应打开S1-8(LEDY),使黄色发光管连接PB0 引脚。

  #include

  #include

  #include

  #define uchar unsigned char

  #define uint unsigned int

  #define SET_LED PORTB&=0XFE //PB0 接黄色发光管

  #define CLR_LED PORTB|=0X01

  //误差不会太大的延时1ms 函数

  void DelayMs(uint ms)

  {

  uint i;

  for(i=0;i

  _delay_loop_2(4 *250);

  }

  int main(void)

  {

  DDRB=_BV(PB0);

  PORTB=_BV(PB0); //CLR_LED

  //WDT 计数器同期为一秒

  wdt_enable(WDTO_1S);

  wdt_reset();//喂狗

  DelayMs(500);

  SET_LED;

  //等待饿死狗

  DelayMs(5000);

  SET_LED;

  while(1)

  wdt_reset();

  }

  执行结果:

  CA-M8 上的黄色发光管不断的闪烁,证明了Watchdog 使MCU 不断的复位。

  三、注意事项

  如果循环体内每循环一次的时间不超过看门狗的复位时间,主要喂狗一次就可以,否则需要多次喂狗。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

下一篇: 已是最后一篇

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案