ATmega16中文手册

  • 格式:pdf
  • 大小:2.76 MB
  • 文档页数:330

产品特性•高性能、低功耗的 8位AVR®微处理器•先进的RISC结构–131 条指令 – 大多数指令执行时间为单个时钟周期–32个8位通用工作寄存器–全静态工作–工作于16 MHz时性能高达16 MIPS–只需两个时钟周期的硬件乘法器•非易失性程序和数据存储器–16K 字节的系统内可编程Flash擦写寿命: 10,000次–具有独立锁定位的可选Boot代码区通过片上Boot程序实现系统内编程真正的同时读写操作–512字节的EEPROM擦写寿命: 100,000次–1K字节的片内SRAM微控制器–可以对锁定位进行编程以实现用户程序的加密•JTAG 接口(与IEEE 1149.1标准兼容)–符合JTAG标准的边界扫描功能–支持扩展的片内调试功能–通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程•外设特点–两个具有独立预分频器和比较器功能的8位定时器/计数器–一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器–具有独立振荡器的实时计数器RTC–四通道PWM–8路10位ADC8 个单端通道TQFP封装的7个差分通道2个具有可编程增益(1x, 10x, 或200x)的差分通道–面向字节的两线接口–两个可编程的串行USART–可工作于主机/从机模式的SPI串行接口–具有独立片内振荡器的可编程看门狗定时器–片内模拟比较器•特殊的处理器特点–上电复位以及可编程的掉电检测–片内经过标定的RC振荡器–片内/片外中断源–6种睡眠模式: 空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式•I/O和封装–32 个可编程的I/O口–40引脚PDIP封装, 44引脚TQFP封装,与44引脚MLF封装•工作电压:–ATmega16L:2.7 - 5.5V–ATmega16:4.5 - 5.5V•速度等级–0 - 8 MHz ATmega16L–0 - 16 MHz ATmega16•ATmega16L在1 MHz, 3V, 25°C时的功耗–正常模式: 1.1 mA–空闲模式: 0.35 mA–掉电模式: < 1 µA2ATmega16(L)2466G–AVR–10/03引脚配置Figure 1. ATmega16的引脚声明本数据手册的典型值来源于对器件的仿真,以及其他基于相同产生工艺的 AVR 微控制器的标定特性。

本器件经过特性化之后将给出实际的最大值和最小值。

3ATmega16(L)2466G–AVR–10/03综述ATmega16是基于增强的AVR RISC 结构的低功耗8位CMOS 微控制器。

由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS /MHz ,从而可以缓减系统在功耗和处理速度之间的矛盾。

方框图Figure 2. 结构框图4ATmega16(L)2466G–AVR–10/03AVR 内核具有丰富的指令集和32个通用工作寄存器。

所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。

这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10倍的数据吞吐率。

ATmega16 有如下特点:16K 字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM ,1K 字节SRAM ,32 个通用I/O 口线,32个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART ,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装)的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。

工作于空闲模式时CPU 停止工作,而USART 、两线接口、A/D 转换器、SRAM 、T/C 、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。

本芯片是以Atmel 高密度非易失性存储器技术生产的。

片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。

引导程序可以使用任意接口将应用程序下载到应用Flash 存储区(Application Flash Memory)。

在更新应用Flash 存储区时引导Flash 区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。

通过将8位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega16成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

ATmega16 具有一整套的编程与系统开发工具,包括:C 语言 编译器、宏汇编、 程序调试器/软件仿真器、仿真器及评估板。

引脚说明VCC 数字电路的电源GND地端口A(PA7..PA0)端口A 做为A/D 转换器的模拟输入端。

端口A 为8位双向I/O 口,具有可编程的内部上拉电阻。

其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。

作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。

在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。

端口B(PB7..PB0)端口B 为8位双向I/O 口,具有可编程的内部上拉电阻。

其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。

作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。

在复位过程中,即使系统时钟还未起振,端口B 处于高阻状态。

端口B 也可以用做其他不同的特殊功能,请参见 P56。

端口C(PC7..PC0)端口C 为8位双向I/O 口,具有可编程的内部上拉电阻。

其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。

作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。

在复位过程中,即使系统时钟还未起振,端口C 处于高阻状态。

如果JTAG 接口使能,即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK)的上拉电阻被激活。

端口C 也可以用做其他不同的特殊功能,请参见 P59。

5ATmega16(L)2466G–AVR–10/03端口D(PD7..PD0)端口D 为8位双向I/O 口,具有可编程的内部上拉电阻。

其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。

作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。

在复位过程中,即使系统时钟还未起振,端口D 处于高阻状态。

端口D 也可以用做其他不同的特殊功能,请参见 P61。

RESET复位输入引脚。

持续时间超过最小门限时间的低电平将引起系统复位。

门限时间见P36Table 15。

持续时间小于门限间的脉冲不能保证可靠复位。

XTAL1反向振荡放大器与片内时钟操作电路的输入端。

XTAL2反向振荡放大器的输出端。

AVCCAVCC 是端口A 与A/D 转换器的电源。

不使用ADC 时,该引脚应直接与V CC 连接。

使用ADC 时应通过一个低通滤波器与V CC 连接。

AREFA/D 的模拟基准输入引脚。

代码例子本数据手册包含了一些简单的代码例子以说明如何使用芯片各个不同的功能模块。

这些例子都假定在编译之前已经包含了正确的头文件。

有些C 编译器在头文件里并没有包含位定义,而且各个C 编译器对中断处理有自己不同的处理方式。

请注意查阅相关文档以获取具体的信息。

6ATmega16(L)2466G–AVR–10/03AVR CPU 内核介绍本节从总体上讨论AVR 内核的结构。

CPU 的主要任务是保证程序的正确执行。

因此它必须能够访问存储器、执行运算、控制外设以及处理中断。

结构综述Figure 3. AVR 结构的方框图为了获得最高的性能以及并行性,AVR 采用了Harvard 结构,具有独立的数据和程序总线。

程序存储器里的指令通过一级流水线运行。

CPU 在执行一条指令的同时读取下一条指令(在本文称为预取)。

这个概念实现了指令的单时钟周期运行。

程序存储器是可以在线编程的FLASH 。

快速访问寄存器文件包括32个8位通用工作寄存器,访问时间为一个时钟周期。

从而实现了单时钟周期的ALU 操作。

在典型的ALU 操作中,两个位于寄存器文件中的操作数同时被访问,然后执行运算,结果再被送回到寄存器文件。

整个过程仅需一个时钟周期。

寄存器文件里有6个寄存器可以用作3个16位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。

其中一个指针还可以作为程序存储器查询表的地址指针。

这些附加的功能寄存器即为16位的X 、Y 、Z 寄存器。

ALU 支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。

ALU 也可以执行单寄存器操作。

运算完成之后状态寄存器的内容得到更新以反映操作结果。

程序流程通过有/无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。

大多数指令长度为16位,亦即每个程序存储器地址都包含一条16位或32位的指令。

程序存储器空间分为两个区:引导程序区(Boot 区)和应用程序区。

这两个区都有专门的锁定位以实现读和读/写保护。

用于写应用程序区的SPM 指令必须位于引导程序区。

在中断和调用子程序时返回地址的程序计数器(PC)保存于堆栈之中。

堆栈位于通用数据SRAM ,因此其深度仅受限于SRAM 的大小。

在复位例程里用户首先要初始化堆栈指针7ATmega16(L)2466G–AVR–10/03SP 。

这个指针位于I/O 空间,可以进行读写访问。

数据SRAM 可以通过5 种不同的寻址模式进行访问。

AVR 存储器空间为线性的平面结构。

AVR 有一个灵活的中断模块。

控制寄存器位于I/O 空间。

状态寄存器里有全局中断使能位。

每个中断在中断向量表里都有独立的中断向量。

各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。

I/O 存储器空间包含64个可以直接寻址的地址,作为CPU 外设的控制寄存器、SPI ,以及其他I/O 功能。

映射到数据空间即为寄存器文件之后的地址0x20 - 0x5F 。