amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 5235|回复: 10

关于AVR的复位源和复位方式的介绍

[复制链接]
发表于 2005-3-9 22:23:46 | 显示全部楼层 |阅读模式
2.6.3 AVR的复位源和复位方式

    复位是单片机芯片本身的硬件初始化操作,例如,单片机在上电开机时都需要复位,以便CPU以及其它内部功能部件都处于一个确定的初始状态,并从这个初始状态开始工作。



    AVR单片机的复位操作,其主要功能是把程序计数器PC初始化为$0000,使单片机从$0000单元开始执行程序。同时决大部分的寄存器(通用寄存器和I/O寄存器)也被复位操作清零,有关各个寄存器的复位初始化值请注意各寄存器的详细说明。



    除了系统上电的正常复位初始化之外,当系统程序在运行中出现错误或受到干扰,出现错误时,也可通过外部引脚RESET进行复位或由内部看门狗定时器WDT复位来使系统进入复位初始化操作。



图2-14的电路给出了ATmega16系统的复位逻辑,表2.4给出了复位电特性的参考值。

  

图2-14 ATmega16 系统复位逻辑图



ATmega16单片机共有5个复位源,它们是:

   上电复位。当系统电源电压低于上电复位门限Vpot时,MCU复位。

   外部复位。当外部引脚RESET为低电平,且低电平持续时间大于1.5us时,MCU复位。

   看门狗复位。WDT使能,并且WDT超时益出时,MCU复位。

   掉电检测(BOD)复位。BOD使能,且电源电压低于掉电检测复位门限(4.0v或2.7v)时,MCU复位。

   JTAG AVR复位。当使用JTAG接口时,可由JTAG口控制MCU复位。



表2.4  系统复位电参数

符  号   参  数   条  件   最 小 值   典 型 值   最 大 值   单  位

VPOT   上电复位门限电压(电源电压上升时)         1.4   2.3   V

   上电复位门限电压(电源电压下降时)         1.3   2.3   V

VRST   RESET门限电压      0.1Vcc      0.9Vcc   V

tRST   RESET最小复位脉冲宽度            1.5   µs

VBOT   BOD复位门限电压   BODLEVEL=1   2.5   2.7   3.2   V

      BODLEVEL=0   3.7   4.0   4.2   

tBOD   BOD检测的低电压最小宽度   BODLEVEL=1      2      µs

      BODLEVEL=0      2      

VHYST   BOD检测迟滞电压         50      mV



    当任何一个复位信号产生时,AVR将进行复位操作。复位操作过程并不需要时钟源处于运行工作状态(即采用异步复位)。在MCU复位过程中,所有的I/O寄存器被设为初始值,程序计数器PC置0。当系统电压高于上电复位门限Vpot(或BOD复位门限电压)时,复位信号撤消,硬件系统Delay Counters将启动一个可设置的计数延时过程(由一组溶丝位SUT、CKSEL确定)。经过一定的延时后,AVR才进行系统内部真正的复位启动(Internal Reset)。采用这种形式的复位启动过程,能够保证电源电压在达到稳定后单片机才进入正常的指令操作。



    AVR复位启动后,由于程序计数器PC置为$0000,因此CPU取出的第一条指令就是在Flash空间的$0000处,即复位后系统程序从地址$0000处开始执行(指非BOOT LOAD方式)。通常在$0000地址中放置的指令为一条相对转移指令RJMP或JMP指令,跳到主程序的开始。这样,系统复位启动后,首先执行$0000处的跳转指令,然后跳转执行主程序的指令。



    AVR单片机采用5个复位源,异步复位操作,以及内部可设置的延时启动,大大提高了芯片的抗干扰能力和整个系统的可靠性,这在工业控制中非常重要,同时也是AVR单片机的优点之一。与此同时,AVR内部的MCU控制和状态寄存器MCUCSR还将引起复位的复位源进行了记录,用户程序启动后,可以读取MCUCSR中的标记,查看复位是由于何种情况造成的,是正常复位还是异常复位,从而根据实际情况执行不同的程序,实现不同的处理。这在高可靠的系统控制中非常有用。
发表于 2005-3-10 05:50:16 | 显示全部楼层
感觉上BOD最没用了,形同虚设。因为复位门限电压范围太大,从2.5-3.2V。

例如通常Li电池只有3.3V左右,BOD复位门限电压上限3.2V...
 楼主| 发表于 2005-3-18 02:27:10 | 显示全部楼层
BOD有用还是没用,自己体会。感觉没用就不用。但我用BOD解决了一个问题。



   一个多机系统,4个M16(每个驱动16个LED数码管)为从机,一个M8主机,从机显示内容由主机提供,全部由一个5v电源供电。当掉电时,主机M8需要保存20字节的重要数据写入EEPROM,时间需要200ms。(图早以贴在本站上)



   问题在于掉电时,从机的LED都在亮,一下把储能电容(2000u)的电全部拉光,不能保证200ms的写EEPROM时间。



   解决方案:M16的BOD设置为4.0v,M8设置为2.7v。当电压低于4v,M16复位,全部的LED不亮了。从4.0掉到2.7,只有M8工作,写EEPROM,此时2000u的储能时间足够了。再次上电,从机显示掉电前一刻的内容。



   硬件、程序不做任何的改动,仅设置一下BOD的溶丝。
发表于 2012-12-16 16:00:07 | 显示全部楼层
有长见识了
发表于 2013-1-7 16:07:02 来自手机 | 显示全部楼层
学习一下......
发表于 2013-1-7 18:11:37 来自手机 | 显示全部楼层
machao 发表于 2005-3-18 02:27
BOD有用还是没用,自己体会。感觉没用就不用。但我用BOD解决了一个问题。



   一个多机系统,4个M16(每个 ...

不错的一个例子
发表于 2013-4-21 10:17:02 | 显示全部楼层
见到好东西就要看看,看来之后还得学学
发表于 2013-10-8 01:55:02 | 显示全部楼层
machao 发表于 2005-3-18 02:27
BOD有用还是没用,自己体会。感觉没用就不用。但我用BOD解决了一个问题。



   一个多机系统,4个M16(每个 ...

马老师,

       您好!


      “从4.0掉到2.7,只有M8工作,写EEPROM,此时2000u的储能时间足够了。再次上电,从机显示掉电前一刻的内容。”
       我想请问一下,您怎么知道M8的电压是4V以下了呢?

发表于 2013-10-8 02:21:15 | 显示全部楼层
杨遥 发表于 2013-10-8 01:55
马老师,

       您好!

马老师,

     “ 一旦AVR的供电电压低于BOD电平,AVR进入RESET(不执行程序了)。而当电源恢复到BOD电平以上,AVR才正式开始从头执行程序。保证了系统的可靠性!”

     如果断电的时候,由于电压高于BOD电平时,是不会RESET,当低于BOD电平时,由于需要恢复到BOD电平以上,AVR才能从头开始执行程序。那您想EEPROM写 数据是什么时候写的呀?

     是不是外部加了一个处理,比如电压比较IC,当低于多少电平的时候,输送一个脉冲给单片机,单片机进入中断,此时写EEPROM?

     期待答复
 楼主| 发表于 2013-11-20 01:42:31 | 显示全部楼层
杨遥 发表于 2013-10-8 02:21
马老师,

     “ 一旦AVR的供电电压低于BOD电平,AVR进入RESET(不执行程序了)。而当电源恢复到BOD电 ...

具体电路参考我编写教程的第7章,例7.3 利用外部中断实现系统断电保护实例。

更新的芯片就不需要这个方法了。现在许多新的MCU,有芯片电压检测功能,门限值可以设定,一旦工作电压低于门限值,会触发产生掉电中断的。但总要单独提供MCU电源(二极管隔离),并使用一个大的储能电容保持。

如果芯片能在3V以上正常工作,系统电源电压正常为5V,那么可以设置检测门限电压为4.5v。当电源电压低与4.5V,产生掉电中断,进入中断保存数据(4.5V-3V之间)。需要保存数据越多,储能电容的容量需要越大,才能保证从4.5跌到3V以下有更多的时间。
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-23 03:12

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表