ATmega328P中文翻译资料.doc_第1页
ATmega328P中文翻译资料.doc_第2页
ATmega328P中文翻译资料.doc_第3页
ATmega328P中文翻译资料.doc_第4页
ATmega328P中文翻译资料.doc_第5页
已阅读5页,还剩235页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

产品特点 高性能,低功耗的AVR(R)8位微控制器 先进的RISC结构 - 131条指令 - 绝大多数为单时钟周期执行 - 32个8位通用工作寄存器 - 全静态工作 - 高达20 MIPS的吞吐量在20兆赫 - 片上2周期乘法器 高耐用性非挥发性记忆体段 - 4/8/16 /的在系统内可编程的Flash课程校内存32K字节 (ATMEGA48PA/88PA/168PA/328P) - 256/512/512 /1K字节的EEPROM(ATMEGA48PA/88PA/168PA/328P) - 512/1K/1K/2K字节的片内SRAM(ATMEGA48PA/88PA/168PA/328P) - 写/擦除周期:10,000闪存/ EEPROM100000 - 数据保存:20岁,在85/百年,在25(1) - 可选Boot代码区具有独立锁定位 在系统编程通过片上引导程序 真正的同时读 - 写操作 - 锁编程软件安全 外设特点 - 2个8位定时器/计数器具有独立预分频器和比较模式 - 1个16位定时器/计数器具有独立预分频器,比较功能和捕捉 模式 - 实时计数器具有独立振荡器 - 六个PWM通道 - 8通道10位ADC的TQFP和QFN/ MLF封装 温度测量 - 6通道10位ADC PDIP封装 温度测量 - 可编程的串行USART - 主/从SPI串行接口 - 面向字节的两线串行接口(飞利浦I2C兼容) - 可编程看门狗定时器具有独立片内振荡器 - 片内模拟比较器 - 中断和唤醒引脚电平变化 单片机的特殊功能 - 上电复位和可编程的掉电检测 - 内部校准振荡器 - 外部和内部中断源 - 六休眠模式:空闲模式,ADC噪声抑制,省电,掉电,待机, 和扩展Standby 的I / O和封装 - 23可编程I / O线 - 28引脚PDIP,32引脚TQFP封装,28焊盘QFN/ MLF以及32焊盘的QFN/ MLF 工作电压: - 1.8 - 5.5V的ATMEGA48PA/88PA/168PA/328P 温度范围: - -40至85 速度等级: - 0 - 20 MHz的1.8 - 5.5V 低功耗在1 MHz,1.8V,25ATMEGA48PA/88PA/168PA/328P: - 主动模式:0.2毫安 - 掉电模式:0.1A - 省电模式:0.75A(包括32千赫,RTC) 8位 微控制器 具有4/8/16/32K 字节的系统 可编程 闪光 ATMEGA48PA ATMEGA88PA ATMEGA168PA ATMEGA328P 牧师8161D-AVR-10月9日 2 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 1引脚配置 图1-1。引出线ATMEGA48PA/88PA/168PA/328P 1 2 3 4 5 6 7 8 24 23 22 21 20 19 18 17 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ XCK/ T0)PD4 GND VCC GND VCC (PCINT6/ XTAL1/ TOSC1)PB6 (PCINT7/ XTAL2/ TOSC2)PB7 PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) ADC7 GND AREF ADC6 AVCC PB5(SCK/ PCINT5) 32 31 30 29 28 27 26 25 9 10 11 12 13 14 15 16 (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 (PCINT1/ OC1A)PB1 (PCINT2/不锈钢/ OC1B)PB2 (PCINT3/ OC 2/ MOSI)PB3 (PCINT4/ MISO)PB4 PD2(INT0/ PCINT18) PD1(TXD/ PCINT17) PD0(RXD/ PCINT16) PC6(RESET/ PCINT14) PC5(ADC5/ SCL/ PCINT13) PC4(ADC4/ SDA/ PCINT12) PC3(ADC3/ PCINT11) PC2(ADC2/ PCINT10) TQFP封装顶视图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 (PCINT14/ RESET)PC6 (PCINT16/ RXD)PD0 (PCINT17/ TXD)PD1 (PCINT18/ INT0)PD2 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ XCK/ T0)PD4 VCC GND (PCINT6/ XTAL1/ TOSC1)PB6 (PCINT7/ XTAL2/ TOSC2)PB7 (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 PC5(ADC5/ SCL/ PCINT13) PC4(ADC4/ SDA/ PCINT12) PC3(ADC3/ PCINT11) PC2(ADC2/ PCINT10) PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) GND AREF AVCC PB5(SCK/ PCINT5) PB4(MISO/ PCINT4) PB3(MOSI/ OC 2/ PCINT3) PB2(SS/ OC1B/ PCINT2) PB1(OC1A/ PCINT1) PDIP 1 2 3 4 5 6 7 8 24 23 22 21 20 19 18 17 32 31 30 29 28 27 26 25 9 10 11 12 13 14 15 16 32 MLF顶视图 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ XCK/ T0)PD4 GND VCC GND VCC (PCINT6/ XTAL1/ TOSC1)PB6 (PCINT7/ XTAL2/ TOSC2)PB7 PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) ADC7 GND AREF ADC6 AVCC PB5(SCK/ PCINT5) (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 (PCINT1/ OC1A)PB1 (PCINT2/不锈钢/ OC1B)PB2 (PCINT3/ OC 2/ MOSI)PB3 (PCINT4/ MISO)PB4 PD2(INT0/ PCINT18) PD1(TXD/ PCINT17) PD0(RXD/ PCINT16) PC6(RESET/ PCINT14) PC5(ADC5/ SCL/ PCINT13) PC4(ADC4/ SDA/ PCINT12) PC3(ADC3/ PCINT11) PC2(ADC2/ PCINT10) 注:底部垫应焊接到地面。 1 2 3 4 5 6 7 21 20 19 18 17 16 15 28 27 26 25 24 23 22 8 9 10 11 12 13 14 28 MLF顶视图 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ XCK/ T0)PD4 VCC GND (PCINT6/ XTAL1/ TOSC1)PB6 (PCINT7/ XTAL2/ TOSC2)PB7 (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 (PCINT1/ OC1A)PB1 (PCINT2/不锈钢/ OC1B)PB2 (PCINT3/ OC 2/ MOSI)PB3 (PCINT4/ MISO)PB4 PC2(ADC2/ PCINT10) PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) GND AREF AVCC PB5(SCK/ PCINT5) 注:底部垫应焊接到地面。 3 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 1.1引脚说明 1.1.1 VCC 数字电源电压。 1.1.2接地 地面上。 1.1.3端口B(PB7:0)XTAL1/ XTAL2/ TOSC1/ TOSC2 端口B为8位双向I / O和内部上拉电阻(选择的每一位)端口。该 B口输出缓冲器具有既吸收大电流源对称的驱动特性 能力。作为输入,端口B引脚被外部电路拉低时将输出电流,如果上拉 电阻器被激活。端口的引脚为三态时,复位过程中, 即使系统时钟没有运行。 根据不同的时钟选择熔丝设置,PB6可以作为输入到反相振荡器 放大器和输入到内部时钟工作电路。 根据不同的时钟选择熔丝设置,PB7可作为从反相输出 振荡器放大器。 如果内部标定RC振荡器作为系统时钟源,PB7.6作为TOSC2.1 输入的异步定时器/计数器,如果在ASSR寄存器的AS2位。 不同的特殊功能的端口B的页面上阐述了“端口B的第二功能”第26页82和“系统时钟及时钟选项”。 1.1.4端口C(PC5:0) 端口C为7位双向I/ O和内部上拉电阻(选择的每一位)端口。该 PC5.0输出缓冲器具有同时具有高汇和源对称的驱动特性 能力。作为输入,端口C引脚被外部电路拉低时将输出电流,如果上拉 电阻器被激活。端口C引脚为三态时,复位过程中, 即使系统时钟没有运行。 1.1.5 PC6/复位 如果RSTDISBL位被编程,PC6作为一个I/ O引脚。注意,电特性 PC6的不同与端口C的其他引脚 如果RSTDISBL位未编程,PC6作为复位输入。该引脚上的低电平 比最小脉冲长度较长会产生复位,即使系统时钟没有运行。 的最小脉冲长度列于表28-3页上的318短的脉冲则不能保证 产生复位。 不同的特殊功能端口C的页面上阐述了“备用端口C的功能”85。 1.1.6端口D(PD7:0) 端口D为8位双向I / O和内部上拉电阻(选择的每一位)端口。该 端口D输出缓冲器具有同时具有高汇和源对称的驱动特性 能力。作为输入,端口D引脚被外部电路拉低时将输出电流,如果上拉 电阻器被激活。端口D引脚为三态时,复位过程中, 即使系统时钟没有运行。 4 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 不同的特殊功能端口D都页阐述了“备用端口D的功能”88。 1.1.7 AVCC AVCC是电源电压引脚为A/ D转换器,PC3:0,ADC7:6。它应该是外部 连接到VCC,即使不使用ADC。如果ADC被使用时,它应连接到VCC 通过一个低通滤波器。需要注意的是PC6.4使用数字供电电压VCC。 1.1.8 AREF AREF是模拟基准输入引脚为A/ D转换器。 1.1.9 ADC7:6(TQFP和QFN/ MLF封装) 在TQFP和QFN/ MLF封装,ADC7:6作为模拟输入到A / D转换器。 这些引脚的模拟电源供电,并作为10位ADC通道。 5 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 二,产品简介 该ATMEGA48PA/88PA/168PA/328P是一款基于低功耗8位CMOS微控制器 增强的AVR RISC架构。通过在单个时钟周期内执行强大的指令, ATMEGA48PA/88PA/168PA/328P的数据吞吐率1 MIPS每MHz,从而可以 系统设计师能够优化功耗和处理速度之间。 2.1框图 图2-1。框图 AVR内核具有丰富的指令集和32个通用工作寄存器。所有 寄存器都直接连接到所述算术逻辑单元(ALU),允许两个独立的 寄存器中在一个时钟周期中执行一个指令来访问。由此产生的 6 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 建筑是提高了代码效率,同时实现最高至10倍,比传统快 CISC微控制器。 该ATMEGA48PA/88PA/168PA/328P提供了以下功能:4K/8K字节的系统内的 可编程闪存与同时读 - 写功能,256/512/512 /1K字节EEPROM, 512/1K/1K/2K字节的SRAM,23个通用I/ O口线,32个通用工作寄存器, 三种灵活的定时器/计数器具有比较模式,内部和外部中断,可编程串行 USART,面向字节的两线串行接口,一个SPI串行端口,一个6通道10位 模数转换器(8路为TQFP和QFN/ MLF封装),一个可编程看门狗定时器 内部振荡器和五个软件选择的省电模式。在空闲模式下停止 CPU的工作,而SRAM,定时器/计数器,USART,两线串行接口,SPI端口以及 中断系统继续工作。在掉电模式保存登记内容,但 冻结振荡器,禁用所有其他芯片功能,直到下一个中断或硬件复位。 在省电模式下,异步定时器继续运行,允许用户保持一个 而该装置的其余部分处于休眠状态计时器基。 ADC噪声抑制模式时终止 CPU和除了异步定时器和ADC的所有I / O模块,以最大限度地减少开关噪声 ADC转换。在待机模式下,晶体/谐振振荡器运行,其余 该设备是在睡觉。这允许非常快速启动结合低功耗。 该设备是采用Atmel的高密度非易失性存储器技术生产的。该 片上ISP Flash允许程序存储器通过SPI进行在系统编程 串行接口,通过常规的非易失性存储器编程,或者通过一个片上的引导程序 在AVR内核上运行。引导程序可以使用任意接口下载 在应用程序的闪存应用程序。在引导Flash软件 继续运行,而应用Flash区更新,提供真正的同时读 - 写 操作。通过在将8位RISC CPU与系统内可编程闪存 单片芯片,Atmel的ATMEGA48PA/88PA/168PA/328P是一款功能强大的单片机, 提供了高度灵活和成本效益的解决方案为许多嵌入式控制应用。 该ATMEGA48PA/88PA/168PA/328P AVR具有一整套的编程与系统 开发工具,包括:C语言编译器,宏汇编,程序调试器/模拟器, 在电路仿真器和评估板。 间ATMEGA48PA,ATMEGA88PA,ATMEGA168PA和ATMEGA328P2.2对比 该ATMEGA48PA,ATMEGA88PA,ATMEGA168PA和ATMEGA328P的区别仅在于内存 大小,支持引导装入程序,中断向量的大小。表2-1总结了不同的记忆 和中断向量的大小为三个设备。 ATMEGA88PA,ATMEGA168PA和ATMEGA328P支持真正的同时读 - 写自编程 机制。有一个单独的Boot Loader区,SPM指令可以 从那里只执行。在ATMEGA48PA,没有同时读 - 写支持,没有独立的 Boot Loader区。 SPM指令可以访问整个Flash中执行。 表2-1。内存大小总结 设备闪存EEPROM内存中断向量大小 ATMEGA48PA4K字节256字节512字节1指令字/矢量 ATMEGA88PA8K字节512字节1K字节1指令字/矢量 ATMEGA168PA16K字节512字节1K字节2个指令字/矢量 ATMEGA328P32K字节1K字节2K字节2个指令字/矢量 7 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 3资源 一套全面的开发工具,应用手册和数据表都可以 下载的/avr。 注意事项:1。 4,数据保存时间 可靠性鉴定结果表明,该投影数据保留故障率要少得多 于1ppm超过20年,在85或百年在25。 5,关于代码示例 该文档包含了一些简单的代码例子以说明如何使用各种零件 设备。这些代码示例假定的头文件包含前 编译。请注意,并非所有的C编译器厂商包括在头文件的位定义 和中断处理中的C是编译器的依赖。请确认与C编译器文档 了解更多详情。 对于I / O寄存器为扩展I/ O映射,“IN”,“OUT”,“SBIS”,“SBIC”,“CBI”与“CBR”指令必须被替换指令,允许访问扩展I/ O操作。通常 “IN”,结合“SBRS”,“STS”,“SBRC”,“SBR”与“CBR”。 8 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 6,AVR CPU内核 6.1概述 本节讨论AVR内核的结构一般。 CPU芯的主要功能 是保证程序的正确执行。因此,CPU必须能够访问存储器, 执行运算,控制外设以及处理中断。 图6-1。 AVR结构的方框图 为了获得最高的性能以及并行性,AVR采用了Harvard结构 - 用 独立的记忆和公共汽车程序和数据。在程序存储器中的指令是 通过一级流水线运行。当一个指令被执行时,下一条指令 从程序存储器预取。这个概念实现了将要执行的指令 在每一个时钟周期。程序存储器在系统内可编程Flash存储器。 快速访问寄存器文件包括工作寄存器,一个328位通用 时钟周期的访问时间。这允许单周期算术逻辑单元(ALU)运算。在的典 闪光 节目 内存 说明 注册 说明 解码器 节目 计数器 控制线 328 一般 用途 Registrers ALU 状态 与控制 I / O线 EEPROM 数据总线的8位 数据 SRAM 中断 单位 SPI 单位 看门狗 定时器 模拟 比较 I / O模块2 I / O模块1 I / O模块n 9 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 的ALU操作中,两个操作数从寄存器文件输出,执行该操作, 并将结果存回寄存器文件 - 在一个时钟周期。 六的32个寄存器可以用作3个16位的间接寻址寄存器指针数据 空间寻址 - 实现高效的地址运算。其中这些地址指针 也可以用作为地址指针为查找表在闪存程序存储器。这些 附加的功能寄存器是16位的X,Y,Z寄存器,在本节后面介绍。 ALU支持寄存器之间或常数之间的算术和逻辑运算 一个寄存器。单寄存器操作也可以在ALU中执行的。算术运算后, 状态寄存器的内容得到更新以反映该操作的结果的信息。 程序流程通过无条件的跳转指令和调用指令,能够提供 直接寻址整个地址空间。多数指令有一个16位字格式。 每个程序存储器地址包含一个16位或32位的指令。 程序存储器空间分为两个区:引导程序区和 应用程序区。这两个区都有专门的锁定位以实现读和读/写 保护。 SPM指令写入到应用程序区必须 位于引导程序区。 在中断和调用子程序时返回地址的程序计数器(PC)保存在 堆叠。堆栈实际上分配在通用数据SRAM,因此其深度 大小仅受限于SRAM的大小和SRAM的使用情况。所有的用户程序必须 初始化复位例程的SP(前子程序或中断执行)。堆栈 指针(SP)的读/写在I/ O空间。数据SRAM可以很容易地访问 通过AVR架构支持的五种不同的寻址模式。 在AVR架构的内存空间都是线性的存储器映射。 一个灵活的中断模块具有一个额外的全局的I / O空间的控制寄存器 中断状态寄存器使能位。所有的中断都具有一个独立的中断向量在 中断向量表。该中断的优先级与其在中断向量表的位置。 较低的中断向量地址,优先级越高。 在I/ O存储器空间包含64个地址,作为CPU外设的控制寄存器, SPI,以及其他I / O功能。在I/ O内存可以直接访问,或作为数据 空间位置下面这些寄存器文件,地址0x20 - 0x5F的。此外,该 ATMEGA48PA/88PA/168PA/328P已经扩展I / O空间段0x60 - 0xFF的SRAM中,其中 只能使用ST/ STS/ STD和LD/ LDS/ LDD指令都可以使用。 6.2 ALU - 算术逻辑单元 高性能的AVR ALU与所有32个通用的直接连接 工作寄存器。在一个时钟周期内,通用的算术运算 寄存器或寄存器之间立即执行。 ALU操作分为 分为三个主要类别 - 算术,逻辑和位操作。的一些实现 架构还提供了强大的乘数同时支持有符号/无符号乘法运算 和小数格式。请参阅“指令集”部分进行了详细的描述。 6.3状态寄存器 状态寄存器包含了最近执行的算术的结果信息 指令。此信息可以执行用于改变程序流程 条件操作。请注意,状态寄存器的所有ALU运算更新, 10 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 在指令集指定。这将在许多情况下就不需要为使用 专门的比较指令,从而更快,更紧凑的代码。 状态进入中断服务程序时,注册是不会自动保存和恢复 从中断返回时。这必须由软件来处理。 6.3.1 SREG - AVR中断寄存器 AVR中断寄存器 - SREG - 定义为: 位7 - I:全局中断使能 全局中断使能位必须设置为启用中断。各个中断 使能由其他独立的控制寄存器控制。如果全局中断使能 寄存器清零,没有任何中断都将启用独立的个体中断 启用设置。在I位由硬件清零发生中断后,由设置 RETI指令以使能中断。中的I位也可以被设置并通过清除 SEI和CLI指令的应用程序,如在指令集的参考说明。 位6 - T:位拷贝存储 位拷贝指令BLD(位负载)和BST(位存储)使用T字位为源或目标 在操作位。从寄存器文件寄存器的位可以被拷贝到T BST指令,并在T A位可以通过复制到一个位在寄存器中的寄存器文件 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表示进位算术或逻辑运算。请参阅“指令集 说明“的详细信息。 位7 6 54 3 210 的0x3F(0x5F的)I T H S测定为V N z对于C SREG 读/写读/写读/写读/写读/写读/写读/写读/写读/写 初始值0 0 00 0 0 00 11 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 6.4通用寄存器文件 寄存器文件进行了优化,对AVR增强型RISC指令集。为了实现 所需要的性能和灵活性,以下的输入/输出方案的支持 寄存器文件: 一个8位输出操作数和一个8位结果输入 两个8位输出操作数和一个8位结果输入 两个8位输出操作数和一个16位结果输入 一个16位输出操作数和一个16位结果输入 图6-2显示了CPU 32个通用工作寄存器的结构。 图6-2。 AVR CPU通用工作寄存器 大部分的操作寄存器文件的指令都可以直接访问所有的寄存器,并 他们大多是单周期指令。 如图6-2所示,每个寄存器都有一个数据内存地址,它们映射 直接到用户数据空间的头32个地址。虽然没有实际的物理空间 如SRAM,这种内存组织中的访问提供了极大的灵活性 寄存器,当X,Y和Z指针寄存器可以设置到索引文件中的任何寄存器。 70地址。 R0为0x00 R 1001 R20X02 . R130X0D 一般R140x0E的 目的R15为0x0F 工作R16为0x10 寄存器R17为0x11 . R260X1A X寄存器低字节 R270X1B X寄存器高字节 R28为0x1C Y寄存器低字节 R290x1D Y寄存器,寄存器,高字节 R300X1E Z寄存器低字节 R31为0x1F Z寄存器高字节 12 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 6.4.1 X寄存器,Y寄存器和Z寄存器 该寄存器R26.R31有一些附加功能,其一般用途的使用。这些寄存器 有16位地址指针的间接寻址数据空间。这三个间接 地址寄存器X,Y和Z被定义为在图6-3中描述。 图6-3。的X,Y和Z寄存器 在不同的寻址模式中,这些地址寄存器可以实现固定偏移量, 自动加一和自动减一(详见指令集参考)。 6.5堆栈指针 协议栈主要用于存储临时数据,用于存储局部变量和存储 中断和子程序调用后返回地址。请注意,该协议栈实现 从高增长到低内存位置。堆栈指针总是指向 堆栈的顶部。堆栈指针指向数据SRAM堆栈区所在的子程序 和中断堆栈。在压入堆栈指令将减少堆栈指针。 在数据SRAM堆栈必须由程序定义的子程序调用前 执行或中断使能。初始堆栈指针的值等于的最后一个地址 内部SRAM和堆栈指针必须设置为指向的SRAM上面开始,见表7 3第18页。 见表6-1堆栈指针的详细信息。 AVR的堆栈指针被实现为两个8位寄存器中的I / O空间。数 实际使用的位是依赖于实现。注意,在一些实现中,数据空间 AVR架构是如此之小,只有SPL就足够了。在这种情况下,SPH寄存器 将不存在。 15 XH XL0 X寄存器7070 R27(0X1B)R26(0X1A) 15 YH YL0 Y寄存器7070 R29(0x1D),R28(0x1C处) 15 ZH:ZL0 Z寄存器7 0 70 R31(0x1F的),R30(0X1E) 表6-1。堆栈指针指示 指令堆栈指针说明 PUSH由1递减的数据压入堆栈 认购证 ICALL RCALL 2递减 返回地址被压入堆栈子程序调用或 中断 的POP由1递增的数据是从堆栈中弹出 RET RETI 2返回地址递增从堆栈中弹出与回报 子程序或中断返回 13 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 6.5.1 SPH和SPL - 堆栈指针高,堆栈指针寄存器低 6.6指令执行时序 本节描述的访问时序概念指令执行。 AVR的 CPU通过CPU时钟clkCPU驱动直接从所选择的时钟源所生成的 芯片。没有内部时钟进行分频。 图6-4显示并行指令取指和哈佛启用的指令执行 建筑和快速访问寄存器文件的概念。这是一个基本的流水线概念 获得高达1 MHz的MIPS与每个成本函数相应的独特的结果, 每时钟功能,并且每个电源单元的功能。 图6-4。并行取指和指令执行 图6-5显示的是寄存器文件内部访问时序。在一个时钟周期的ALU 执行使用两个寄存器中的操作数的操作,并把结果存回至目的地 注册。 图6-5。单时钟周期ALU操作 位15 1413 12 1110 9 8 0x3E的(0x5e者)SP15,SP14,SP13,SP12,SP11,SP10 SP9 SP8 SPH 0x3D之间(0x5D)SP7 SP5 SP6 SP4 SP3 SP2 SP1 SP0声压级 7 6 54 3 210 读/写读/写读/写读/写读/写读/写读/写读/写读/写 读/写读/写读/写读/写读/写读/写读/写读/写 初始值RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND CLK 第一次取指令 第一指令执行 第二个指令获取 第二个指令执行 3取指令 3指令执行 4取指令 T1 T2 T3 T4 中央处理器 总执行时间 寄存器操作数取 ALU操作执行 结果回写 T1 T2 T3 T4 了clkCPU 14 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 6.7复位和中断处理 AVR有不同的中断源。每个中断和复位分开 矢量各有程序存储空间一个单独的程序载体。所有中断 自己的使能必须写入逻辑1连同全局中断位 使在该状态寄存器位,以使该中断。根据该计划 计数器值,中断可能被自动引导锁定位BLB02或BLB12被禁用 被编程。这个特性提高了软件的安全性。请参见“存储器编程”有关详细信息,294页。 在程序存储区的最低地址缺省为复位和 中断向量。完整的向量列表第57页的名单也列于“中断”决定了不同中断的优先级。下的地址中较高的 优先级。 RESET具有最高的优先级,第二个为INT0 - 外部中断请求 0,中断向量可以通过设置IVSEL转移到Boot区的起始 在MCU控制寄存器(MCUCR)位。请参阅“中断”在49页以了解更多信息。 复位向量也可以通过编程转移到Boot区的起始 熔丝位BOOTRST,请参阅“支持引导装入程序 - 同时读 - 写自编程, ATMEGA88PA,277页ATMEGA168PA和ATMEGA328P“。 当中断发生时全局中断使能位I被清零,所有中断被禁止。 用户软件可以编写逻辑一到I位使能中断嵌套。全部启用 然后中断都可以中断当前的中断服务程序。在I位被自动设定时, 执行 - 从中断返回指令 - RETI指令。 基本上有两种类型的中断。第一类型是由用于设置事件触发 中断标志。对于这些中断,程序计数器跳转到实际的中断向量 为了执行中断处理程序,同时硬件将清除相应的 中断标志。中断标志也可以通过写1到标志位的位置被清除(S) 被清除。如果在相应的中断使能位是发生中断条件 清除中断标志位被置一直保持到中断执行,或者该标志 通过软件清零。同样,如果出现一个或多个中断条件,而全局中断 使能位被清零,相应的中断标志位被置一直保持到 全局中断使能位被置位,然后会根据优先顺序来执行。 第二种类型的中断将触发只要中断条件是否存在。这些 中断不需要中断标志。如果中断状态前消失 中断使能,中断不会被触发。 当AVR退出中断,它总是返回到主程序和执行一个 之前的任何挂起的中断更多的指令提供服务。 请注意,状态进入中断服务程序时,寄存器不会自动存储,也不 从中断程序返回时恢复。这必须由软件来处理。 当使用CLI指令来禁止中断时,中断将立即停用。 没有中断将CLI指令后执行,即使它同时出现的 CLI指令。下面的示例演示如何可以用来避免在中断 定时EEPROM写序。 15 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 使用SEI指令使能中断时,紧跟其后的指令被执行 任何中断之前,如本例中所示。 6.7.1中断响应时间 所有已启用AVR中断响应中断为4个时钟周期最小。 经过四个时钟周期,程序跳转到实际的中断处理程序 被执行。在这4个时钟周期,程序计数器被压入堆栈。 载体通常是跳转到中断服务程序,此跳需要3个时钟周期。如果 执行的多周期指令执行期间发生中断时,该指令完成 中断服务之前。若中断发生时MCU处于休眠模式,中断 执行响应时间增加4个时钟周期。该增长来自除 启动从所选择的睡眠模式时间。 从中断处理程序返回需要4个时钟周期。在这四个时钟 周期,程序计数器(2字节)从堆栈中弹出返回,堆栈指针 加二,和SREG的I位被置位。 汇编代码例程 C代码示例 汇编代码例程 C代码示例 16 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 7,AVR回忆 7.1概述 本节介绍了ATMEGA48PA/88PA/168PA/328P不同的回忆。 AVR的 结构具有两个主要的存储器空间,数据存储器和程序存储器空间。 此外,ATMEGA48PA/88PA/168PA/328P还有EEPROM存储器以保存数据。 这三个存储器空间都为线性的。 7.2在系统内可编程闪存程序存储器 该ATMEGA48PA/88PA/168PA/328P具有4/8/16 /32K字节的片上系统内编程 闪存用于程序存储。因为所有的AVR指令为16位或32位 宽,Flash组织成2/4/8 /16K16。对于软件的安全性,闪存程序存储器 空间被分成两部分,在Boot Loader区和应用程序区 ATMEGA88PA和ATMEGA168PA。请参见章节“SPMCSR SELFPRGEN描述 - 商店 有关详细信息,292页的程序存储器控制和状态寄存器“。 Flash存储器至少10,000写/擦除周期耐力。该 ATMEGA48PA/88PA/168PA/328P程序计数器(PC)为11/12/13/14位,因此可以寻址 在2/4/8 /16K的程序存储器空间。引导程序区的运作和 有关Boot锁定位的软件保护进行了详细的“自编程描述 在Flash中,ATMEGA48PA“269页和”支持引导装入程序 - 同时读 - 写自编程, ATMEGA88PA,“277页上的”ATMEGA168PA和ATMEGA328P记忆 编程“294页包含闪存编程的详细说明在支持SPI或 并行编程模式。 常数可以保存于整个程序存储器地址空间(参考LPM内分配 - 加载程序存储器指令的说明)。 时序图的取指令和执行“指令执行时序”呈现 在第13页。 17 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 图7-1。程序存储器映射ATMEGA48PA 图7-2。程序存储器映射ATMEGA88PA,ATMEGA168PA和ATMEGA328P 为0x0000 0x7FF的 程序存储器 应用Flash存储区 为0x0000 0x0FFF/0x1FFF的/0x3FFF 程序存储器 应用Flash存储区 Boot区 18 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 7.3 SRAM数据存储器 图7-3显示了ATMEGA48PA/88PA/168PA/328P SRAM空间的组织。 该ATMEGA48PA/88PA/168PA/328P是一个复杂的微控制器,更多的外围设备 比所用的操作码留给IN和OUT的64个单元中被支持 说明。对于扩展的I/ O空间0x60 - 0xFF的SRAM中,只能使用ST/ STS/ STD和 LD/ LDS/ LDD指令都可以使用。 下768/1280/1280/2303数据存储器包括了寄存器文件,I / O 内存,扩展的I/ O存储器及内部数据SRAM。第32个地址为 寄存器文件,然后是64个标准I / O内存,160个扩展I / O 存储器,以及下一个512/1024/1024/2048字节的内部数据SRAM。 对于数据存储器的五个不同的寻址方式:直接,间接与位移, 间接寻址,带预减和间接带后增量。在注册 文件中的寄存器R26到R31为间接寻址的指针寄存器。 直接寻址范围可达整个数据空间。 间接与位移方式达到从给定的基址63个地址 由y或z注册。 当使用带预减和后增量的间接寻址模式, 地址寄存器X,Y,和Z的增加或减少。 32个通用工作寄存器,64个I/ O寄存器,160个扩展I/ O寄存器及 在512/1024/1024/2048字节的ATMEGA48PA/88PA/168PA/328P的内部数据SRAM 可通过所有上述的寻址模式进行访问。寄存器文件中的“常规说明 第11页上的通用寄存器文件“。 图7-3。数据存储器映射 32个寄存器 64个I/ O寄存器 内部SRAM (512/1024/1024/204 X) 为0x0000 - 0x001F 为0x0020 - 0x005F 0x04FF/0x04FF/0x0FF/0X0 FF 0x0060上 - 为0x00FF 数据存储器 160外部的I / O寄存器。 0100 19 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 7.3.1数据存储器访问时间 本节描述的访问时序内部存储器的访问。该 在图7-4中所述两个clkCPU时钟内部数据SRAM访问执行。 图7-4。片上数据SRAM存取周期 7.4 EEPROM数据存储器 该ATMEGA48PA/88PA/168PA/328P有256/512/512 /1K字节的EEPROM数据存储器。 它是作为一个独立的数据空间,其中可以按字节读写。该 EEPROM至少有100,000次写/擦除周期耐力。之间的访问 EEPROM和CPU在下面被描述,指定EEPROM地址寄存器, EEPROM数据寄存器和EEPROM控制寄存器。 “存储器编程”页294包含了详细的描述上EEPROM编程 在SPI或并行编程模式。 7.4.1 EEPROM读/写访问 EEPROM的访问寄存器位于I/ O空间。 EEPROM的写访问时间如表7-2所示。自定时功能,但是, 可以让用户软件监测何时开始下一个字节可以被写入。如果用户代码包含指令 写入EEPROM中,有些必须采取预防措施。在重滤波电源 耗材,VCC很可能会上升或下降缓慢上电/下。这使得该设备的一些 的时间周期,以在电压低于规定的最小为所用的时钟频率运行。 请参阅第20页上的“防止EEPROM的腐败”的详细信息,如何避免这些问题 的情况。 为了防止无意识的EEPROM写操作,一个特定的写程序必须遵守。 指的是EEPROM控制寄存器有关此详细说明。 当执行EEPROM读操作时,CPU停止工作4个周期前的下一条指令 执行。当EEPROM的写入,CPU会先下一停止两个时钟周期 指令被执行。 CLK WR RD 数据 数据 地址地址有效 T1 T2 T3 计算地址 读写 中央处理器 存储器访问指令下一条指令 20 8161D-AVR-10月9日 ATMEGA48PA/88PA/168PA/328P 7.4.2预防腐败的EEPROM 在低VCC期间,EEPROM中的数据可以被损坏,因为电源电压 过低,CPU和正确操作的EEPROM中。这些问题都是一样的 用板级系统的EEPROM,和相同的设计解决方案应该应用。 一个EEPROM数据损坏有两种情况引起的,当电压过低。首先, 经常写序列EEPROM中,需要一个最低电压正常运行。其次, CPU本身可以执行指令不正确,如果电源电压过低。 EEPROM数据损坏的问题可以通过以下方法解决: 请在电源电压不足的时期AVR RESET信号(低电平)。这可以 通过使内部欠压检测器(BOD)来完成。如果内部的检测电平 董事会没有必要的检测水平相匹配,外部复位保护电路可 可以使用。如果发生复位而写操作正在进行中,写操作将完成 提供的电源电压是足够的。 7.5 I / O存储器 在ATMEGA48PA/88PA/168PA/328P的I / O空间定义显示在“注册摘要”在423页。 所有ATMEGA48PA/88PA/168PA/328P I / O和外设都被放置在I / O空间。所有I / O 位置都可以通过LD/ LDS/ LDD和ST/ STS/ STD指令来访问,传输数据 32个通用工作寄存器和I/ O之间。 I / O寄存器内 地址范围

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论