logo资料库

ATmega128中文手册官方中文版.pdf

第1页 / 共360页
第2页 / 共360页
第3页 / 共360页
第4页 / 共360页
第5页 / 共360页
第6页 / 共360页
第7页 / 共360页
第8页 / 共360页
资料共360页,剩余部分请下载后查看
产品特点
引脚配置
综述
方框图
ATmega103与 ATmega128的兼容性
ATmega103兼容模式
引脚说明
VCC
GND
端口A(PA7..PA0)
端口B(PB7..PB0)
端口C(PC7..PC0)
端口D(PD7..PD0)
端口E(PE7..PE0)
端口F(PF7..PF0)
端口G(PG4..PG0)
RESET
XTAL1
XTAL2
AVCC
AREF
PEN
代码例子
AVR CPU内核
介绍
结构综述
ALU-算逻单元
状态寄存器
通用寄存器文件
X寄存器,Y寄存器和Z寄存器
堆栈指针
RAM页面的Z选择寄存器- RAMPZ
指令执行时序
复位和中断处理
中断响应时间
AVR ATmega128存储 器
系统内可编程的Flash程序 存储器
SRAM数据存储器
数据存储器访问时间
EEPROM数据存储器
EEPROM读/写访问
EEPROM 地址寄存器-EEARH 和EEARL
EEPROM数据寄存器-EEDR
EEPROM控制寄存器-EECR
掉电休眠模式下EEPROM的写 入
防止EEPROM数据丢失
I/O存储器
外部存储器接口
综述
ATmega103兼容性
使用外部存储器接口
地址锁存要求
上拉和总线保持
时序
XMEM寄存器说明
MCU控制寄存器-MCUCR
外部存储器控制寄存器A- XMCRA
外部存储器控制寄存器B- XMCRB
使用外部的存储器(小于64KB)
完全使用外部的64KB存储器
系统时钟及其选项
时钟系统及其分布
CPU时钟-clkCPU
I/O时钟-clkI/O
Flash时钟-clkFLASH
异步定时器时钟-clkASY
ADC时钟-clkADC
时钟源
默认时钟源
晶体振荡器
低频晶体振荡器
外部RC振荡器
标定的片内RC振荡器
振荡器标定寄存器-OSCCAL
外部时钟
定时器/计时器振荡器
XTAL分频控制寄存器-XDIV
电源管理及睡眠模式
MCU控制寄存器-MCUCR
空闲模式
ADC噪声抑制模式
掉电模式
省电模式
Standby模式
扩展Standby模式
最小化功耗
模数转换器
模拟比较器
掉电检测器
片内基准电压
看门狗定时器
端口引脚
JTAG接口与片内调试系统
系统控制和复位
复位AVR
复位源
上电复位
外部复位
掉电检测复位
看门狗复位
MCU控制和状态寄存器- MCUCSR
片内基准电压
基准电压使能信号和启动时间
看门狗定时器
看门狗定时器控制寄存器- WDTCR
改变看门狗定时器配置的时间序列
安全级别0
安全级别1
安全级别2
中断
ATmega128的中断向量
在应用区和Boot区之间移动中 断
MCU控制寄存器-MCUCR
I/O端口
介绍
作为通用数字I/O的端口
配置引脚
读取引脚上的数据
数字输入使能和睡眠模式
未连接引脚的处理
端口的第二功能
特殊功能IO寄存器-SFIOR
端口A的第二功能
端口B的第二功能
端口C的第二功能
端口D的第二功能
端口E的第二功能
端口F的第二功能
端口G的第二功能
I/O端口寄存器的说明
端口A数据寄存器-PORTA
端口A数据方向寄存器-DDRA
端口A输入引脚地址-PINA
端口B数据寄存器-PORTB
端口B数据方向寄存器-DDRB
端口B输入引脚地址-PINB
端口C数据寄存器-PORTC
端口C数据方向寄存器-DDRC
端口C输入引脚地址-PINC
端口D数据寄存器-PORTD
端口D数据方向寄存器-DDRD
端口D输入引脚地址-PIND
端口E数据寄存器-PORTE
端口E数据方向寄存器-DDRE
端口E输入引脚地址-PINE
端口F数据寄存器-PORTF
端口F数据方向寄存器-DDRF
端口F输入引脚地址-PINF
端口G数据寄存器-PORTG
端口G数据方向寄存器- DDRG
端口G输入引脚地址-PING
外部中断
外部中断控制寄存器A- EICRA
外部中断控制寄存器B- EICRB
外部中断屏蔽寄存器-EIMSK
外部中断标志寄存器-EIFR
8位定时器/计时器0 - - PWM、异步操作
综述
寄存器
定义
T/C的时钟源
计数器单元
输出比较单元
强制输出比较
写TCNT0操作阻止比较匹配
使用输出比较单元
比较匹配输出单元
比较输出模式和波形产生
工作模式
普通模式
CTC(比较匹配时清除定时器) 模式
快速PWM模式
相位修正PWM模式
T/C时序图
8位T/C寄存器说明
T/C控制寄存器-TCCR0
T/C寄存器-TCNT0
输出比较寄存器-OCR0
定时器/计数器的异步操作
异步状态寄存器-ASSR
T/C0的异步操作
定时器/计数器中断屏蔽寄存器 -TIMSK
定时器/计数器中断标志寄存器 -TIFR
定时器/计数器预分频器
特殊功能IO寄存器-SFIOR
16位定时器/计数器( 定时器/计数器1和定 时器/计数器3)
ATmega103兼容模式的限制
综述
寄存器
定义
兼容性
访问16位寄存器
重复利用暂存器的高字节
定时器/计数器的时钟源
计数器单元
输入捕捉单元
输入捕捉触发源
噪声抑制器
使用输入捕捉单元
输出比较单元
强制输出比较
写TCNTn将阻止比较匹配
使用输出比较匹配单元
比较匹配输出单元
比较匹配模式和波形产生
工作模式
普通模式
CTC(比较匹配时清除定时器) 模式
快速PWM模式
相位修正PWM模式
相位和频率修正PWM模式
定时器/计数器时序图
16位定时器/计数器寄存 器说明
定时器/计数器1控制寄存器A -TCCR1A
定时器/计数器3 控制寄存器A -TCCR3A
定时器/计数器1控制寄存器B -TCCR1B
定时器/计数器3控制寄存器B -TCCR3B
定时器/计数器1控制寄存器C -TCCR1C
定时器/计数器3控制寄存器C -TCCR3C
定时器/计数器1-TCNT1H和 TCNT1L
定时器/计数器3-TCNT3H和 TCNT3L
输出比较寄存器1 A-OCR1AH 和OCR1AL
输出比较寄存器1 B-OCR1BH 和OCR1BL
输出比较寄存器1 C- OCR1CH和OCR1CL
输出比较寄存器3 A-OCR3AH 和OCR3AL
输出比较寄存器3 B-OCR3BH 和OCR3BL
输出比较寄存器3 C- OCR3CH和OCR3CL
输入捕捉寄存器1-ICR1H和 ICR1L
输入捕捉寄存器3-ICR3H和 ICR3L
定时器/计数器中断屏蔽寄存器 -TIMSK
扩展的定时器/计数器中断屏蔽 寄存器-ETIMSK
定时器/计数器中断标志寄存器 -TIFR
扩展的定时器/计数器中断标志 寄存器-ETIFR
定时器/计数器3、定 时器/计数器2和定时 器/计数器1的预分频 器
内部时钟源
预分频器复位
外部时钟源
特殊功能IO寄存器-SFIOR
具有PWM功能的8位 定时器/计数器2
综述
寄存器
定义
定时器/计数器时钟源
计数器单元
输出比较单元
强制输出比较
写TCNT2将阻止比较匹配
使用输出比较单元
比较匹配输出单元
比较输出模式和波形产生
工作模式
普通模式
CTC(比较匹配时清除定时器) 模式
快速PWM模式
相位修正PWM模式
定时器/计数器时序图
8位定时器/计数器寄 存器说明
定时器/计数器控制寄存器- TCCR2
定时器/计数器寄存器-TCNT2
输出比较寄存器-OCR2
定时器/计数器中断屏蔽寄存器 -TIMSK
定时器/计数器中断标志寄存器 -TIFR
输出比较调制器 (OCM1C2)
综述
说明
时序例子
串行通讯接口-SPI
SS引脚的功能
从机模式
主机模式
SPI控制寄存器-SPCR
SPI状态寄存器-SPSR
SPI数据寄存器-SPDR
数据模式
USART
双USART
综述
AVR USART和AVR UART- 兼容性
时钟产生
片内时钟产生-波特率发生器
倍速操作(U2X)
外部时钟
同步时钟操作
帧格式
计算奇偶校验位
USART初始化
发送数据-USART发送器
以5 到8个数据位的方式发送帧
以9个数据位的方式发送帧
发送器标志和中断
产生奇偶校验位
禁止发送器
接收数据-USART接收器
以5到8个数据位的方式接收帧
以9个数据位的方式接收帧
接收完成标志和中断
接收器错误标志
奇偶校验器
接收器禁用
刷新接收缓冲器
接收异步数据
恢复异步时钟
恢复异步数据
异步工作范围
多处理器通讯模式
使用MPCM
USART寄存器说明
USARTn I/O数据寄存器- UDRn
USART控制和状态寄存器A- UCSRnA
USARTn控制和状态寄存器B- UCSRnB
USART控制和状态寄存器C- UCSRnC
USART波特率寄存器- UBRRnL和UBRRnH
设置波特率的例子
两线串行接口TWI
特点
两线串行接口总线定义
TWI词汇
电气连接
数据传输和帧格式
传输数据(位)
START/STOP状态
地址数据包格式
数据包格式
将地址包和数据包组合为一个完 整的传输过程
多主机总线系统,仲裁和同 步
TWI模块综述
Scl和SDA引脚
比特率发生器单元
总线接口单元
地址匹配单元
控制单元
TWI寄存器说明
TWI比特率寄存器-TWBR
TWI控制寄存器-TWCR
TWI状态寄存器-TWSR
TWI数据寄存器-TWDR
TWI(从机)地址寄存器- TWAR
使用TWI
数据传输模式
主机发送模式
主机接收模式
从机接收模式
从机发送模式
其他状态
将几个TWI模式组合到一起
多主机系统和仲裁
模拟比较器
特殊功能IO寄存器-SFIOR
模拟比较器控制和状态寄存器- ACSR
模拟比较器多工输入
模数转换器
特点
操作
启动一次转换
预分频和转换时序
差分增益通道
改变通道或基准源
ADC输入通道
ADC基准电压源
ADC噪声抑制器
模拟输入电路
模拟噪声抑制技术
偏置补偿方案
ADC精度定义
ADC转换结果
ADC多工选择寄存器-ADMUX
ADC控制和状态寄存器A- ADCSRA
ADC数据寄存器-ADCL和 ADCH
ADLAR = 0:
ADLAR = 1:
JTAG接口和片上调试 系统OCD(On-chip Debug)
特点
综述
测试访问端口-TAP
TAP控制器
使用边界扫描链
利用片上调试系统OCD
OCD指定的JTAG指令
PRIVATE0; $8
PRIVATE1; $9
PRIVATE2; $A
PRIVATE3; $B
I/O存储器中与OCD相关 的寄存器
OCD寄存器-OCDR
利用JTAG的编程能力
参考书目
IEEE 1149.1 (JTAG)边界 扫描
特点
系统综述
数据寄存器
旁路寄存器
器件识别寄存器
版本
器件型号
生产商ID
复位寄存器
边界扫描链
边界扫描指定的JTAG指 令
EXTEST; $0
IDCODE; $1
SAMPLE_PRELOAD; $2
AVR_RESET; $C
BYPASS; $F
I/O存储器里与边界扫描相 关的寄存器
MCU控制和状态寄存器- MCUCSR
边界扫描链
扫描数字端口引脚
边界扫描和TWI
扫描RESET引脚
扫描时钟引脚
扫描模拟比较器
扫描ADC
ATmega128边界扫描次序
边界扫描描述语言文件
支持引导装入程序 - 在 写的同时可以读 (RWW, Read-While- Write)的自我编程能力
引导程序的特点
应用程序Flash区以及引导 程序Flash区
应用程序区
引导程序区(Boot Loader Section)-BLS
RWW Flash区及非RWW Flash区
RWW区
非RWW区-NRWW
引导程序区锁定位
进入引导程序
保存程序存储器控制寄存器- SPMCSR
在自编程时访问Flash
Flash的自编程
通过SPM执行页擦除
装载临时缓冲器(页加载)
执行页写操作
使用SPM中断
在更新BLS时需要考虑的问题
在自编程时防止读取RWW区
通过SPM设置引导程序锁定位
写EEPROM将阻止写SPMCSR
以软件方式读取熔丝位和锁定位
防止Flash的内容损毁
使用SPM时的Flash编程时间
一个简单的引导程序汇编代码
ATmega128引导程序参数
存储器编程
程序及数据存储器锁定位
熔丝位
锁存熔丝位的数据
标识字节
标定字节
并行编程的参数,引脚映射 及命令
信号名称
并行编程
进入并行编程模式
进行高效编程需要考虑的问题
芯片擦除
对Flash进行编程
对EEPROM进行编程
读取Flash
读取EEPROM
对熔丝位的低位进行编程
对熔丝位的高位进行编程
对扩展熔丝位进行编程
对锁定位进行编程
读取熔丝位和锁定位
读取标识字节
读取标定字节
并行编程特性
串行下载
SPI串行编程引脚映射
SPI串行编程算法
Flash的数据轮询
EEPROM的数据轮询
SPI串行编程特性
通过JTAG接口进行编程
与编程相关的JTAG指令
AVR_RESET ($C)
PROG_ENABLE ($4)
PROG_COMMANDS ($5)
PROG_PAGELOAD ($6)
PROG_PAGEREAD ($7)
数据寄存器
复位寄存器
编程使能寄存器
编程命令寄存器
虚拟Flash页面加载寄存器
虚拟Flash页面读取寄存器
编程算法
进入编程模式
退出编程模式
执行芯片擦除操作
对Flash进行编程
读取Flash
对EEPROM进行编程
读取EEPROM
对熔丝位进行编程
对锁定位进行编程
读取熔丝位和锁定位
读取标识字节
读取标定字节
电气特性
绝对极限值*
直流特性
外部时钟波形
外部时钟
两线串行接口特性
SPI时序特性
交流特性
外部数据存储器时序
ATmega128典型特性
工作电流
空闲电流
掉电模式电流
省电模式电流
Standby模式电流
引脚上拉电阻
引脚驱动能力
引脚阈值与迟滞
BOD阈值与模拟比较补偿
片内振荡器速度
外设单元电流消耗
复位与复位脉宽电流消耗
寄存器概述
指令集概述
定货信息
封装信息
64A
64M1
勘误表
ATmega128 Rev. I
ATmega128 Rev. H
ATmega128 Rev. G
ATmega128 Rev. F
ATmega128数据手册 修改日志
从版本Rev. 2467K-03/04 到版本Rev.2467L-05/04 的修改
从版本Rev. 2467J-12/03 到版本Rev.2467K-03/04 的修改
从版本Rev. 2467I-09/03 到版本Rev.2467J-12/03 的修改
从版本Rev. 2467H-02/03 到版本Rev. 2467I-09/03 的修改
从版本Rev. 2467G-09/02 到版本Rev. 2467H-02/03 的修改
从版本Rev. 2467F-09/02 到版本Rev. 2467G-09/02 的修改
从版本Rev. 2467E-04/02 到版本Rev. 2467F-09/02 的修改
从版本Rev. 2467D-03/02 到版本Rev. 2467E-04/02 的修改
从版本Rev. 2467C-02/02 到版本Rev. 2467D-03/02 的修改
从版本Rev. 2467B-09/01 到版本Rev. 2467C-02/02 的修改
产品特点 • 高性能、低功耗的 AVR® 8 位微处理器 • 先进的 RISC 结构 – 133 条指令 – 大多数可以在一个时钟周期内完成 – 32 x 8 通用工作寄存器 + 外设控制寄存器 – 全静态工作 – 工作于 16 MHz 时性能高达 16 MIPS – 只需两个时钟周期的硬件乘法器 • 非易失性的程序和数据存储器 – 128K 字节的系统内可编程 Flash 寿命 : 10,000 次写 / 擦除周期 – 具有独立锁定位、可选择的启动代码区 通过片内的启动程序实现系统内编程 真正的读 - 修改 - 写操作 – 4K 字节的 EEPROM 寿命 : 100,000 次写 / 擦除周期 – 4K 字节的内部 SRAM – 多达 64K 字节的优化的外部存储器空间 – 可以对锁定位进行编程以实现软件加密 – 可以通过 SPI 实现系统内编程 扩展的 Standby 模式 – 可以通过软件进行选择的时钟频率 – 通过熔丝位可以选择 ATmega103 兼容模式 – 全局上拉禁止功能 – 53 个可编程 I/O 口线 – 64 引脚 TQFP 与 64 引脚 MLF 封装 • I/O 和封装 • 工作电压 • 速度等级 – 2.7 - 5.5V ATmega128L – 4.5 - 5.5V ATmega128 – 0 - 8 MHz ATmega128L – 0 - 16 MHz ATmega128 • JTAG 接口 ( 与 IEEE 1149.1 标准兼容 ) – 遵循 JTAG 标准的边界扫描功能 – 支持扩展的片内调试 – 通过 JTAG 接口实现对 Flash, EEPROM, 熔丝位和锁定位的编程 • 外设特点 – 两个具有独立的预分频器和比较器功能的 8 位定时器 / 计数器 – 两个具有预分频器、比较功能和捕捉功能的 16 位定时器 / 计数器 – 具有独立预分频器的实时时钟计数器 – 两路 8 位 PWM – 6 路分辨率可编程 (2 到 16 位)的 PWM – 输出比较调制器 – 8 路 10 位 ADC 8 个单端通道 7 个差分通道 2 个具有可编程增益 (1x, 10x, 或 200x)的差分通道 – 面向字节的两线接口 – 两个可编程的串行 USART – 可工作于主机 / 从机模式的 SPI 串行接口 – 具有独立片内振荡器的可编程看门狗定时器 – 片内模拟比较器 • 特殊的处理器特点 – 上电复位以及可编程的掉电检测 – 片内经过标定的 RC 振荡器 – 片内 / 片外中断源 – 6 种睡眠模式 : 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及 8 位 微处理器,具有 128K 字节的系统 内可编程 Flash ATmega128 ATmega128L Rev. 2467L–AVR–05/04
引脚配置 Figure 1. ATmega128 的引脚 ) 0 C D A ( 0 F P ) 1 C D A ( 1 F P ) 2 C D A ( 2 F P ) 3 C D A ( 3 F P C C V A D N G F E R A ) / K C T 4 C D A ( 4 F P ) / S M T 5 C D A ( 5 F P ) / O D T 6 C D A ( 6 F P ) I / D T 7 C D A ( 7 F P ) 0 D A ( 0 A P ) 1 D A ( 1 A P ) 2 D A ( 2 A P D N G C C V PEN RXD0/(PDI) PE0 (TXD0/PDO) PE1 (XCK0/AIN0) PE2 (OC3A/AIN1) PE3 (OC3B/INT4) PE4 (OC3C/INT5) PE5 (T3/INT6) PE6 (ICP3/INT7) PE7 (SS) PB0 (SCK) PB1 (MOSI) PB2 (MISO) PB3 (OC0) PB4 (OC1A) PB5 (OC1B) PB6 4 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7 1 3 6 2 6 1 6 0 6 9 5 8 5 7 5 6 5 5 5 4 5 3 5 2 5 1 5 0 5 8 1 9 1 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 0 3 1 3 9 4 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 2 3 PA3 (AD3) PA4 (AD4) PA5 (AD5) PA6 (AD6) PA7 (AD7) PG2(ALE) PC7 (A15) PC6 (A14) PC5 (A13) PC4 (A12) PC3 (A11) PC2 (A10) PC1 (A9) PC0 (A8) PG1(RD) PG0(WR) / 3 G P 2 C S O T 4 G P 1 / 1 C S O T 7 B P ) C 1 C O 2 C O / ( T E S E R C C V D N G 2 L A T X 1 L A T X 6 D P ) 1 T ( 7 D P ) 2 T ( 4 D P ) 1 P C I ( 5 D P ) 1 K C X ( 0 D P ) 0 T N I / L C S ( 1 D P ) 1 T N I / A D S ( 2 D P ) 2 T N I / 1 D X R ( 3 D P ) 3 T N I / 1 D X T ( 综述 ATmega128为基于AVR RISC结构的8位低功耗CMOS微处理器。由于其先进的指令集以 及单周期指令执行时间, ATmega128 的数据吞吐率高达 1 MIPS/MHz,从而可以缓减系 统在功耗和处理速度之间的矛盾。 2 ATmega128 2467L–AVR–05/04
方框图 Figure 2. 方框图 VCC GND AVCC AGND AREF JTAG TAP ON-CHIP DEBUG BOUNDARY- SCAN PEN PROGRAMMING LOGIC ATmega128 PF0 - PF7 PA0 - PA7 PC0 - PC7 1 L A T X 2 L A T X T E S E R PORTF DRIVERS PORTA DRIVERS PORTC DRIVERS DATA REGISTER PORTF DATA DIR. REG. PORTF DATA REGISTER PORTA DATA DIR. REG. PORTA DATA REGISTER PORTC DATA DIR. REG. PORTC 8-BIT DATA BUS ADC PROGRAM COUNTER PROGRAM FLASH INSTRUCTION REGISTER INSTRUCTION DECODER CONTROL LINES STACK POINTER SRAM GENERAL PURPOSE REGISTERS X Y Z ALU STATUS REGISTER CALIB. OSC OSCILLATOR OSCILLATOR TIMING AND CONTROL INTERNAL OSCILLATOR WATCHDOG TIMER MCU CONTROL REGISTER TIMER/ COUNTERS INTERRUPT UNIT EEPROM USART0 SPI USART1 TWO-WIRE SERIAL INTERFACE G O L A N A R O T A R A P M O C DATA REGISTER PORTE + - DATA DIR. REG. PORTE DATA REGISTER PORTB DATA DIR. REG. PORTB DATA REGISTER PORTD DATA DIR. REG. PORTD DATA REG. PORTG DATA DIR. REG. PORTG PORTE DRIVERS PORTB DRIVERS PORTD DRIVERS PORTG DRIVERS PE0 - PE7 PB0 - PB7 PD0 - PD7 PG0 - PG4 2467L–AVR–05/04 3
AVR 内核具有丰富的指令集和 32 个通用工作寄存器。所有的寄存器都直接与算逻单元 (ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结 构大大提高了代码效率,并且具有比普通的复杂指令集微处理器高 10 倍的数据吞吐率。 ATmega128 具有如下特点:128K 字节的系统内可编程 Flash( 具有在写的过程中还可以读 的能力,即 RWW)、 4K 字节的 EEPROM、 4K 字节的 SRAM、 53 个通用 I/O 口线、 32 个通用工作寄存器、实时时钟 RTC、4 个灵活的具有比较模式和 PWM 功能的定时器 / 计 数器 (T/C)、两个 USART、面向字节的两线接口 TWI、 8 通道 10 位 ADC( 具有可选的可 编程增益 )、具有片内振荡器的可编程看门狗定时器、 SPI 串行端口、与 IEEE 1149.1 规 范兼容的 JTAG 测试接口 ( 此接口同时还可以用于片上调试 ),以及六种可以通过软件选 择的省电模式。空闲模式时 CPU 停止工作,而 SRAM、 T/C、 SPI 端口以及中断系统继 续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工 作,寄存器的内容则一直保持;省电模式时异步定时器继续运行,以允许用户维持时间基 准,器件的其他部分则处于睡眠状态; ADC 噪声抑制模式时 CPU 和所有的 I/O 模块停止 运行,而异步定时器和 ADC 继续工作,以减少 ADC 转换时的开关噪声; Standby 模式 时振荡器工作而其他部分睡眠,使得器件只消耗极少的电流,同时具有快速启动能力;扩 展 Standby 模式则允许振荡器和异步定时器继续工作。 器件是以 Atmel 的高密度非易失性内存技术生产的。片内 ISP Flash 可以通过 SPI 接口、 通用编程器,或引导程序多次编程。引导程序可以使用任何接口来下载应用程序到应用 Flash存储器。在更新应用Flash存储器时引导Flash区的程序继续运行,实现RWW操作。 通过将 8 位 RISC CPU 与系统内可编程的 Flash 集成在一个芯片内, ATmega128 为许 多嵌入式控制应用提供了灵活而低成本的方案。 ATmega128 AVR 有整套的开发工具,包括 C 编译器,宏汇编,程序调试器 / 仿真器和评估 板。 ATmega128 是一个很复杂的微处理器,其 I/O 数目为 AVR 指令集所保留的 64 个 I/O 的超 集。为了保持对 ATmega103 的兼容性, ATmega103 的 I/O 位置在 ATmega128 得到了 保留。多数添加的 I/O 位于扩展的 I/O 空间 $60 到 $FF ( 即位于 ATmega103 的内部 RAM 空间 )。这些地址可以通过指令 LD/LDS/LDD 和 ST/STS/STD 来访问,而不是 IN/OUT 指 令。对于 ATmega103 用户而言,内部 RAM 可能还是个问题。此外,由于中断向量的增 加,若程序使用了绝对地址可能也是个问题。为了解决这些问题,ATmega128 设置了一 个熔丝位 M103C。此熔丝位编程后就可以使 ATmega128 工作于 ATmega103 兼容模式。 此时扩展 I/O 空间将无法使用,而内部 RAM 正好与 ATmega103 的一致。同时扩展的中 断向量也被取消了。 ATmega128 百分之百与 ATmega103 引脚兼容,可以在 PCB上取代 ATmega103。应用手 册 “Replacing ATmega103 by ATmega128” 详细告诉用户在用 ATmega128 取代 ATmega103 时需要注意的地方。 通过编程熔丝位 M103C,从 RAM、 I/O 引脚和中断向量的角度 ATmega128 将与 ATmega103 相兼容。但是, ATmega128 的一些新特点也就无法使用了。如下所示: • 只剩下一个 USART,而且只支持异步模式。波特率寄存器只有低 8 位可用。 • 只有一个16位的定时器/计数器,两个比较寄存器,而不是两个16位定时器/计数器, 三个比较寄存器。 • 不支持两线接口。 • 端口 C 只能输出。 • 端口 G 只能用做第二功能,而不能作为通用 I/O 端口。 • 端口 F 只能作为输入,而不能作为 ADC 的模拟输入引脚。 • 不支持引导程序功能。 • 不能够调节片内 RC 振荡器的频率。 ATmega103 与 ATmega128 的兼容性 ATmega103 兼容模式 4 ATmega128 2467L–AVR–05/04
ATmega128 • 外部存储器接口无法释放任何一个地址引脚作为通用 I/O,也不能够为不同的外部存 储器地址区配置不同的等待周期。 下面的内容则使 ATmega128 更兼容 ATmega103: • 在 MCUCSR 里只有 EXTRF 和 PORF。 • 改变看门狗溢出时间没有时序要求。 • 外部中断引脚 3 - 0 只能作为电平中断。 • 在写操作中, ATmega103 没有使用的 I/O 应该写 0。 USART 没有 FIFO 缓冲器。 数字电路的电源。 地。 端口 A 为 8 位双向 I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动 特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电 路拉低时将输出电流。复位发生时端口 A 为三态。 端口 A 也可以用做其他不同的特殊功能,请参见 P 68。 端口 B 为 8 位双向 I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动 特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电 路拉低时将输出电流。复位发生时端口 B 为三态。 端口 B 也可以用做其他不同的特殊功能,请参见 P 69。 端口 C 为 8 位双向 I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动 特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电 路拉低时将输出电流。复位发生时端口 C 为三态。 端口 C 也可以用做其他不同的特殊功能,请参见 P 72。在 ATmega103 兼容模式下,端 口 C 只能作为输出,而且在复位发生时不是三态。 端口 D 为 8 位双向 I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动 特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电 路拉低时将输出电流。复位发生时端口 D 为三态。 端口 D 也可以用做其他不同的特殊功能,请参见 P 73。 端口 E 为 8 位双向 I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动 特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电 路拉低时将输出电流。复位发生时端口 E 为三态。 端口 E 也可以用做其他不同的特殊功能,请参见 P 75。 端口 F 为 ADC 的模拟输入引脚。 如果不作为 ADC 的模拟输入,端口 F 可以作为 8 位双向 I/O 口,并具有可编程的内部上 拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时, 若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口 F 为三态。 如果使能了 JTAG 接口,则复位发生时引脚 PF7(TDI)、 PF5(TMS) 和 PF4(TCK) 的上拉 电阻使能。 端口 F 也可以作为 JTAG 接口。 5 引脚说明 VCC GND 端口 A(PA7..PA0) 端口 B(PB7..PB0) 端口 C(PC7..PC0) 端口 D(PD7..PD0) 端口 E(PE7..PE0) 端口 F(PF7..PF0) 2467L–AVR–05/04
端口 G(PG4..PG0) RESET XTAL1 XTAL2 AVCC AREF PEN 代码例子 在 ATmega103 兼容模式下,端口 F 只能作为输入引脚。 端口 G 为 5 位双向 I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动 特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电 路拉低时将输出电流。复位发生时端口 G 为三态。 端口 G 也可以用做其他不同的特殊功能。 在 ATmega103 兼容模式下,端口 G 只能作为外部存储器的所存信号以及 32 kHz 振荡器 的输入,并且在复位时这些引脚初始化为 PG0 = 1, PG1 = 1 以及 PG2 = 0。 PG3 和 PG4 是振荡器引脚。 复位输入引脚。超过最小门限时间的低电平将引起系统复位。门限时间在 P 47Table 19 说明。低于此时间的脉冲不能保证可靠复位。 反向振荡器放大器及片内时钟操作电路的输入。 反向振荡器放大器的输出。 AVCC为端口F以及ADC转换器的电源,需要与VCC相连接,即使没有使用ADC也应该如 此。使用 ADC 时应该通过一个低通滤波器与 VCC 连接。 AREF 为 ADC 的模拟基准输入引脚。 PEN是SPI串行下载的使能引脚。在上电复位时保持PEN为低电平将使器件进入SPI串行 下载模式。在正常工作过程中 PEN 引脚没有其他功能。 本手册包含了一些简单的代码例子以说明如何使用芯片各个不同的功能。这些例子都假 定在编译之前已经包含了正确的头文件。有些 C 编译器在头文件里并没有包含位定义和 中断,而且各个 C 编译器对中断处理有自己不同的处理方式。请注意查阅其文档以获取 具体的信息。 6 ATmega128 2467L–AVR–05/04
ATmega128 AVR CPU 内核 介绍 结构综述 本节从总体上讨论 AVR 内核的结构。CPU 的主要任务是保证程序的正确执行。因此它必 须能够访问存储器,执行运算,控制外设以及处理中断。 Figure 3. AVR 结构的方框图 Flash Program Memory Instruction Register Instruction Decoder Control Lines Data Bus 8-bit Program Counter Status and Control i g n s s e r d d A t c e r i D i g n s s e r d d A t c e r i d n I Interrupt Unit SPI Unit Watchdog Timer Analog Comparator I/O Module1 I/O Module 2 I/O Module n 32 x 8 General Purpose Registrers ALU Data SRAM EEPROM I/O Lines 为了得到最大程度的性能以及并行性, AVR 采用了 Harvard 结构,具有独立的数据和程 序总线。程序存储器的指令通过一级流水线运行。 CPU 在执行一条指令的同时读取下一 条指令 ( 在本文称为预取 )。这个概念实现了指令的单时钟周期运行。程序存储器为可以 在线编程的 FLASH。 快速访问寄存器文件包括 32 个 8 位通用工作寄存器,而且都可以在一个时钟周期内访问。 从而实现单时钟周期的 ALU 操作。在典型的 ALU 操作过程中,两个位于寄存器文件中的 操作数同时被访问,然后执行相应的运算,结果再被送回寄存器文件。整个过程仅需要一 个时钟周期。 寄存器文件里有 6 个寄存器可以用作 3 个 16 位的间接地址寄存器指针以寻址数据空间, 实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加 的功能寄存器即为 16 位的 X、 Y、 Z 寄存器。 ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器 操作。运算完成之后状态寄存器的内容将更新以反映操作结果。 程序流程通过有 / 无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大 多数指令长度为 16 位,亦即每个程序存储器地址都包含一条 16 位或 32 位的指令。 程序存储器空间分为两个区:引导程序区和应用程序区。这两个区都有专门的锁定位以实 现读和读 / 写保护。用于写应用程序区的 SPM 指令必须位于引导程序区。 2467L–AVR–05/04 7
ALU -算逻单元 状态寄存器 在中断和调用子程序时返回地址程序计数器 (PC) 保存于堆栈之中。堆栈位于通用数据 SRAM,故此其深度仅受限于 SRAM 的大小。在复位例程里用户首先要初始化堆栈指针 SP。这个指针位于 I/O 空间,可以进行读写访问。数据 SRAM 可以通过 5 种不同的寻址模 式进行访问。 AVR 存储器空间为线性的平面结构。 AVR 具有一个灵活的中断模块。控制寄存器位于 I/O 空间。状态寄存器里有全局中断使能 位。在程序存储器起始处有一个中断向量表,每一个中断在此都有独立的中断向量。各个 中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。 I/O 存储器空间包含 64 个可以直接寻址的地址。映射到数据空间即为寄存器文件之后的地 址 $20 - $5F。此外,ATmega128 在 SRAM 里还有扩展的 I/O 空间,位于地址 $60 - $FF。 但是只能使用 ST/STS/STD 和 LD/LDS/LDD 指令。 AVR ALU 与 32 个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间 的 ALU 运算只需要一个时钟周期。 ALU 操作分为 3 类:算术、逻辑和位操作。此外还提 供了支持无 / 有符号数和分数乘法的乘法器。具体请参见指令集。 状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序流程以 实现条件操作。状态寄存器的内容只有在 ALU 运算结束后才会更新。这样,在多数情况 下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。 在进入中断例程时状态寄存器不会自动保存;中断返回时也不会自动恢复。这些工作需 要软件来处理。 AVR 中断寄存器 – SREG – 定义如下: Bit 1 Z R/W 0 C R/W SREG 7 I 0 R/W 6 T R/W 5 H R/W 4 S R/W 3 V R/W 0 2 N R/W 0 0 0 0 0 读 / 写 0 初始值 • Bit 7 – I: 全局中断使能 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果 I 清零,则不 论单独中断标志置位与否,都不会产生中断。任意一个中断发生后 I 清零,而执行 RETI 指令后置位以使能中断。 I 也可以通过 SEI 和 CLI 指令来置位和清零。 • Bit 6 – T: 位拷贝存储 位拷贝指令 BLD 和 BST 利用 T 作为目的或源地址。BST 把寄存器的某一位拷贝到 T,而 BLD 把 T 拷贝到寄存器的某一位。 • Bit 5 – H: 半进位标志 半进位标志 H 表示算术操作发生了半进位。此标志对于 BCD 运算非常有用。 • Bit 4 – S: 符号位 , S = N ⊕ V S 为负数标志 N 与 2 的补码溢出标志 V 的异或。 • Bit 3 – V: 2 的补码溢出标志 支持 2 的补码运算。 • Bit 2 – N: 负数标志 表明算术或逻辑操作结果为负。 • Bit 1 – Z: 零标志 表明算术或逻辑操作结果为零。 • Bit 0 – C: 进位标志 8 ATmega128 2467L–AVR–05/04
分享到:
收藏