ATtiny25-45-85中文数据手册

更新时间:2024-07-04 06:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

产品特点

?高性能,低功耗的AVR?

8位微控制器

?先进的RISC结构

- 120条指令 - 绝大多数为单时钟周期执行

- 32个8位通用工作寄存器- 全静态工作

?非易失性程序和数据存储器

- 2/4/8K的系统内可编程Flash(ATtiny25/45/85)字节

耐力:10,000写/擦除周期

- 128/256/512字节的系统内可编程EEPROM(ATtiny25/45/85)

耐力:100,000写/擦除周期

- 128/256/512字节的片内SRAM(ATtiny25/45/85)- 可以对锁定的自编程闪存程序存储器和EEPROM数据安全

?外设特性

- 8位定时器/计数器及两条PWM通道- 8位高速定时器/计数器具有独立预分频器

2高频PWM输出具有独立的输出比较寄存器可编程死区时间发生器- 与启动条件检测器的通用串行接口- 10位ADC

4个单端通道

2个差分ADC通道对具有可编程增益(1X,20X)- 可编程看门狗定时器具有独立的片上振荡器- 片内模拟比较器

?单片机的特殊功能

- debugWIRE片上调试系统- 在系统通过SPI端口可编程- 外部和内部中断源

- 低功耗空闲模式,ADC噪声抑制和掉电模式- 增强型上电复位电路- 可编程的掉电检测电路- 内部校准振荡器

?I / O和封装

- 六个可编程I / O线- 8引脚SOIC- 20引脚QFN

?工作电压

- 2.7 - 5.5V的ATtiny25/45/85

?速度等级

- ATtiny25/45/85:0 - 8 MHz@2.7 - 5.5V,0 - 16 MHz@4.5 - 5.5V

?汽车温度范围

- 40°C至+125°C

?低功耗

- 主动模式:

1兆赫,2.7V:300μA- 掉电模式:

0.2μA在2.7V

8-bit微控制器与2/4/8K字节的系统可编程FlashATtiny25ATtiny45ATtiny85汽车

7598H–AVR–07/09

1,引脚配置

图1-1.

引脚ATtiny25/45/85

SOIC

(PCINT5/RESET/ADC0/dW) PB518VCC

(PCINT3/XTAL1/OC1B/ADC3) PB327PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2)(PCINT4/XTAL2/CLKO/OC1B/ADC2) PB43

6PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1)

GND

4

5

PB0 (MOSI/DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0)

2.概述

该ATtiny25/45/85是基于增强的AVR的低功耗8位CMOS微控制器

RISC架构.通过在一个单时钟周期指令执行时间,该ATtiny25/45/85吞吐率接近1每MIPS MHz允许系统设计师能够优化功耗与处理速度.

2

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85

2.1

框图

图2-1.

框图

8-BIT DATABUS

CALIBRATEDINTERNALOSCILLATOR

PROGRAMCOUNTER

VCC

PROGRAMFLASH

STACKPOINTERWATCHDOG

TIMERMCU CONTROLREGISTERMCU STATUSREGISTER

TIMING ANDCONTROL

SRAM

GND

INSTRUCTIONREGISTER

GENERALPURPOSEREGISTERS

XYZ

TIMER/COUNTER0TIMER/COUNTER1UNIVERSALSERIALINTERFACE

INSTRUCTIONDECODER

CONTROLLINES

ALU

STATUSREGISTER

INTERRUPT

UNIT

PROGRAMMING

LOGIC

DATAEEPROM

OSCILLATORS

DATA REGISTER

PORT BDATA DIR.REG.PORT BADC /

ANALOG COMPARATOR

PORT B DRIVERS

RESET

PB0-PB5

AVR内核具有丰富的指令集和32个通用工作寄存器.所有的寄存器都直接连接到算术逻辑单元(ALU),允许两个独立的寄存器在一个时钟周期执行一条指令进行访问.这种结构大大提高了代码效率,同时实现吞吐量高达十倍比传统的CISC微控制器快.

3

7598H–AVR–07/09

该ATtiny25/45/85提供以下功能:在系统可编程2/4/8K字节

闪存,128/256/512字节EEPROM,128/256/256字节SRAM,6个通用I / O口线,32通用工作寄存器,一个8位定时器/计数器具有比较模式,一个8位的高高速定时器/计数器,通用串行接口,内部和外部中断,一个4通道,10位ADC,可编程看门狗定时器具有片内振荡器和三种软件选择 -能够省电模式.在空闲模式时CPU停止工作,而SRAM,定时器/计数器,ADC,模拟比较器,和中断系统继续工作.该

掉电模式,保存寄存器内容,禁用所有芯片功能,直到下一个中断或硬件复位.该ADC降噪模式停止CPU和所有的I / O模块除了ADC,以降低ADC转换时的开关噪声.

该设备是采用Atmel公司生产?

高密度非易失性存储器技术.该

片上ISP Flash允许程序存储器进行重新编程在系统通过SPI串行接口,由传统的非易失性存储器编程或通过在AVR内核上运行的片内引导代码.

该ATtiny25/45/85 AVR具有一整套的编程与系统开发工具,包括:C语言编译器,宏汇编,程序调试器/模拟器,在线仿真器及评估板.

2.2汽车质量等级

按照最严格的的ATtiny25/45/85已开发和生产

国际标准ISO-TS-16949的要求.此数据表包含的限制值从大量的特征(温度和电压)结果中提取.质量

与ATtiny25/45/85的可靠性已在定期产品资格被核实每AEC-Q100 1级.

正如订货信息段,该产品有三种不同的

温度等级,但与同等质量和可靠性的目标.不同的温度标识符已被定义为上市表2-1.

表2-1.

温度等级鉴定汽车产品

温度温度识别码

评论

-40 ; +85T类似的工业温度等级,但与汽车

质量

-40 ; +105T1降低汽车温度范围

-40 ; +125

Z

全AutomotiveTemperature范围

4

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85

2.3

2.3.1

引脚说明

VCC

电源电压.

2.3.2GND

地.

2.3.3端口B(PB5..PB0)

端口B是一个6位的双向带内部上拉电阻的I / O端口(每个选定位).该

港口B输出缓冲器具有高汇和源能力对称的驱动特性.作为输入,端口B pins被外部拉低,将输出电流,如果上拉电阻被激活.港口B pins为三态时复位条件变得活跃,即使系统时钟没有运行.

端口B也可以用各种特殊功能的ATtiny25/45/85的功能上列出第54页.

2.3.4RESET

复位输入.该引脚上的低电平持续时间大于最小脉冲长度不再会产生复位,即使系统时钟没有运行.最小脉冲宽度是由于在37.更短的脉冲不能保证可靠复位.

表8-1页

3,关于代码示例

该文档包含了一些简单的代码例子以说明如何使用芯片各个不同的部分.这些代码示例假定的头文件被编译之前已经包含.请注意,并非所有的C编译器厂商包括位定义在头文件和中断处理的C是编译器的依赖.请确认与C编译器文档了解更多信息.

4,AVR CPU内核

4.1

介绍

本节讨论AVR内核的结构一般. CPU核心的主要功能是保证程序的正确执行.因此,CPU必须能够访问存储器,执行运算,控制外设以及处理中断.

5

7598H–AVR–07/09

4.2结构概述

图4-1.

AVR结构的方框图

数据总线8位

节目状态节目Flash计数器与控制

记忆

32 x 8指令一般注册

目的

Registrers

打断Unit指令解码器

看门狗Timer

ALU

控制线

比较

类似物直接寻址

间接寻址

I / O模块1

DataSRAM

I / O模块2

I / O模块n

EEPROM

I / O线

为了获得最高的性能以及并行性,AVR采用了Harvard结构 - 与独立的记忆和公共汽车程序和数据.在程序存储器中的指令是通过一级流水线运行.当一个指令被执行时,下一条指令tion是预取从程序存储器.这个概念实现了指令被执行在每个时钟周期.程序存储器是可以在系统内可编程闪存.

快速访问寄存器文件包括32个8位通用工作寄存器,一个时钟周期的访问时间.这使得单周期算术逻辑单元(ALU)操作.在典型的ALU操作中,两个操作数是从寄存器文件输出,操作执行,并将结果存回寄存器文件 - 在一个时钟周期.

有6个寄存器可以用作3个16位的间接寻址寄存器指针以数据空间寻址 - 实现高效的地址运算.其中一个这些地址指针也可以用来作为地址指针查找表中的Flash程序存储器.这些附加的功能寄存器即为16位的X,Y和Z寄存器,在本节后面介绍.

6

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85

ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算.单寄存器操作也可以在ALU中执行的.经过算术操作tion,状态寄存器被更新以反映操作结果的信息.

程序流程通过无条件的跳转指令和调用指令,能直接寻址整个地址空间提供.大多数AVR指令为16位宽.有32位指令也.

在中断和调用子程序时返回地址的程序计数器(PC)被存储在堆栈.该协议栈是有效地分配在通用数据SRAM,因此其深度大小仅受限于SRAM的大小和SRAM的使用.所有用户程序必须初始化SP在复位例程(子程序或中断执行之前).堆栈

指针(SP)是读/写在I / O空间.数据SRAM可以很容易地通过在AVR架构支持的五种不同的寻址方式访问.

在AVR架构的内存空间是线性的常规内存映射.

一个灵活的中断模块.控制寄存器中有一个额外的全局的I / O空间在中断状态寄存器使能位.所有的中断都具有独立的中断向量在中断向量表.该中断的优先级与其在中断向量位置化.较低的中断向量地址,优先级越高.

在I / O存储器空间包含64个地址作为CPU外设的控制寄存器

TERS,SPI,以及其他I / O功能.在I / O内存可以直接访问,或作为数据空间位置下面这些寄存器文件,地址0x20 - 0x5F.

4.3ALU - 算术逻辑单元

高性能的AVR ALU与32个通用直接连接

工作寄存器.在一个时钟周期中,通用的算术运算寄存器,寄存器与立即数之间的执行.该ALU操作分为分为三个主要类别 - 算术,逻辑和位操作.一些实现

架构还提供了强大的乘数同时支持有符号/无符号乘法运算和小数格式.详见“指令集”部分进行了详细的描述.

4.4状态寄存器

状态寄存器包含了最近执行的算术指令的结果信息.此信息可用于改变以实现条件操作的程序流程.请注意,状态寄存器的所有ALU运算,如指令集所述的规定.这在许多情况下不再需要使用专门的比较指令,从而导致更快和更紧凑的代码.

进入中断服务程序,并从中断返回时恢复时状态寄存器不会自动存储.这必须由软件来处理.AVR中断寄存器 - SREG - 定义为:

Bit

7I

Read/WriteInitial Value

R/W0

6TR/W0

5HR/W0

4SR/W0

3VR/W0

2NR/W0

1ZR/W0

0CR/W0

SREG

7

7598H–AVR–07/09

?位7 - I:全局中断使能

全局中断使能位必须要启用的中断设置.个体间

中断使能由其他独立的控制寄存器.如果全局中断使能

寄存器清零,没有任何中断都将启用独立的个体中断使能设置.在I位由硬件清零中断发生后,由RETI指令集以使能中断.在I-位也可以设置和清除通过SEI和CLI指令的应用,如在指令集的参考信息.

?位6 - T:位拷贝存储

该位拷贝指令BLD(位负载)和BST(位存储)使用T字位作为源或目的地民族的操作位.从寄存器文件寄存器的位可以通过将拷贝到TBST指令,并在T位可以被复制到一个位的寄存器文件寄存器BLD指令.

?位5 - H:半进位标志

半进位标志H表示半进一些算术运算.此标志对于BCD运算非常有用.请参见“指令集”说明信息.

?位4 - S:符号位,S = N

⊕V

在S-位的异或负数标志N与2的补码之间溢出标志V“指令集”说明信息.?位3 - V:2的补码溢出标志

该二进制补码溢出标志V支持2的补码运算.请参阅“指令集”说明信息.?位2 - N:负标志

负标志N表示阴性结果的算术或逻辑运算.请参见“指令集”说明信息.

?位1 - Z:零标志

零标志Z表示结果为零算术或逻辑运算.请参见“指令设置说明“详细信息.?位0 - C:进位标志

进位标志C表示进位算术或逻辑运算.详见“指令集说明“详细信息.

8

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/854.5通用寄存器文件寄存器文件优化的AVR增强型RISC指令集.为了实现the required performance and flexibility, the following input/output schemes are supported by theRegister File:?一个8-bit输出操作数和一个8位结果输入.? Two 8-bit output operands and one 8-bit resultinput? Two 8-bit output operands and one 16-bit resultinput?一个16-bit输出操作数和一个16位结果输入图4-2图4-2.shows the structure of the 32 general purpose working registers in theCPU.AVR CPU General Purpose Working Registers7R0R1R2…R13GeneralPurposeWorkingRegistersR14R15R16R17…R26R27R28R29R30R310x1A0x1B0x1C0x1D0x1E0x1FX-register Low ByteX-register High ByteY-register Low ByteY-register High ByteZ-register Low ByteZ-register High Byte0x0D0x0E0x0F0x100x110Addr.0x000x010x02大部分的操作寄存器文件的指令都可以直接访问所有的寄存器,而且多数都是单周期指令.如所示Figure 4-2,each register is also assigned a Data memory address, mappingthemdirectly into the first 32 locations of the user Data Space. Although notbeingphysically implemented as SRAM locations, this memory organization provides greatflexibility in access of the registers, as the X-, Y- and Z-pointer registers can be set to index any register in thefile.97598H–AVR–07/094.5.1X寄存器,Y寄存器和Z寄存器

该寄存器R26 .. R31有一些增加的功能到他们的一般用途使用.这些reg-存器是16位的地址指针间接寻址的数据空间.这三个间接地址寄存器X,Y和Z如上述定义的图4-3.图4-3.

在X,Y,Z寄存器

15

XH

XL

0X-register

7

0

7

0

R27 (0x1B)

R26 (0x1A)

15

YH

YL0Y-register

7

0

7

0

R29 (0x1D)R28 (0x1C)

15

ZHZL

0

Z-register

7

0

7

0

R31 (0x1F)

R30 (0x1E)

在不同的寻址模式中,这些地址寄存器可以实现固定偏移量,自动加一和自动减(详见指令集参考).

4.6堆栈指针

协议栈主要用于存储临时数据,存储本地变量和储存中断子程序的返回地址.堆栈指针总是指

向堆栈的顶部.请注意,堆栈是实现从更高的存储单元中成长系统蒸发散,以较低的内存位置.这意味着,栈push命令减少堆栈指针.

堆栈指针指向数据SRAM堆栈区的子程序和中断

栈的位置.在数据堆栈空间必须由程序中的任何子程序调用执行或中断使能之前进行定义.堆栈指针必须设置为上述0x60.堆栈指针减一,当数据被压入堆栈的PUSH指令,它是由两个递减时,返回地址被压入与子程序调用或中断堆栈.堆栈指针加一当数据从与POP指令弹出堆栈,它是由两个加时,数据从堆栈中弹出从子程序返回RET或中断返回RETI.

AVR的堆栈指针实现为两个8位寄存器中的I / O空间.实际上使用的比特数是依赖于实现.请注意,在某些AVR器件的数据区太小,用SPL就足够.在这种情况下,SPH寄存器将不存在.

Bit15141312111098SP15SP14SP13SP12SP11SP10SP9SP8SPHSP7SP6SP5SP4SP3SP2SP1SP0SPL

7

6543210Read/WriteR/WR/WR/WR/WR/WR/WR/WR/WR/W

R/WR/WR/WR/WR/WR/WR/WInitial Value000000001

0

0

1

1

1

1

1

10

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/854.7指令执行时序本节说明访问时间概念指令执行.在AVRCPU是由CPU时钟CLK驱动CPU,从选定的时钟源直接产生的芯片.没有内部时钟进行分频.图4-4显示并行指令取指和由喀拉功能的指令执行VARD架构和快速访问寄存器文件的概念.这是基本的流水线概念,性能高达1每MIPS MHz与每个成本函数相应的独特的结果,每时钟功能,并且每个电源单元的功能.图4-4.并行取指和指令执行T1T2T3T4clkCPU1取指令第一指令执行2取指令第二指令执行3取指令第三指令执行4取指令图4-5演示的是寄存器文件内部访问时序.在一个单个时钟周期一个ALU执行使用两个寄存器操作数的操作,并且将结果存回到目的寄存器.图4-5.单周期ALU操作T1T2T3T4clkCPU总执行时间寄存器操作数取ALU操作执行结果回写4.8复位和中断处理AVR有不同的中断源.这些中断和复位的独立向量中的每个都有一个独立的程序向量在程序内存空间.所有中断设置独立的启用必须写入逻辑一起来的全局中断位使能位在状态寄存器,以使能中断.在程序内存空间的最低地址缺省为复位和中断向量.完整的向量列表请参见45页上的“中断”.名单中还决定了不同中断的优先级.较低的地址越高的优先级. RESET具有最高的优先权,其次是INT0 - 外部中断请求0.117598H–AVR–07/09当中断发生时,全局中断使能位I被清零,所有中断都dis-禁止.用户软件可以编写逻辑一到I位使能中断嵌套.所有已启用然后中断都可以中断当前的中断服务程序.在I位时自动设置一个从中断返回指令 - RETI - 执行.

基本上有两种类型的中断.第一种类型是由设置该事件触发

中断标志.对于这些中断,程序计数器跳转到实际的中断子程序入口器,以执行中断处理程序,同时硬件将清除相应的

中断标志.中断标志也可以通过写逻辑之一,该标志位的位置(s)被清除被清除.如果发生中断条件,而相应的中断使能位

清零,中断标志将被设置并一直保持到中断执行,或者该标志为由软件清零.同样,如果一个或多个中断条件发生时全局中断使能位被清零时,相应的中断标志位将被设置并记住,直到全局中断使能位被设置,然后会根据优先顺序来执行.

只要中断条件存在第二种类型的中断将触发.这些中断不需要中断标志.如果中断使能之前就中断条件消失了,中断不会被触发.

当从中断AVR退出时,它总是返回到主程序并执行一条指令的任何被挂起的中断之前.

请注意,状态寄存器不会自动进入中断服务程序时存储,也不从中断程序返回时恢复.这必须由软件来处理.When using the CLI instruction to disable interrupts, the interrupts will be immediatelydisabled.没有中断可以在CLI指令后执行,即使同时发生的

CLI指令.下面的例子显示了如何可以用来避免在EEPROM内容的中断..汇编代码例程

inR16,SREG

; store SREG value

cli

;在禁止中断

sbiEECR, EEMWE;启动EEPROM写sbiEECR,EEWEoutSREG,R16

;恢复SREG(I位)C代码示例

charCSREG;

CSREG = SREG;

/ *保存SREG * /

/*

在禁止中断* /

_CLI();

EECR | =(1EEMWE);/ *启动EEPROM写操作* /

EECR | =(1EEWE);SREG = CSREG;

/ *恢复SREG(I位)* /

12

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85

当使用SEI指令使能中断时,紧跟其后的第一条指令将任何中断之前执行,如本例所示.汇编代码例程

sei睡眠;;中断(s)

;置位全局中断使能进入休眠模式,等待中断;注意:将任何悬而未决之前进入睡眠

C代码示例

_SEI();

/ *置位全局中断使能* /

_SLEEP();/ *进入休眠模式,等待中断* // *注意:在之前的任何未决的中断(s)进入睡眠* /

4.8.1中断响应时间

对于所有已启用AVR单片机的中断响应是四个时钟周期最小.经过四个时钟周期执行程序跳转到实际的中断处理程序.在这4个时钟周期,程序计数器被压入堆栈.

该载体通常是跳转到中断服务程序,此跳转需要3个时钟周期.如果在执行一个多周期指令执行期间发生中断,该指令被中断服务之前完成.若中断发生时MCU处于休眠模式,中断响应时间增加4个时钟周期.这种增长来自除不同的休眠模式的启动时间.

从一个中断处理程序返回需要4个时钟周期.在这四个时钟周期,程序计数器(两个字节)将被弹出堆栈回来,堆栈指针加二,和我在SREG位被置位.

5,AVR ATtiny25/45/85回忆

本节介绍在ATtiny25/45/85不同的回忆. AVR结构具有

两个主要的存储器空间,数据存储器和程序存储器空间.此外,该

ATtiny25/45/85还有EEPROM存储器以保存数据.这三个存储器空间都为线性的.

5.1在系统重新编程闪存程序存储器

该ATtiny25/45/85包含2/4/8K字节的片上系统内可编程闪存用于程序存储.因为所有的AVR指令为16位或32位,故而Flash组织为1024/2048/4096×16.

Flash存储器至少10,000写/擦除周期的耐力.该ATtiny25/45/85

程序计数器(PC)为10/11/12位,因此可以寻址1024/2048/4096程序存储器位置.

134页上的“存储器编程”包含有关Flash的详细说明

使用SPI引脚上的数据串行下载.

常数可以保存于整个程序存储器地址空间分配(见LPM - 加载程序存储器指令的说明).时序图请取指令和执行都在呈现第11页ing“.

“指令执行蒂姆 -

13

7598H–AVR–07/09

图5-1.程序存储器映射程序存储器0x00000x03FF/0x07FF5.2SRAM数据存储器图5-2显示了ATtiny25/45/85 SRAM空间的组织.较低224/352/607数据存储器包括了寄存器文件,I / O存储器和内部数据SRAM.起始的32个地址为寄存器文件,然后是64 LOCA-系统蒸发散的标准I / O内存,最后128/256/512字节的内部数据SRAM.对于数据存储器的五个不同的寻址方式:直接寻址,带偏移换货,间接寻址,带预减和间接带后增量.在登记册文件中的寄存器R26到R31为间接寻址的指针寄存器.直接寻址范围可达整个数据空间.与位移的间接模式,达到从由Y或Z寄存器给出的基地址的63个地址.当使用寄存器自动预减和后递增ment,地址寄存器X,Y和Z间接寻址模式自动增加或减少.32个通用工作寄存器,64个I / O寄存器,以及128/256/512字节的ATtiny25/45/85内部数据SRAM可以访问全部通过所有上述的寻址模式.该寄存器文件的描述第9页的“通用寄存器文件”.图5-2.数据存储器映射数据存储器32寄存器0x0000 - 0x001F64个I / O寄存器0x0020 - 0x005F0x0060内部SRAM(128/256/512 x 8)0x0DF/0x015F/0x025F14ATtiny25/45/857598H–AVR–07/09ATtiny25/45/85

5.2.1

数据存储器访问时间

本节说明访问时序内部存储器的访问.该内部数据SRAM访问时间为两个CLK进行图5-3.

片上数据SRAM访问周期

T1

T2

T3

CPU

如上述周期图5-3.

clkCPU地址

DataWRDataRD

Read

计算地址

地址有效

Write

存储器访问指令下一条指令

5.3EEPROM数据存储器

该ATtiny25/45/85包含128/256/512字节的EEPROM数据存储器.它是作为一个独立的数据空间,其中可以按字节读写. EEPROM有一个耐力至少100,000写/擦除周期. EEPROM和之间的访问的CPU是在下面描述的,指定EEPROM地址寄存器,EEPROM数据寄存器和EEPROM控制寄存器.为串行数据的详细说明下载到EEPROM中,看第138页.

5.3.1EEPROM的读/写访问

EEPROM的访问寄存器都可以访问的I / O空间.

是为EEPROM的写访问时间在给定的表5-1.自定时功能,然而,可以让用户软件检测到下一个字节可以被写入.如果用户代码包含指令系统蒸发散写入EEPROM,一些必须采取预防措施.在电源滤波电源,VCC很可能会上升或下降的power-up/down缓慢.这将导致装置的一些一段时间,以在电压大于指定的最低使用的时钟频率下运行.See第20页上的“防止EEPROM的腐败”关于如何避免这些问题的详细信息情况.

为了防止无意识的EEPROM写操作,一个特定的写程序必须遵守.请参阅第18页的“原子字节编程”and第18页的“分割字节编程”这个细节.

for

当执行EEPROM读操作时,CPU会停止工作4个时钟周期执行下一条指令之前.当执行EEPROM写入,CPU要停止两个时钟周期执行下一条指令之前.

15

7598H–AVR–07/09

5.3.2EEPROM地址寄存器高 - EEARH

Bit

76543210-------EEAR8EEARH

Read/WriteRRRRRRRR/WInitial Value

X

X

X

X

X

X

X

X

?位7 .. 1 - Res6 .. 0:保留位

这些位保留供将来使用,总是读为0 ATtiny25/45/85.?位0 - EEAR8:EEPROM的地址

EEPROM地址寄存器 - EEARH - 指定在高EEPROM地址

128/256/512字节的EEPROM空间. EEPROM数据字节之间0线性寻址和127/255/511. EEAR的初始值是不确定的.一个适当的值之前,必须书面EEPROM的可被访问.

5.3.3EEPROM地址寄存器 - EEARL

Bit

76543210EEAR7

EEAR6

EEAR5EEAR4EEAR3EEAR2EEAR1EEAR0EEARL

Read/WriteRRR/WR/WR/WR/WR/WR/WInitial Value

X

X

X

X

X

X

X

X

?位7 .. 0 - EEAR7 .. 0:EEPROM的地址

EEPROM地址寄存器 - EEARL - 指定在低EEPROM地址

128/256/512字节的EEPROM空间. EEPROM数据字节之间0线性寻址和127/255/511. EEAR的初始值是不确定的.一个适当的值之前,必须书面EEPROM的可被访问.

5.3.4

EEPROM数据寄存器 - EEDR

Bit

76543210EEDR7

EEDR6EEDR5EEDR4EEDR3EEDR2EEDR1EEDR0EEDR

Read/WriteR/WR/WR/WR/WR/WR/WR/WR/WInitial Value

X

X

X

X

X

X

X

X

?位7 .. 0 - EEDR7 .. 0:EEPROM数据

对于EEPROM写操作EEDR寄存器包含要写入的数据

EEPROM中的寄存器EEAR给出的地址. EEPROM的读操作中,EEDR包含从EEPROM在由EEAR给出的地址读出的数据.

5.3.5

EEPROM控制寄存器 - EECR

Bit

76543210–

–EEPM1EEPM0EERIEEEMPEEEPEEEREEECR

Read/WriteRRR/WR/WR/WR/WR/WR/WInitial Value

0

0

X

X

0

0

X

0

?位7 - Res:保留位

该位保留供将来使用,将来也永远读为0 ATtiny25/45/85.对于未来的AVR器件的兼容性,总是写该位为零.读完后,屏蔽了这一点.

16

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85

位6 - Res:保留位

该位是保留在ATtiny25/45/85,将来也永远读为零.第5位,4 - EEPM1和EEPM0:EEPROM编程模式位

EEPROM编程模式位设置定义的编程操作,将

对EEPE写入时触发.这是可能的程序数据在一个原子操作(擦除旧值和方案的新价值)或在两个不同的分裂擦除和写入操作操作.编程时间为不同的模式显示在表5-1.虽然EEPE设置,任何写EEPMn将被忽略.在复位期间,EEPMn位将被重置为0b00除非EEPROM处于编程.

表5-1.

EEPM1

0011

EEPROM的模式位

EEPM0

0101

程序设计

Time

3.4毫秒1.8毫秒1.8毫秒–

作业

擦除和写入一个操作(原子操作)仅擦除只写

留作将来使用

位3 - EERIE:EEPROM就绪中断使能

清零EERIE将使能EEPROM准备好中断若SREG的I位被置位.写作

EERIE则禁止中断. EEPROM准备好中断产生一个恒定的中断时,非易失性存储器编程就绪.

位2 - EEMPE:EEPROM主机编程使能

该EEMPE位决定EEPE写入一个才会有效果与否.

当EEMPE设置,在四个时钟周期内设置EEPE将编程EEPROM的指定地址.如果EEMPE是零,设置EEPE将没有任何效果.当EEMPE已被写入到一个由软件,硬件清除该位为零后4个时钟.

位1 - EEPE:EEPROM程序启用

EEPROM的编程使能信号EEPE是编程使能信号到EEPROM中.当EEPE被写入时,EEPROM将根据EEPMn位的设置进行编程.

该EEMPE位必须被写入到一个前一个合乎逻辑的写入EEPE,否则没有

EEPROM的写操作为止.当写访问时间已过,EEPE位由硬件清零.当EEPE已定,CPU会停止两个时钟周期的下一条指令执行之前.

位0 - EERE:EEPROM读使能

EEPROM的读使能信号 - EERE - 是读选通到EEPROM中.当COR-RECT地址设置在EEAR寄存器的EERE位必须写入一个触发

EEPROM中读取. EEPROM中读取只需要一条指令,并请求的数据立即可用.当执行EEPROM读操作时,CPU会停止工作4个周期的下一个指令执行之前.用户在开始读操作tion前,应检测EEPE.如果一个写操作正在进行中,它既不是可以读取EEPROM,也无法改变寄存器EEAR.

17

7598H–AVR–07/09

5.3.6基本字节编程使用基本字节编程是最简单的模式.当写一个字节到EEPROM中,用户必须将地址写入寄存器EEAR和数据到EEDR寄存器.如果否则EEPMn位为零,EEPE的写操作(在4个周期EEMPE写完后)将触发擦除/写操作.无论是擦除和写入周期完成一次操作和总体规划时间的单位是表20-1.EEPE位会保持到擦除和写入操作完成.当设备忙于编程,这是不可能做任何其他EEPROM操作.5.3.7拆分字节编程这是可能的分裂擦除和写入操作分为两个周期.如果系统需要的时间(典型地,如果电源电压下降),一些有限的期间短的存取时间,这可能是有用的.为了利用这种方法的优点,它是必需的要写入的位置已在写入操作之前被擦除.但由于擦除和写入操作是分离的,这是可以做到的擦除操作时,系统允许进行时间临界操作(通常在掉电后).5.3.8Erase要擦除一个字节,地址必须被写入EEAR.若EEPMn为0b01,写EEPE(在EEMPE之后的四个周期写入)将触发擦除操作只(程序鸣时间见表20-1).EEPE位会保持到擦除操作完成.当设备忙于编程,这是不可能做任何其他EEPROM操作.5.3.9Write要编写一个单元,用户必须将地址写入EEAR和将数据写入EEDR.如果EEPMn位为0b10,对EEPE写入(在4个周期EEMPE写完后)将触发写操作(编程时间见表20-1).EEPE位会保持设置直到写操作完成.如果要被写入的位置没有被写入之前擦除,存储的数据必须被视为丢失.当设备忙于编程,这是不可能做任何其他EEPROM操作.标定的振荡器用于EEPROM定时.确保振荡器频率 -频率是内中所述的要求上 - “OSCCAL振荡器校准寄存器”第26页.下面的代码分别用汇编和C函数进行擦除,写入或原子写入EEPROM中.该示例假定中断处于用户控制(例如,通过禁用全局中断),因而不会发生中断执行这些函数的过程中18ATtiny25/45/857598H–AVR–07/09ATtiny25/45/85

汇编代码例程

EEPROM_write:;等待上一次写操作结束sbicrjmpldioutoutoutsbisbiret

EECR,EEPEEEPROM_write

r16, (0EEPM1)|(0EEPM0)EECR,R16EEARL,R17EEDR,r16EECR,EEMWEEECR,EEWE

;设置编程模式;设置地址(R17)地址寄存器;写数据(R16)到数据寄存器;写逻辑1 EEMWE;启动写操作EEWE

C代码示例

void{/*;/*

EEPROM_write(无符号

char

ucAddress,

无符号字符型*/

ucData)

等待上一次写操作结束而(EECR&(1EEPE))

设置编程模式* /

EECR = (0<>EECR =(0EEPM1)|(0EEPM0)/ *设置地址和数据寄存器* /EEARL = ucAddress;EEDR = ucData;/*

写逻辑1 EEMWE * /

EECR | =(1EEMWE);/ *启动写操作EEWE * /EECR | =(1EEWE);}

19

7598H–AVR–07/09

下面的代码示例说明如何用汇编和C函数来读取EEPROM.这些示例假设中断控制,因此不会发生中断执行这些函数的过程中.汇编代码例程

EEPROM_read:;等待上一次写操作结束sbicEECR,EEPErjmpEEPROM_read;设置地址(R17)地址寄存器outEEARL,R17;开始EERE以读sbiEECR,EERE;读取数据寄存器中的数据inr16,EEDR

ret

C代码示例

无符号字符型EEPROM_read(无符号

char

ucAddress)

{

/ *等待上一次写操作结束* /而(EECR&(1EEPE));

/ *设置地址寄存器* /EEARL = ucAddress;/*

开始EERE以读* /

EECR | =(1EERE);/ *从数据寄存器返回数据* /返回EEDR;}

5.3.10预防腐败的EEPROM

在低V时期CC,EEPROM的数据可以被损坏,因为电源电压

太低,CPU和正确操作的EEPROM中.这些问题是一样的,使用独立的EEPROM器件,以及相同的设计方案应该被应用.

EEPROM数据损坏有两种情况可能造成当电压过低.首先,在写过程的EEPROM需要正确操作的最小电压.证券交易委员会ondly时,CPU本身可以执行指令不正确,如果电源电压过低.EEPROM数据损坏的问题可以通过以下方法解决:

保持在电源电压不足的时期AVR RESET信号(低).这可以通过使内部欠压检测器(BOD)来完成.如果内部的检测电平董事会无法满足要求的检测水平,外部低V匹配CC复位保护电路可以被使用.如果发生复位而写操作进行中,写操作将完成规定的电源电压是足够的.

20

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/855.4I / O存储器该ATtiny25/45/85的I / O空间定义见182页上的“注册摘要”.所有ATtiny25/45/85的I / O及外设都被放置于I / O空间.所有的I / O位置可能通过LD / LDS / LDD和ST / STS / STD指示,32之间传输的数据访问通用工作寄存器和I / O空间.地址范围内的I / O寄存器为0x00 - 0x1F直接位访问使用SBI和CBI指令.在这些寄存器中,单个位的值可以通过使用SBIS与SBIC指令进行检查.请参阅说明更多的细节设置一节.当使用的I / O特定的命令IN和OUT时,I / O地址为0x00 - 0x3F必须使用.当寻址的I / O寄存器作为数据使用的空间LD和ST指令,0x20必须添加到这些地址.对于未来的产品兼容,保留位应写入零,如果访问.保留的I / O内存地址不应该被写入.一些状态标志可以通过写入逻辑1来清除.请注意,CBI和SBI指令只能在指定的操作位,因此可以用在含有这种状态标志寄存器. CBI和SBI指令的工作与寄存器0x00到0x1F只.在I / O和外设控制寄存器在后面的章节中说明.6,系统时钟及时钟选项6.1时钟系统及其分布图6-1主要时钟系统在AVR及其分布.所有的时钟不必是活跃在给定的时间.为了降低功耗,模块的时钟没有中所述使用可以停止使用不同的睡眠模式,换货和睡眠31页上的模式“.时钟系统的详细说明如下.图6-1.时钟分配“电源管理clk217598H–AVR–07/096.1.1CPU时钟 - CLK

CPU

CPU时钟被路由到相关的操作AVR内核的系统的组成部分.这些模块的例子是通用寄存器文件,状态寄存器和

数据存储器保存堆栈指针.停止CPU时钟禁止从执行一般操作和计算的核心.

6.1.2I / O时钟 - CLK

I/O

在I / O时钟用于主要的I / O模块,如定时器/计数器.在I / O时钟还用于外部中断模块,但要注意的是有些外部中断由异步逻辑检测,因此即使I / O时钟停止被检测到这些中断.

6.1.3Flash时钟 - CLK

FLASH

Flash时钟控制Flash接口的操作.此时钟通常是同时积极与CPU时钟.

6.1.4ADC时钟 - CLK

ADC

该ADC具有专门的时钟域.这使得停止CPU和I / O时钟以降低数字电路产生的噪声.这给了更精确的ADC转换结果.

6.1.5内部PLL快速外设时钟发生器 - CLK

PCK

内部PLL在ATtiny25/45/85产生时钟频率是8倍速从乘源输入. PLL输入时钟源是具有内部RC振荡器的输出

一个频率为8.0兆赫.因而PLL的输出,快速外设时钟为64MHz.快外设时钟,或时钟从预分频,可以选择作为时钟源T/C1的.请参阅图6-2第23页.

PLL被锁定在RC振荡器,并通过OSCCAL寄存器调整RC振荡器

调整快速外设时钟在同一时间.然而,即使RC振荡器取为频率高于8 MHz,则快速外设时钟频率达到饱和,在85兆赫(最坏情况),并保持在摆动的最大频率.但应注意的是,PLL在这种情况下没有被锁定不再与RC振荡器时钟.

因此,建议不要采取OSCCAL的调整频率高于8

兆赫为了确保PLL在正确的操作范围.内部PLL使能只有在PLLCSR的PLLE位被置位或PLLCK熔丝编程('0').从PLLCSR位普沃茨克时设置PLL被锁定.内部RC振荡器和PLL掉电关机和待机睡眠模式.

22

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85

图6-2.

PCK时钟系统

OSCCAL PLLE

PLLCK & CKSEL FUSES

CLKPS3..0

Lock探测器

PLOCK

RC OSCILLATOR8.0 MHz / 6.4 MHz

PLL8x / 4x

PCK

64 / 25.6 MHz

DIVIDEBY 4

XTAL1XTAL2

OSCILLATORS

系统Clock预分频器

SYSTEMCLOCK

6.2时钟源

该设备具有以下时钟源的选择,可选择通过Flash熔丝位,如下所示.从选定的源时钟输入到AVR时钟发生器,再分配到相应的模块.

(1)

表6-1.

器件时钟选项外部时钟PLL时钟

时钟源选择

CKSEL3..0000000010010010001101000-11110101, 0111, 0011

校准的内部RC振荡器8.0 MHz的看门狗振荡器128千赫外部低频晶体外部晶体/陶瓷谐振器保留的Note:

1.对于所有的熔丝位,“1”表示未编程,“0”表示编程.

每个定时选项的不同的选择给出了以下几个部分.当CPU从掉电或唤醒省电,所选择的时钟源用于时间

启动,以确保指令执行开始前稳定振荡器运行.当CPU

从复位开始,有一个额外的延迟允许功率到达前一个稳定的水平开始正常工作.看门狗振荡器用于计时的这种实时的一部分启动时间.用于每个超时WDT振荡器周期数示于6-2.

Table

23

7598H–AVR–07/09

表6-2.看门狗振荡器周期数

典型的溢出时间

4毫秒64毫秒

周期数

5128K (8,192)

6.3默认时钟源

该设备出厂时CKSEL =“0010”,SUT =“10”,且CKDIV8编程.因此,默认时钟源设置为8 MHz的

最长启动时间为8,初始系统时钟分频运行的内部RC振荡器.这种设置保证所有用户都可以使用在系统或高电压编程使他们所需的时钟源.

6.4晶体振荡器

XTAL1和XTAL2是一个反相放大器,可以con-输入和输出,分别想通用作片内振荡器,如图图6-3.陶瓷谐振器可被使用.

要么是石英晶体或

C1和C2应该总是相等的两个晶体和谐振器.最优值

电容器的选择取决于使用的晶体或谐振器,杂散电容的量,以及对环境的电磁噪声.为选择电容的一些指南与晶体使用载表6-3.对于陶瓷谐振器,电容值由下式给出制造商应该被使用.图6-3.

晶体振荡器连接

C2C1

XTAL2XTAL1GND

振荡器可以工作于三种不同的模式,每一个特定的频率运行优化范围.经营模式通过熔丝位CKSEL3 .. 1所示表6-3.

CKSEL3..1100

(1)

表6-3.

晶体振荡器工作模式

频率范围(MHz)

0.4 - 0.90.9 - 3.03.0 - 8.08.0 -推荐范围为电容器C1和

C2使用晶体(PF)

–12 - 2212 - 2212 - 22

101110111

注意事项:1.不应与晶体使用此选项,只能用于陶瓷谐振器.

该CKSEL0保险丝连同SUT1 .. 0用于选择如图所示的启动时间6-4.

Table

24

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85表6-4.对于晶体振荡器的启动时间启动时间从掉电和省电258 CK258 CK1K CK1K CK1K CK(1)CKSEL000001111SUT1..00001101100011011额外延迟时间从复位(VCC= 5.0V)14CK + 4毫秒14CK + 64毫秒14CK14CK + 4毫秒14CK + 64毫秒14CK14CK + 4毫秒14CK + 64毫秒推荐用法陶瓷谐振器,速度快上涨动力陶瓷谐振器,慢慢上涨动力陶瓷谐振器,BOD启用陶瓷谐振器,速度快上涨动力陶瓷谐振器,慢慢上涨动力晶体振荡器,生化需氧量启用晶体振荡器,快上涨动力晶体振荡器,慢慢上涨动力(1)(2)(2)(2)16K CK16K CK16K CK注意事项:1,这些选项只能不工作时接近该装置的最大频率被使用,并且仅当在启动时的频率稳定性对于应用而言不重要.这些选项不适用于晶体.2,这些选项是为陶瓷谐振器设计的,可以保证启动时的频率稳定性.它们也可以用于晶体不工作时接近该装置的最大频率,并且如果在启动时的频率稳定性对于应用而言不重要.6.5低频晶体振荡器为了使用32.768 kHz钟表晶体作为时钟源设备,低频晶振振荡器必须通过设置熔丝位CKSEL到'0110'被选中.该晶体应连接如图图6-3.指的是32 kHz晶振应用笔记的详细信息振荡器工作以及如何选择C1和C2适当的值.当选择了这个振荡器之后,启动时间如由熔丝位SUT确定表6-5.表6-5.对于低频晶体振荡器的启动时间启动时间从掉电和电源Save1K CK1K CK(1)SUT1..000011011从额外延迟时间上电复位(VCC= 5.0V)4毫秒64毫秒64毫秒保留的推荐用法电源快速上升,或是BOD启用慢慢崛起的大国在启动时频率已经稳定(1)32K CK注意事项:1,这些选项仅当在启动时的频率稳定性对于重要的使用应用程序.257598H–AVR–07/09

6.6校准的内部RC振荡器标定的片内RC振荡器提供了一个8.0 MHz的时钟.频率是标称在3V值和25°C.如果频率超过器件的规格(取决于VCC),CKDIV8保险丝必须按顺序由8在启动过程来划分内部频率进行编程.请参阅“系统时钟预分频器”第29页.更多的细节.该时钟可被选择如通过编程熔丝位CKSEL所示的系统时钟表6-6.如果选择,它将无需外部元件.复位时硬件将标定字节加载到OSCCAL寄存器,自动校准RC振荡器.在3V和25°C,这标定可以提供标称频率±1%精度.当使用这个振荡器作为系统时钟时,看门狗振荡器将仍然使用自己的看门狗定时器作为复位超时.有关预编程的校准值的更多信息,请参见“标定字节”第137页.表6-6.内部校准RC振荡器工作模式CKSEL3..0标称频率0010(1)8.0兆赫Note:1.该设备出厂时这个选项选中.当选择了这个振荡器之后,启动时间如由熔丝位SUT确定表6-7.表6-7.内部标定RC振荡器的启动时间启动时间从额外延迟时间SUT1..0从掉电复位(VCC= 5.0V)推荐用法006 CK14CK + 4毫秒BOD使能016 CK14CK + 4毫秒电源快速上升10(1)6 CK14CK + 64毫秒慢慢崛起的大国11保留的Note:1.该设备出厂时这个选项选中.6.6.1振荡器校准寄存器 - OSCCALBit76543210CAL7CAL6CAL5CAL4CAL3CAL2CAL1CAL0OSCCALRead/WriteR/WR/WR/WR/WR/WR/WR/WR/WInitial ValueDevice Specific Calibration Value位7 .. 0 - CAL7 .. 0:振荡器校准值将标定数据写入这个地址可以调整内部振荡器以消除过程变量ations所带来的振荡频率.这是在复位时自动完成.何时OSCCAL为零,最低可用频率被选择.写非零值,该寄存器将增加内部振荡器的频率.写入0xFF即得到最高频率.标定的振荡器用来为访问EEPROM和Flash.如果EEPROM或闪存写,不要标定到超过8.8 MHz的频率.其他,聪明,EEPROM或Flash写可能会失败.26ATtiny25/45/857598H–AVR–07/09ATtiny25/45/85该CAL7位决定操作的振荡器的范围.设置此位为0,给出了最低频率范围,此位设置为1给出了最高的频率范围.两个频率范围是重叠的,换句话说OSCCAL = 0x7F的设置提供了一个更高的频率高于OSCCAL = 0x80的.该CAL6 .. 0为用于调整所选范围内的频率.设置的0x00给出了在该范围内的最低频率,和0x7F设置给出了该范围内的最高频率.递增CAL6 .. 0 1会给小于2%频率增加,频率范围为7.3 - 8.1兆赫.避免校准校正内部RC时大幅度改变校准值振荡器,以保证MCU能够稳定运行.从超过2%,频率的变化一个周期到下一个可导致unpredicatble行为.改变OSCCAL不应该超过0x20每个校准.它需要确保MCU是在保持在复位状态这样的变化中,时钟频率表6-8.OSCCAL数值0x000x3F0x7F内部RC振荡器频率范围最小频率,百分比标称频率50u0%在百分比最大频率标称频率1000 0%6.7外部时钟为了推动从外部时钟源设备,CLKI必须以最高所示6-4.要在一个外部时钟运行设备,熔丝位CKSEL必须编程为“00”.图6-4.外部时钟驱动配置外部CLOCK信号数字CLKIGND当这个时钟源的选择,启动时间如由熔丝位SUT确定表6-9.表6-9.SUT1..000011011对于外部时钟的启动时间启动时间从掉电和省电6 CK6 CK6 CK从额外延迟时间Reset14CK14CK + 4毫秒14CK + 64毫秒保留的推荐用法BOD使能电源快速上升慢慢崛起的大国277598H–AVR–07/09请注意,系统时钟预分频器可用于实现内部运行时间的变化时钟频率,同时保证稳定工作.请参阅“系统时钟预分频器”页面上29了解详情.6.7.1高频PLL时钟 - PLLCLK有一个内部PLL提供名义上锁定到RC振荡器64 MHz时钟速率对于使用的外设T/C1的和为系统时钟源.当选定为系统时钟源,通过编程熔丝位CKSEL为0001,它是由一分为四样所示表6-10.当这个时钟源的选择,启动时间由确定SUT熔断器所示表6-11.另请参阅“PCK时钟系统”第23页.表6-10.PLLCK操作模式CKSEL3..0标称频率000116 MHz的表6-11.为PLLCK的启动时间启动时从电源时间从额外延迟时间SUT1..0下来,省电复位(VCC= 5.0V)推荐用法001K CK14CK + 8msBOD使能0116K CK14CK + 8ms电源快速上升101K CK14CK + 68毫秒慢慢崛起的大国1116K CK14CK + 68毫秒慢慢崛起的大国6.8128 kHz内部振荡器在128 kHz内部振荡器是一种低功耗振荡器提供128 kHz的时钟.频率为名义在3V和25°C.这个时钟也可以选择作为系统时钟通过编程CKSEL熔丝位为“11”.当这个时钟源的选择,启动时间如由熔丝位SUT确定表6-12.表6-12.为128 kHz内部振荡器的启动时间启动时间从从额外延迟时间SUT1..0掉电和省电Reset推荐用法006 CK14CKBOD使能016 CK14CK + 4毫秒电源快速上升106 CK14CK + 64毫秒慢慢崛起的大国11保留的28ATtiny25/45/857598H–AVR–07/09ATtiny25/45/856.9时钟输出缓冲器该装置可以输出系统时钟上CLKO引脚.为了使输出,CKOUT保险丝已被编程.此模式适用于芯片时钟用来驱动其他CIR-外部电路系统.请注意,时钟复位,在正常操作期间将不会被输出I / O引脚,当保险丝被编程将被覆盖.任何时钟源,包括跨NAL RC振荡器,可以在时钟输出CLKO选择.如果系统时钟使用预分频器,它是分为系统时钟输出.6.10系统时钟预分频器该ATtiny25/45/85系统时钟可以通过设置时钟预分频寄存器可分为 -CLKPR.此功能可用于降低功耗时的要求处理能力低.这可以与所有的时钟源选项一起使用,它会影响到CPU和所有同步外设的时钟频率. CLK由系数被划分为所示表6-13.I/O,CLKADC,CLKCPU和CLKFLASH6.10.1时钟预分频寄存器 - CLKPRBit7CLKPCE6–5–4–3CLKPS32CLKPS21CLKPS10CLKPS0CLKPRRead/WriteInitial ValueR/W0R0R0R0R/WR/WR/WR/WSee Bit Description位7 - CLKPCE:时钟预分频器变化使CLKPCE位必须被写为逻辑1,使之CLKPS位.该CLKPCE当CLKPR其他位simultaniosly写入到零位才会更新. CLKPCE是由硬件写入四个周期后或当CLKPS位写入清除.重写在此超时期限CLKPCE位,既不扩展超时期限,也没有明确的CLKPCE位.位6 .. 4 - Res:保留位这些位为保留位在ATtiny25/45/85,将来也永远读为零.位3 .. 0 - CLKPS3 .. 0:时钟预分频器选择位3 - 0这几位定义所选时钟源与内部系统之间的分频因子时钟.这些位可以被写入运行时间来改变时钟频率以满足不同应用要求.由于分频器分主时钟输入到MCU,所有同步速度当使用分频因子常识外设降低.该部门的因素中给出表6-13.为避免时钟频率的无意改变,一个特殊的写程序必须遵循改变CLKPS位:1.将时钟预分频器变化使能(CLKPCE)位一和所有其他位CLKPR为零.2.在四个周期,而记录一零CLKPCE写入所需的值CLKPS.改变预分频器设置时要确保写入过程中不会中断,中断必须被禁止.297598H–AVR–07/09CKDIV8熔丝位决定CLKPS位的初始值.如果CKDIV8未编程,CLKPS位复位为“0000”.若CKDIV8已编程,CLKPS位复位到

“0011”,给人的八个分频因子在启动.如果所选择的这个功能应该使用时钟源的频率高于该设备在目前的最高频率

操作条件.需要注意的是任何值可以被写入CLKPS位不管

CKDIV8熔丝位设置.在软件应用中,必须确保有足够的分频因子选择,如果selcted时钟源具有更高的频率比的设备在本操作条件下的最大频率.该设备出厂时CKDIV8熔丝编程.

表6-13.

时钟预分频器选择

CLKPS3

CLKPS2

CLKPS1

CLKPS0

时钟分频系数

00001000120010400118010016010132011064011112810002561001保留的1010保留的1011保留的1100保留的1101保留的1110保留的1

1

1

1

保留的

6.10.2开关时间

当预分频器设置之间切换时,系统时钟预分频器确保没有故障发生在时钟系统,而且没有中间频率比既不对应于先前设定的时钟频率,也没有相应的新设置的时钟频率更高.

纹波计数器实现预分频器运行在不可分割的时钟频率,这可能比CPU的时钟频率快.因此,它是无法确定的

预分频器的状态 - 即使它是可读的,它需要从一个切换的确切时间钟师另一个不能准确预测.

从CLKPS值被写入的时候,它需要T1 + T2和T1 + 2 * T2之间,在新的时钟频率为活跃.在此期间,2个时钟边沿.这里,T1是以前的时钟周期,T2是对应于新的预分频比的设定的期间.

30

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85

7,电源管理及睡眠模式

高性能和业界领先的代码效率,使AVR微控制器的理想体例选择适合低功耗应用.

睡眠模式可以使应用程序关闭没有使用的模块的MCU,从而降低功耗. AVR具有不同的睡眠模式,允许用户定制功耗应用的需求.

进入任何的睡眠模式的,在MCUCR的SE位必须写入逻辑1和SLEEP指令必须执行.该SM1 .. 0位MCUCR寄存器选择哪个睡眠模式(空闲,ADC降噪,或掉电)将由休眠激活指令化.看表7-1对于一个总结.如果使能的中断而MCU处于睡眠

模式下,MCU唤醒.该MCU然后停止工作4个周期,除了启动时间,执行中断服务程序,并恢复执行SLEEP的下一条指令.寄存器文件和SRAM的内容不会改变时,该设备从睡眠中唤醒.如果在睡眠过程中发生了复位,则MCU唤醒后从中断向量开始执行.

图6-1第21页呈现出不同的时钟系统的ATtiny25/45/85,及其分布tribution.此图在选择合适的睡眠模式时非常有用.

7.1

MCU控制寄存器 -该MCU控制寄存器包含控制位电源管理.MCUCR

Bit

7BODS

Read/WriteInitial Value

R/W0

6PUDR/W0

5SER/W0

4SM1R/W0

3SM0R/W0

2BODSER/W0

1ISC01R/W0

0ISC00R/W0

MCUCR

?位7 - BODS:生化需氧量睡眠

生化需氧量禁用功能可在某些设备上,只.看

33页的“限制”.

为了睡眠期间禁用生化需氧量(见表7-2第33页)该BODS位必须写入逻辑之一.这是由一个定时序列和使能位,BODSE在MCUCR控制.

首先,无论BODS和BODSE必须被设置为1.第二,在4个时钟周期,BODS必须被设置为1,并BODSE必须被设定为零.该BODS位有效三个时钟周期,它被设置后.睡眠指令必须执行,而BODS是活跃,以关闭BOD的实际睡眠模式.该BODS位后三个时钟周期自动清零.

在睡眠BOD尚未实施的设备该位未使用,总是读为零.

?位5 - SE:休眠使能

SE位必须写入逻辑之一,使MCU进入睡眠模式时,执行SLEEP指令时.为了确保进入休眠模式,除非它是程序员的目的单片机,它是建议写在睡眠使能(SE)位一仅在SLEEP指令执行前和起床后立即清除.

?第4位,3 - SM1 .. 0:休眠模式选择位2 .. 0这些位三个可用的睡眠模式之间进行选择,如图

表7-1.

31

7598H–AVR–07/09

表7-1.

休眠模式选择

SM1SM0睡眠模式00Idle

01ADC噪声抑制10断电1

1

待机模式

?位2 - BODSE:生化需氧量睡眠启用生化需氧量禁用功能可在某些设备上,只.看

33页的“限制”.

该BODSE位使能BODS控制位设置,因为在BODS解释位描述.生化需氧量禁用由时序控制.该位未使用在软件BOD禁止未得到执行,将读为零在这些设备的设备.

7.2空闲模式

当SM1 .. 0为00时,SLEEP指令将使MCU进入空闲模式,停止CPU但允许模拟比较器,ADC,定时器/计数器,看门狗和中断系统继续工作.这个睡眠模式只停止clkCPU和CLK

FLASH

,而

允许其他时钟运行.

空闲模式使MCU从外部触发中断以及内部醒来

那些象定时器溢出.如果不需要唤醒从模拟比较器中断,模拟比较器可通过设置模拟比较器ACD位被断电

控制和状态寄存器 - ACSR.这将降低功耗在空闲模式下.如果ADC使能,进入此模式中的转换会自动启动.

7.3ADC噪声抑制模式

当SM1 .. 0为01时,SLEEP指令将使MCU进入噪声还原模式,停止CPU,而ADC,外部中断,而

看门狗继续工作(如果启用).这个睡眠模式停止clkI/O,CLKCPU

和CLK

FLASH

,

同时允许其他时钟运行.

此模式提高了ADC的噪声环境,使得转换精度更高.如果

ADC使能,进入此模式中的转换会自动启动.除了形成ADC转换结束中断,外部复位,看门狗复位,欠压

复位,SPM / EEPROM准备好中断,INT0外部电平中断或引脚电平变化中断可以从ADC噪声抑制模式唤醒MCU.

7.4掉电模式

当SM1 .. 0为10时,SLEEP指令将使MCU进入

掉电模式.在这种模式下,振荡器停止工作,而外部中断,并且看门狗继续工作(如果启用).只有外部复位,看门狗复位,欠压复位,上INT0外部电平中断,或引脚电平变化中断可以唤醒

单片机.这个睡眠模式停止了所有的时钟,使之只有异步模块可以继续工作.

32

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85请注意,如果一个电平触发中断用于唤醒从掉电模式下,改变电平必须保持一段时间,以唤醒MCU.请参阅..,有关详细信息表7-2.活动的时钟以及唤醒源在不同睡眠模式活动的时钟振荡器唤醒源第58页上的“外部中断”FLASHCPUADCPCKIO睡眠模式IdleADC噪声减少断电Note:clkclkclkXclkXXclkX启用源主时钟看门狗打断ReadyINT0和SPM/ADC其他I / OUSI启动状态引脚电平变化EEPROMXXX(1)XXXXXXXXXXXXX(1)1.对于INT0,只级中断.7.5限制生化需氧量禁用功能已在下列设备得到落实,只有:ATTINY25,修订版D,和新的ATtiny45,修订版D,和新的ATTINY85,C版本,和新的7.6节电寄存器该节电寄存器,PRR,提供了一种方法来停止时钟individualperipherals,以降低功耗.外围设备的当前状态是frozenand的I / O寄存器不能被读取或写入.停止时钟时,所使用的外围资源仍然被占用,所以外围应该在大多数情况下,停止时钟之前被禁用.醒来一个模块,它是通过清除PRR位完成后,把该模块在相同的状态关机前.模块关机可以在空闲模式和主动模式被用来显著降低整体功耗.在所有其他睡眠模式时,时钟已经停止.Bit7–Read/WriteInitial ValueR06-R05-R04-R03PRTIM1R/W02PRTIM0R/W01PRUSIR/W00PRADCR/W0PRR位7,6,5,4 - Res:保留位这些位为保留位在ATtiny25/45/85,将来也永远读为零.位3 - PRTIM1:节电T/C1的写逻辑之一,该位关闭T/C1的模块.当T/C1的启用,操作将继续像关机前.337598H–AVR–07/09位2 - PRTIM0:节电T/C0的

写逻辑之一,该位关闭T/C0的模块.当T/C0的启用,操作将继续像关机前.

位1 - PRUSI:节电USI

写逻辑之一,该位关闭USI停止时钟模块.当再次醒来的USI,富联国际应重新初始化,以确保正常运行.

位0 - PRADC:降低功耗ADC

写逻辑之一,该位关闭了ADC.之前关闭ADC必须被禁止.模拟比较器不能用在ADC输入MUX当ADC被关闭.

7.7降低功耗

有几个问题,试图降低AVR控制系统的功耗时需要考虑的问题.在一般情况下,睡眠模式应该使用尽可能多,与睡眠模式应选择以使尽可能少的设备的功能运作.所有不需要的功能必须禁止.特别是,下面的模块试图达到的尽可能低的功耗时,需要特别考虑.

7.7.1类比至数位转换器

如果使能时,ADC在睡眠模式下继续工作.为了降低功耗,ADC应该是显示在进入睡眠模式之前禁止.当ADC关闭和再次打开,下一转换将是一个扩展的转换.请参阅第111页上的“模拟到数字转换器”关于ADC操作细节.

7.7.2模拟比较器

在空闲模式时,模拟比较器,如果不使用被禁用.当进入ADC降噪模式下,模拟比较器应该被禁用.在其他睡眠模式模拟比较器是自动禁用.但是,如果模拟比较器是设置为使用内部参考电压作为输入,模拟比较器,可以显示禁止在睡眠模式.否则,内部参考电压将被启用,独立的睡眠模式.请参阅“模拟比较器”第108页关于详细介绍了如何

配置模拟比较器.

7.7.3欠压检测器

如果掉电检测器是没有必要的,这个模块也可以关闭.如果

欠压检测器是由BODLEVEL保险丝启用,它会在睡眠模式下继续工作,因此,总是消耗功率.在深层次的睡眠模式,这将显著贡献总电流消耗.请参阅“欠压检测”第38页关于详细介绍了如何

配置欠压检测器.

7.7.4内部参考电压

需要的欠压检测,当内部参考电压将被启用

模拟比较器或ADC.如果因为在这些模块被禁用

以上,内部参考电压将被停用,它不会被消耗功率.何时再次开启时,用户必须等待基准启动输出用于前.如果定值保持在睡眠模式下,输出可被立即使用.请参阅“内部电压

第40页上的年龄参考“为在启动时间的细节.

34

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/857.7.5看门狗定时器如果看门狗定时器是不是需要在应用程序中,这个模块也可以关闭.如果看门狗定时器使能,它将在各种休眠模式下继续工作,因此,总是消耗电源.在深层次的睡眠模式,这将显著贡献的总电流消耗化.请参阅“看门狗定时器”第41页有关如何配置看门狗定时器.7.7.6端口引脚当进入睡眠模式时,所有的端口引脚都应该配置为只消耗最小的功耗.该最重要的是必须保证没有驱动电阻性负载.在休眠模式下无论是I / O时钟(CLKI/O)和ADC时钟(clkADC)被停止时,该装置的输入缓冲器将被禁用.这将确保没有功率是由输入电路不会消耗电流.在某些情况下,输入逻辑是必要的,用于检测唤醒条件,然后它会启用.请参阅节“数字输入使能和休眠模式”第51页关于细节该引脚被启用.如果输入缓冲器被激活,输入信号被悬空或具有模拟信号电平接近VCC/ 2,否则输入缓冲器会消耗过多的电对于模拟输入引脚,数字输入缓冲应始终被禁用流..一个模拟信号水平接近VCC对一个输入管脚/ 2可引起显著电流,即使在主动模式.数字输入缓冲器可以通过写数字输入禁止寄存器(DIDR0)来禁止.请参阅110页 - “DIDR0数字输入禁止寄存器0”了解详情.8,系统控制和复位8.1复位AVR在复位时,所有的I / O寄存器都被设置为初始值,程序开始执行从复位向量.该指令放置在复位向量必须是RJMP - 相对跳转 - 指令复位处理例程.如果程序永远不使能中断源,中断向量不使用,一般的程序代码可以放置在这些位置.图中的电路图8-1为复位逻辑.表8-1定义了电气复位电路的参数.AVR单片机的I / O端口立即复位为初始状态,当复位源生效.这不需要任何时钟处于正常运行状态.当所有的复位信号消失活跃,一个延迟计数器被激活,从而延长了内部复位.这允许正常工作之前电源达到稳定的水平.超时延迟计数器的周期是由用户通过SUT与CKSEL熔丝位定义.该dif-ferent选择延迟期间都第23页上的“时钟源”.8.2复位源该ATtiny25/45/85有4个复位源:?上电复位. MCU复位当电源电压低于上电复位阈值(VPOT).?外部复位. MCU复位当一个较低的水平上存在的RESET引脚较长大于最小脉冲长度.?看门狗复位.该MCU复位当看门狗定时器期间届满,看门狗被启用.?欠压复位.该MCU复位当电源电压VCC低于欠压复位门限(VBOT)和欠压检测器已启用.7598H–AVR–07/0935

图8-1.复位逻辑

DATA BUS

MCU StatusRegister (MCUSR)PORFBORFEXTRFWDRF

Power-on Reset

Circuit

BODLEVEL [1..0]

Brown-outReset Circuit

Pull-up Resistor

WatchdogOscillator

ClockCK

Delay Counters

Generator

TIMEOUT

CKSEL[1:0]

SUT[1:0]

8.3上电复位

上电复位(POR)脉冲由片内检测电路产生.检测水平在被定义表8-1.该POR被激活时V

CC

低于检测水平.该

POR电路可以用来触发启动复位,以及检测故障的电源电压.

上电复位(POR)电路确保器件从上电复位.到达上电复位阈值电压调用延时计数器,多久它决定器件将保持在复位V后CC上升. RESET信号被再次激活,没有任何延误,当VCC下降到低于检测水平.

36

ATtiny25/45/85

7598H–AVR–07/09

ATtiny25/45/85图8-2.VVVMCU启动过程,RESET连接到VVCCRRCCRESETVtTIME-OUTINTERNALRESET图8-3.VCCMCU启动过程,RESET由外VPOTRESETV超时t内部RESET表8-1.符号VPOT上电复位规格参数上电复位阈值电压(上升)上电复位阈值电压(下降)VCC最大.启动电压,以确保内部上电复位信号VCC最小.启动电压,以确保内部上电复位信号VCC上升速率,以确保上电复位RESET引脚阈值电压1,在上升的供给必须为V之间PORMIN(1)Min1.10.8Typ1.41.3Max1.71.60.4UnitsVVVVV/msVPORMAXVPORMINVCCRRVRSTNote:-0.10.010.1 V和VCC0.9Vto ensure Reset.CCVPORMAX8.4外部复位An External Reset is generated by a low level on the RESET pin if enabled.复位低电平持续时间than the minimum pulse width (seeTable 8-1)will generate a reset, even if the clock is notrun-ning.更短的脉冲不能保证可靠复位. When the applied signal reachesthe Reset Threshold Voltage – VRST– on its positive edge, the delay counter starts theMCUafter the Time-out period – tTOUT– has expired.377598H–AVR–07/09图8-4.外部复位手术CC8.5掉电检测ATtiny25/45/85具有片内欠压检测(BOD)电路监测在VCClevel通过比较,以一个固定的触发电平操作.对于BOD的触发水平可由BODLEVEL保险丝选择的.触发电平具有迟滞功能以消除电源尖峰欠压检测.上的检测电平的滞后应解释为VBOT+=VBOT+ VHYST/ 2和VBOT-= VBOT- VHYST/2.表8-2.BODLEVEL保险丝编码(1)BODLEVEL [2 .. 0]保险丝最小VBOT典型值VBOT最大VBOTUnits111董事会已禁用1101.71.82.01012.52.72.91004.04.34.60112.3(2)V0102.2(2)0011.9(2)0002.0(2)Note:1. VBOT可能低于标称的最小工作电压为某些设备.对于设备的地方这种情况下,该设备是测试下降到VCC= VBOT在生产测试.这个瓜尔 -一个欠压复位V之前会发生anteesCC下降到一个电压,其中正确微控制器的操作不再保证.2.中心值,未经测试.表8-3.掉电特性符号参数MinTypMaxUnitsVRAMRAM保持电压(1)50mVVHYST欠压检测器迟滞50mVtBOD在欠压复位最小脉宽2μs注意事项:1.这是限制其VDD可以在不丢失RAM数据的降低38ATtiny25/45/857598H–AVR–07/09ATtiny25/45/85当BOD使能,和VCC下降到低于触发水平(V值8-5),欠压复位立即被激发.当VCC上升到触发电平(VBOT+in图8-5),延时计数器开始在MCU的超时周期t后过期.BOD电路将只检测伏降GER比tBOD在给定的表8-1.图8-5.欠压复位手术VCCVBOT-VBOT+CCBOT-in数字TOUThas如果电压保持低于触发水平LON-RESET超时tTOUT内部RESET8.6看门狗复位当看门狗超时,它会产生大量的一CK周期时间短复位脉冲.上此脉冲的下降沿,延时定时器开始计数的超时周期t第41页关于看门狗定时器的具体操作过程.图8-6.CCTOUT.请参阅看门狗复位手术CK397598H–AVR–07/098.7

MCU状态寄存器 -MCUSR

MCU状态寄存器提供的复位源引起MCU复位的信息.Bit

76543210–

–––WDRFBORFEXTRFPORFMCUSR

Read/WriteRRRRR/W

R/W

R/W

R/W

Initial Value

0

0

0

0

See Bit Description

位7 .. 4 - Res:保留位

这些位为保留位在ATtiny25/45/85,将来也永远读为零.位3 - WDRF:看门狗复位标志

如果看门狗复位发生时置位.该位是由一个上电复位,或通过写逻辑零的标志复位.

位2 - BORF:掉电检测复位标志

如果一个欠压复位发生时置位.该位是由一个上电复位,或通过写逻辑零的标志复位.

位1 - EXTRF:外部复位标志

如果外部复位发生时置位.该位是由一个上电复位,或通过写逻辑零的标志复位.

位0 - PORF:上电复位标志

如果一个上电复位时,该位被置位.该位只能通过写一个逻辑零的标志复位.

为了使用这些复位标志来识别复位条件,用户应该阅读,然后尽早在程序重置MCUSR.如果在其他复位发生之前的寄存器清零,复位源可以通过检查复位标志被发现.

8.8内部参考电压

ATtiny25/45/85的特点是内部带隙参考.该参考用于欠压检测,并且它可以被用作输入到模拟比较器或ADC.

8.8.1参考电压使能信号和启动时间

参考电压有可能影响其应采用的方式启动时间.该启动时间列于表8-4.为了降低功耗,该引用并不总是打开的.该引用是对在以下几种情况:

1.当BOD使能(通过编程BODLEVEL [2 .. 0]熔丝位)2.能隙基准源连接到模拟比较器(通过设置

.在钢芯铝绞线ACBG置位).3.当ADC启用.

因此,当BOD未启用,设置ACBG位或使ADC,之后用户必须始终允许引用从模拟比较器或输出之前启动

40

ATtiny25/45/85

7598H–AVR–07/09

本文来源:https://www.bwwdw.com/article/yxn.html

Top