ATmega16—掉电模式
- 格式:docx
- 大小:11.88 KB
- 文档页数:2
ATmega16 包含512 字节的EEPROM 数据存储器。
它是作为一个独立的数据空间而存在的,可以按字节读写。
EEPROM 的寿命至少为100,000 次擦除周期。
EEPROM 的访问由地址寄存器、数据寄存器和控制寄存器决定。
通过SPI和JTAG及并行电缆下载EEPROM数据的操作请分别参见P260、P265及P250。
EEPROM 读/ 写访问EEPROM 读/ 写访问EEPROM 的访问寄存器位于I/O 空间。
EEPROM的写访问时间由Table 1给出。
自定时功能可以让用户软件监测何时可以开始写下一字节。
用户操作EEPROM 需要注意如下问题:在电源滤波时间常数比较大的电路中,上电/ 下电时VCC 上升/ 下降速度会比较慢。
此时CPU 可能工作于低于晶振所要求的电源电压。
请参见P20“ 防止EEPROM 数据丢失” 以避免出现EEPROM 数据丢失的问题。
为了防止无意识的EEPROM 写操作,需要执行一个特定的写时序。
具体参看EEPROM控制寄存器的内容。
执行EEPROM 读操作时,CPU 会停止工作4 个周期,然后再执行后续指令;执行EEPROM 写操作时,CPU 会停止工作2 个周期,然后再执行后续指令。
EEPROM 地址寄存器-EEARH和EEARL· Bits 15..9 – Res: 保留保留位,读操作返回值为零。
· Bits 8..0 – EEAR8..0: EEPROM 地址EEPROM地址寄存器– EEARH和EEARL指定了512字节的EEPROM空间。
EEPROM地址是线性的,从0 到511。
EEAR 的初始值没有定义。
在访问EEPROM 之前必须为其赋予正确的数据。
EEPROM 数据寄存器-EEDR· Bits 7..0 – EEDR7.0: EEPROM 数据对于EEPROM 写操作,EEDR 是需要写到EEAR 单元的数据;对于读操作,EEDR 是从地址EEAR 读取的数据。
AVR单片机中断实现ATmega16 INT ISR(INT0_vect)内容来源:本站发布时间:[2010-11-28]查看次数:42332.21 实例功能前面例子中分别介绍了按键控制发光二极管的亮灭,但是我们注意到,在程序中需要一直检测按键的状态,这样明显的浪费了单片机的资源,降低了单片机的工作效率,。
那么有没有一种方法可以让单片机不用一直检测按键的状态,而只在有按键动作时才去响应呢?当然有!单片机中除了具有基本输入输出功能的作用外,还有专门检测外界信号并作出响应的中断系统。
在本例中,通过利用外部中断实现单片机对按键事件的响应和处理。
本例中三个功能模块描述如下:● 单片机系统:对按键事件产生的中断时间作出响应,并在数码管上显示按键按下的次数。
● 外围电路:通过将按键连接到单片机的外部中断检测端口,实现中断产生电路,数码管显示电路用于指示按键的按下状态。
● 软件程序:编写AVR单片机的外部中断服务程序,从而实现对中断事件的响应。
2.2.2 器件和原理1单片机的中断系统关于中断的概念可以在一般的教材中找到,本例中只做简要叙述,不再详细说明。
中断属于一种对事件的实时处理过程。
中断源可能随时停止单片机当前正在处理的工作,转而去处理中断事件,待中断时间处理完毕之后,再返回原来工作的断点处,继续原来的工作。
对于单片机的中断系统,需要了解这几个概念:中断源、中断信号、中断向量、中断优先级、中断嵌套、中断控制(屏蔽)、中断响应条件、中断响应过程(中断服务程序)。
●中断源中断源是指能够向单片机发出中断请求信号的部件和设备。
对于单片机来讲,往往存在多个中断源。
中断源一般可分为内部中断源和外部中断源。
单片机内部集成的许多功能模块,如定时器、串行通讯口、模/数转换器等,它们在正常工作时往往无需CPU参与,而当处于某种状态或达到某个规定值需要程序控制时,会通过发出中断请求信号通知CPU。
这一类的中断源位于单片机内部,称作内部中断源。
1:未编程(配置熔丝检查框未打钩)0:编程(配置熔丝检查框打钩)默认设置为:SUT0=0;CKSEL3-1=000;CKSEL3-0=0001的默认设置导致了片内RC振荡器运行于1 MHz低位(时钟及启动时间设置)默认设置为:11-10-0001高位(BOOT区设置) 默认设置为:10-01-1001低位:BODLEVEL:(BOD掉电检测电平选择;默认为1): 1: 2.7V电平; 0:4.0V电平BODEN:(BOD掉电检测功能控制;默认为1): 1:BOD功能禁止;0:BOD功能允许使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL 决定。
一旦VCC下降到触发电平(2.7v或4.0v)以下,MUC复位;当VCC电平大于触发电平后,经过tTOUT延时周后重新开始工作。
注:1.复选框选中代表0,0电平有效。
2.因为M16L可以工作在2.7v~5.5v,所以触发电平可选2.7v(BODLEVEL=0)或4.0v(BODLEVEL=1);而M16工作在4.5~5.5V,所以只能选BODLEVEL=0,BODLEVEL=1不适用于ATmega16。
SUT1-0:(选择启动时间;默认为10)当选择不同晶振时,SUT有所不同。
如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。
CKSEL3-0:(选择时钟源;默认为:0001)时钟总表时钟源启动延时熔丝外部时钟 6 CK + 0 ms CKSEL=0000 SUT=00外部时钟 6 CK + 4.1 ms CKSEL=0000 SUT=01外部时钟 6 CK + 65 ms CKSEL=0000 SUT=10内部RC振荡1MHZ 6 CK + 0 ms CKSEL=0001 SUT=00内部RC振荡1MHZ 6 CK + 4.1 ms CKSEL=0001 SUT=01内部RC振荡1MHZ 6 CK + 65 ms CKSEL=0001 SUT=10内部RC振荡2MHZ 6 CK + 0 ms CKSEL=0010 SUT=00内部RC振荡2MHZ 6 CK + 4.1 ms CKSEL=0010 SUT=01内部RC振荡2MHZ 6 CK + 65 ms CKSEL=0010 SUT=10内部RC振荡4MHZ 6 CK + 0 ms CKSEL=0011 SUT=00内部RC振荡4MHZ 6 CK + 4.1 ms CKSEL=0011 SUT=01内部RC振荡4MHZ 6 CK + 65 ms CKSEL=0011 SUT=10内部RC振荡8MHZ 6 CK + 0 ms CKSEL=0100 SUT=00内部RC振荡8MHZ 6 CK + 4.1 ms CKSEL=0100 SUT=01内部RC振荡8MHZ 6 CK + 65 ms CKSEL=0100 SUT=10外部RC振荡≤0.9MHZ 18 CK + 0 ms CKSEL=0101 SUT=00外部RC振荡≤0.9MHZ 18 CK + 4.1 ms CKSEL=0101 SUT=01外部RC振荡≤0.9MHZ 18 CK + 65 ms CKSEL=0101 SUT=10外部RC振荡≤0.9MHZ 6 CK + 4.1 ms CKSEL=0101 SUT=11外部RC振荡0.9-3.0MHZ 18 CK + 0 ms CKSEL=0110 SUT=00外部RC振荡0.9-3.0MHZ 18 CK + 4.1 ms CKSEL=0110 SUT=01外部RC振荡0.9-3.0MHZ 18 CK + 65 ms CKSEL=0110 SUT=10外部RC振荡0.9-3.0MHZ 6 CK + 4.1 ms CKSEL=0110 SUT=11外部RC振荡3.0-8.0MHZ 18 CK + 0 ms CKSEL=0111 SUT=00外部RC振荡3.0-8.0MHZ 18 CK + 4.1 ms CKSEL=0111 SUT=01外部RC振荡3.0-8.0MHZ 18 CK + 65 ms CKSEL=0111 SUT=10外部RC振荡3.0-8.0MHZ 6 CK + 4.1 ms CKSEL=0111 SUT=11外部RC振荡8.0-12.0MHZ 18 CK + 0 ms CKSEL=1000 SUT=00外部RC振荡8.0-12.0MHZ 18 CK + 4.1 ms CKSEL=1000 SUT=01外部RC振荡8.0-12.0MHZ 18 CK + 65 ms CKSEL=1000 SUT=10外部RC振荡8.0-12.0MHZ 6 CK + 4.1 ms CKSEL=1000 SUT=11低频晶振(32.768KHZ) 1K CK + 4.1 ms CKSEL=1001 SUT=00低频晶振(32.768KHZ) 1K CK + 65 ms CKSEL=1001 SUT=01低频晶振(32.768KHZ) 32K CK + 65 ms CKSEL=1001 SUT=10低频石英/陶瓷振荡器(0.4-0.9MHZ) 258 CK + 4.1 ms CKSEL=1010 SUT=00低频石英/陶瓷振荡器(0.4-0.9MHZ) 258 CK + 65 ms CKSEL=1010 SUT=01低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 0 ms CKSEL=1010 SUT=10低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 4.1 ms CKSEL=1010 SUT=11低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 65 ms CKSEL=1011 SUT=00低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 0 ms CKSEL=1011 SUT=01低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 4.1ms CKSEL=1011 SUT=10低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 65ms CKSEL=1011 SUT=11中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 4.1 ms CKSEL=1100 SUT=00中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 65 ms CKSEL=1100 SUT=01中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 0 ms CKSEL=1100 SUT=10中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 4.1 ms CKSEL=1100 SUT=11中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 65 ms CKSEL=1101 SUT=00中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 0 ms CKSEL=1101 SUT=01中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 4.1ms CKSEL=1101 SUT=10中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 65ms CKSEL=1101 SUT=11高频石英/陶瓷振荡器(3.0-8.0MHZ) 258 CK + 4.1 ms CKSEL=1110 SUT=00高频石英/陶瓷振荡器(3.0-8.0MHZ) 258 CK + 65 ms CKSEL=1110 SUT=01高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 0 ms CKSEL=1110 SUT=10高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 4.1 ms CKSEL=1110 SUT=11高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 65 ms CKSEL=1111 SUT=00高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 0 ms CKSEL=1111 SUT=01高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 4.1ms CKSEL=1111 SUT=10高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 65ms CKSEL=1111 SUT=11高于8M选8M的。
ATmega16A引脚功能说明
引脚功能说明:
VCC 数字电路的电源
GND地
端口A(PA7..PA0) 端口A 做为A/D 转换器的模拟输入端
端口B(PB7..PB0) 端口B 为8 位双向I/O 口,具有可编程的内部上拉电阻
端口C(PC7..PC0)端口C 为8 位双向I/O 口,具有可编程的内部上拉电阻。
端口D(PD7..PD0)端口D 为8 位双向I/O 口,具有可编程的内部上拉电阻RESET复位输入引脚。
持续时间超过最小门限时间的低电平将引起系统复位
XTAL1反向振荡放大器与片内时钟操作电路的输入端。
XTAL2反向振荡放大器的输出端。
AVCC AVCC是端口A与A/D转换器的电源。
不使用ADC时,该引脚应直接与VCC连接。
使用ADC
时应通过一个低通滤波器与VCC 连接。
AREF A/D 的模拟基准输入引脚。
51单片机空闲和掉电模式应用我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。
1. 空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。
但假若定时器正在运行,那么计数器寄存器中的值还将会增加。
单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。
以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。
2. 休眠-掉电模式当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。
使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。
可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。
ATMEGA16A中文资料高性能,低功耗AVR 8-bit微控制器•高级RISC建筑– 131条指令–绝大多数为单时钟周期执行– 32 x 8通用工作寄存器–全静态工作–高达16吞吐量在MIPS 16 MHz–片2—cycle乘数高耐久性非易失性内存段– 16K字节的程序存储器,在系统内可编程Flash– 512字节的EEPROM– 1K字节内部SRAM–写/擦除周期:10,000闪光/ 100,000的EEPROM–数据保存:在20年85°C/100年在25°C(1)–可选引导具有独立锁定Bits代码段•在系统编程的片上引导程序•真Read-While-Write操作–锁编程软件安全JTAG (IEEE std。
1149.1兼容)接口–边界扫描功能根据JTAG标准–广泛的片上调试支持–编程闪存,EEPROM,熔丝位和锁定Bits通过JTAG接口外设特点–两个8—bit定时器/计数器具有独立预分频器和比较模式–一个16-bit定时器/计数器具有独立预分频器,比较功能和捕捉模式–实时计数器具有独立振荡器–四PWM频道– 8-channel, 10-bit ADC• 8单端通道• 7在TQFP 包装差分通道只有• 2在1x, 10x,差分通道具有可编程增益或200x–面向字节的两线串行接口可编程串行USART的––主/从串行接口SPI–可编程看门狗定时器具有独立片内振荡器–片内模拟比较器单片机的特殊功能–上电复位和可编程的掉电检测–内部振荡器校准RC–外部和内部中断源– 6种睡眠模式:空闲,ADC降噪,省电,省电,待机和扩展待机I / O和封装– 32可编程I / O线– 40—pin PDIP, 44—lead TQFP,和44—pad QFN/MLF 工作电压– 2。
7为- 5。
5V ATmega16A速度等级– 0 —为16 MHz ATmega16A功耗@ 1 MHz, 3V,和25°C为ATmega16A–活动:0。
大话版ATMEGA16熔丝位设置1.BODLEVEL掉电复位门限电压BODLEVEL=1 门限为2.7V BODLEVEL=0门限为4.0V因为M16L可以工作在2.7v-5.5v所以触发电平可选2.7v或4.0v。
M16工作在4.5 - 5.5V,所以BODLEVEL=0。
BODLEVEL=1 不适用于ATmega162.BODEN掉电复位使能BODEN=0开启掉电检测BODEN=1 禁止3.ST[1,0]分位用内部晶振还是外部晶振两种情况①内部时②外部时4.CKSEL[3:0]与CKOPT片内时CKOPT都为1当CKOPT=0时,振荡器输出振幅较大,容易起振,适合干扰大的场合,以及使用晶振超过8M情况。
当CKOPT=1时,输出振幅小,这样可以减少电源消耗,对外干扰也小。
外部晶振>8M时CKSEL[3:0]=111x CKOPT=0外部晶振3~8M时CKSEL[3:0]=111x CKOPT=1外部晶振0.9~3M时CKSEL[3:0]=110x CKOPT=1外部晶振0.4~0.9M时CKSEL[3:0]=101x CKOPT=15.OCDEN片上调试使能位,6.JTAGENJTAGEN=0时开启JTAG调试为1禁止7.EESAVE执行擦除命令时是否保留EEPROM中内容,默认为1,表示擦除时和FLASH内容一起擦除,为0保留EEPROM内容8.BOOTRST复位入口选择1:程序从0x0000地址开始0:复位后从BOOT 区执行(参考BOOTSZ0/1)BOOTSZ1/0: 引导区程序大小及入口00:1024Word/0xc00;01:512Word/0xe00;10:256Word/0xf00;11:128Word/0xf80片内8M E4 D9 FF片外8M。