ATmega128在开发应用中应注意的问题

发布者:石头12345最新更新时间:2012-02-22 来源: 21IC关键字:ATmega128  开发应用  指令集 手机看文章 扫描二维码
随时随地手机看文章
  ATmega128是AVR系列中功能最强的单片机,具有如下主要特点:

  (1)先进的RISC精简指令集结构:ATmega128具有133条功能强大的指令,大部分指令在单时钟周期内执行;有32b×8个通用工作寄存器;片内带有执行时间为2个时钟周期的硬件乘法器。

  (2)非易失性程序和数据存储器:ATmega128具有128KB在线可重复编程Flash、4KB的E2PROM以及4KB内部SRAM。在其BOOT区具有独立的加密位,可通过片内的引导程序实现在系统编程,写操作时真正可读。

  (3)具有JTAG接口:通过JTAG接口对Flash、E2PROM熔丝位和加密位编程。

  (4)增强的硬件功能:ATmega128具有2个带预分频器和一种比较模式的8位定时/计数器;2个扩充的带预分频器和比较模式、捕获模式的16位定时/计数器;独立振荡器的实时计数器;2通道8位PWM;6通道2~16位精度PWM;8通道10位A/D转换;输出比较调节器;8个单端通道;7个微分通道;2个增益为1x、10x或200x的微分通道;二线(I2C)串行接口;2路可编程串行UART接口;主/从SPI串 行接口;带内部振荡器的可编程看门狗定时器等。

  (5)独有的特点:上电复位和可编程的低电压检测;内部可校准的RC振荡器;5种睡眠模式,即空闲模式、ADC噪声抑制模式、省电模式、掉电模式、待命模式和扩展待命模式;可通过软件选择时钟频率;通过1个熔丝选定ATmega103兼容模式;全局上拉禁止。

  笔者通过使用ATmega128单片机,总结出在使用ATmega128过程中应注意的问题,希望能给即将使用该单片机的读者提供有用的信息。

1 ATmega128的开发工具及其应注意问题

  随着用户对编译器的要求越来越高,开发商也在不断地提高编译器对用户的方便程度。目前的大趋势是从用汇编语言开发单片机发展到用C语言开发。笔者在对开发ATmega128编译器的选择时,考虑到时间上的局限以及开发的方便性等问题,最终选择了ImageCraft的ICCAVR工具。

  ICCAVR是一种使用符合ANSI标准的C语言开发微控制器程序的工具。它集合了编译器和工程管理器的集成工作环境(IDE),可以编译生成INTEL HEX格式文件。

  ICCAVR和人们通常所用的编译器的使用的方法大同小异,故本文不再详述。本文主要对使用中应当注意的问题作一介绍。

    (1)该编译器在设置中有一项“Return Stack Size”,默认值为16,但在程序量很大而且子函数较多的情况下,该默认值就不适合了,编译时会出错。碰到这种情况建议将该选项的值改大。

    (2)在经过一段时间的使用后,发现该编译器对C语言的编译效率不是很理想。但设置当中有一编译优化选择项“Enable Code Compression”,使用它在一定情况下可以减少程序所占的空间。不过当程序在“default”编译优化选择的情况下所占的程序空间达到95%以上时,使用“Enable Code Compression”编译就会出错。所以笔者认为,虽然ATmega128具有128KB的程序空间,但在使用过程中也应当考虑到数据结构方面的问题。

  应用ICCAVR生成hex文件以后,下一步就是将hex文件烧录到ATmega128中去。笔者选用的软件是PonyProg2000。这是一款操作简单但功能强大的烧录软件,它支持包括AVR、PIC在内的多种单片机型。作者是通过PC机的并口以串行方式连接到ATmega128的JTAG接口的。在烧录的整个过程当中,最关键的问题是芯片晶振的选择以及熔丝的配置。晶振的选择较为简单,只要注意使用外部晶振还是内部晶振,并设置好相应的选项就可以了。由于ATmega128具有IAP(应用中编程)及用户可以在应用程序中对Flash块、加密位等实现擦除和编程等操作功能,而熔丝位的设置正是实现IAP功能的必要条件,因此可以通过ATmega128的用户手册再根据自己需要的实际情况来进行设置。正确的晶振和熔丝设置都是必不可少的,否则不能正确下载。这一步非常重要应特别注意,以免走弯路。下面介绍使用晶振和熔丝的设置方法。

  这里采用PonyProg2000中“configruation and security bits”菜单命令来进行设置,其界面如图1所示。

[page]

  (1)晶振的设置方法

  菜单中CKSEL0~CKSEL3是设置晶振的选项。ATmega128由于有内部晶振,所以首先要确定是外部晶振还是内部晶振。表1给出了内、外部晶振的范围。表2和表3给出了内、外部晶振频率的设置方法。

  

 

  (2)熔丝位的设置方法

  通过JTAG接口来实现对熔丝的设置,只要设置好如图1所示的相应位,就可以实现不同的功能。关于熔丝每一位的功能,首先需要说明的是,在对熔丝位进行设置时,如果读出该位为“0”,说明该位已被设置;该位为“1”则未被设置。ATmega128中一共有3个字节是有关熔丝的设置。其中第1个字节只用到了低2位,分别是WDTON(看门狗始终开)和M103C(ATmega103兼容模式);第2个字节的低4位是CLK0~CLK3,高4位分别是SUT0、SUT1(启动时间选择)、BODEN(低功耗检测使能)、BODLEVEL(低功耗检测触发程度);第3个字节的每一位分别是:BOOTRST(复位向量选择)、BOOTSZ0、BOOTSZ1(BOOT区大小选择)、EESAVE(芯片擦除过程中E2PROM内容保持)、CKOPT(选择晶振操作)、SPIEN(串行下载程序使能,在PonyProg2000中没有这一位是因为PonyProg2000本身通过串行下载程序,故不能修改)、JTAGEN(JTAG使能)、OCDEN(OCD使能,OCD即ON CHIP DEBUG)。

  ATmega128有6个位锁位,其中BOOTLOCK12、BOOTLOCK11、BOOTLOCK02、BOOTLOCK01是关于BOOT区的4个位锁位,而LOCK2和LOCK1则是熔丝位的位锁位。可以通过设置熔丝位锁位来选择使用相应的功能。所以在使用熔丝位功能以前一定要先设置相应的“解锁”,即将LOCK2和LOCK1都设置为“1”。

  若用ICCAVR来开发编译软件,再通过PonyProg2000将程序直接下载到ATmega128芯片中去,可以即时地将程序思想反映到要实现的功能上来,便于即时地修改程序中的错误,大大缩短产品的开发时间。

2 使用ATmega128芯片本身应注意的问题

  ATmega128和51系列单片机基本上是2种不同的开发方式,在笔者使用过程中,总结出了以下一些常见的但必须重视的问题。

  (1)管  脚

  ATmega128具有丰富的管脚资源,一共有8个端口共53个I/O引脚,而且每一个I/O引脚都可以通过编程来设置输入、输出方式。ATmega128的每一个端口都有3个寄存器与之对应,现以PA口为例来说明管脚的设置。①方向寄存器DDRA。DDRA的每一位对应于PA口的1个I/O管脚,相应的位为1,则将该管脚设置为输出引脚;为0则设置为输入引脚。②是输出寄存器PORTA。用来存放ATmega128输出的数据。③输入寄存器PINA,用来存放ATmega128输入的数据。在对PA口进行具体操作时,首先应该设置好DDRA,然后根据DDRA来选用PORTA或者PINA(注意一定不要搞错方向)。

[page]

  此外,ATmega128自带输入上拉电阻功能,通过设置即可以实现其功能。例如将PA口设为输入口并且加上拉电阻,可以如下设置:

  DDRA=0x00;  //将PA口设置为输入端口

  PORA=0xff;  //将PA输入口加上拉电阻

  (2)位操作的使用方法

  采用ICCAVR对ATmega128的位操作的使用方法比较麻烦,不像51系列那样可以直接对某一个引脚进行置0或置1,而是要通过如下的方法进行位操作:

  如要对PA端口的第1位置1,则用C语言必须按PORTA|=(1<

  这样就可以单独对某一位操作而不影响其他位。位操作对其他寄存器也同样适合,例如若要对某个口的几位设为输入,某几位设为输出,就可以通过上面的置1、置0方法来实现。

  (3)中  断

  ATmega128中断资源丰富,一共有35个中断源,在ICCAVR的iom128v.h头文件中给出了这些中断源对应的中断向量表。当用到相应的中断时,首先应设置好对应的中断向量。用ICCAVR设置ATmega128中断的方法与Keil51设置中断的方法截然不同,例如若需要将ATmega128的串口0设置为中断接收,就必须在程序中做如下设置:

  #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC

  否则程序不能中断接收,延长开发过程。

  ATmega128作为一种功能强大的芯片,相信会在不同的领域发挥不同的作用,为此需要人们不断地提高对ATmega128的认识。而且ATmega128与AVR等其他单片机如ATmega8、ATmega103、AT90S8535系列有相同的开发方法,掌握了ATmega128就可以在开发其他AVR类型的单片机时应用自如。

参考文献

1  USA:Atmel Corporation.ATmega128(L)Datasheet,2001

2  丁化成.AVR单片机应用设计.北京:北京航空航天大学出版社,2002

关键字:ATmega128  开发应用  指令集 引用地址:ATmega128在开发应用中应注意的问题

上一篇:基于ST7538和ATmega88V的电力线载波通信模块的设计
下一篇:基于ATMEGA64L的RFID读卡器设计

推荐阅读最新更新时间:2024-03-16 12:53

ARM指令集 VS Thumb指令集
1 thumb指令集概述 为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集。 Thumb指令集是ARM指令集的一个子集,是针对代码密度问题而提出的,它具有16位的代码宽度。与等价的32位代码相比较,Thumb指令集在保留32位代码优势的同时,大大的节省了系统的存储空间。Thumb不是一个完整的体系结构,不能指望处理器只执行Thumb指令集而不支持ARM指令集。 当处理器在执行ARM程序段时,称ARM处理器处于ARM工作状态,当处理器在执行Thumb程序段时,称ARM处理器处于Thumb工作状态(CPSR的T=0:arm,T=1:thumb)。
[单片机]
Littelfuse增加了专为高压应用开发的3425L系列SMD自恢复PPTC系列
为数据中心、电信、工业机器人和消费电子产品提供自恢复过流保护 中国北京, 2023年5月16日讯–Littelfuse公司是一家工业技术制造公司,致力于为可持续发展、互联互通和更安全的世界提供动力。 公司宣布推出3425L系列SMD自恢复PPTC(聚合物正温度系数)过流电路保护器件。 Littelfuse 3425L系列SMD自恢复PPTC 最新的3425L系列SMD PPTC是Littelfuse PolySwitch®系列自恢复过流保护器件的扩展,它以紧凑的表面安装8763mm(3425密耳)尺寸提供自恢复高压过流保护。 新推出的3425L系列是许多应用的理想选择,包括:  消费电子产品,例如电动
[电源管理]
Littelfuse增加了专为高压<font color='red'>应用</font><font color='red'>开发</font>的3425L系列SMD自恢复PPTC系列
基于ECOS操作系统在S3C2510开发板上的应用研究
引言 ECOS(Embedded Configurable Operating System,嵌入式可配置操作系统)是一种针对16位、32位和64位处理器的可移植嵌入式实时操作系统。由于其源代码是公开的,因而有越来越多的设计人员开始关注ECOS操作系统。ECOS最大的特点是模块化,内核可配置。最小版本的ECOS只有几百字节,非常适合小型嵌入式系统的开发。相对于嵌入式Linux来说,ECOS有配置灵活和节省资源的优势。它的另一个优点是使用多任务抢占机制,具有最小的中断延迟,支持嵌入式系统所需的所有同步原语,并拥有灵活的调度策略和中断处理机制,因而具有良好的实时性。与Clinux和COS等操作系统相比,ECOS更适合于处理实时信号的
[单片机]
基于ECOS操作系统在S3C2510<font color='red'>开发</font>板上的<font color='red'>应用</font>研究
ARM汇编指令集的特点
8种寻址方式 寄存器寻址 mov r1,r2 立即寻址 mov r#0xFF00 寄存器移位寻址 mov r0,r1,lsl #3 寄存器间接寻址 ldr r1, 基址变址寻址 ldr r1, 多寄存器寻址 ldmia r1!,{r2-r7,r12} 堆栈寻址 stmfd sp!,(r2-r7,lr) 相对地址 flag:beq flag 指令后缀 B(byte) 功能不变,操作长度变为8位 H(half word) 功能不变,操作长度变为16位 S(signed) 功能不变,操作长度变为有符号 如ldr、ldrb、drh、ldrsb、 S(S标志) 功能不变,影响CPSR标
[单片机]
谷歌开发虚拟大脑或率先应用于语音识别
    据国外媒体报道,Google X作为谷歌最神秘的部门,他们正在开发一项新型人工智能技术——一款模拟人脑的软件。这个软件具备自我学习功能,未来将使Google产品更加智能化,而首先受益的很可能是语音识别等应用。   据悉,谷歌的“虚拟大脑”是,模拟脑细胞相互交流、影响设计的。通过看YouTube视频学习识别猫、人以及其他事物。当有数据被送达这个神经网络的时候,不同神经元之间的关系就会发生改变。研究人员创造的这个以软件为基础的神经网络,显然准确地印证了生物学家的理论——单个神经元通过在大脑内接受的训练,获得识别物体的能力。   目前,通过应用这个神经网络,谷歌的软件已经能够更准确的识别讲话内容,而语音识别技术对于谷歌自己的智
[家用电子]
51汇编语言指令集
符号定义表 符号 含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR (80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11
[单片机]
基于AVR单片机设计的手机自动售货机
   引 言   移动增值业务产品的核心特点是移动性、即时性和个人性。移动增值服务是在通信技术、计算机技术和互联网技术不断发展融合的基础上,在人们以信息为基础的各种应用需求快速增长的激励下,在社会信息化水平日益提高的前提下,迅速发展的一种全新的服务方式。由于移动通信自身所具有的可移动性、无时空限制性、专属性、安全性和时尚性的特点,加上基于这些特点之上的短信息、游戏、支付、定位、办公等丰富多彩的应用服务,使得我国的移动增值业务在短短数年里从无到有,迅速发展为欣欣向荣的产业。本系统采用的是以ATmegal28单片机为核心的自动售货机,通过BENQ的13SM/GPRS M22模块与服务器通信来实现以手机支付形式的移动增值服务系统。在
[单片机]
基于AVR单片机设计的手机自动售货机
基于AVR单片机与FPGA的低频数字式相位测量仪
摘要:提出了以AVR ATmega128单片机和Altera公司的Cyclone系列EP1C3T100为核心的系统设计方案。分析了数字式低频相位测量仪的测量原理和测量误差及其消除的方法。利用单片机强劲的运算、控制功能和FPGA运算速度快、资源丰富的特点。主要介绍了系统的软硬件设计。实践表明,此方案设计的相位仪对低频正弦波信号实现精确测频和测相位差,具有处理速度快、稳定可靠、精度高等优点。 关键词:数字相位仪;单片机;FPGA;误差;频率;相位差 在工业领域中经常要用到低频数字式相位仪来精确测量两信号之问的相位差,比如在电力系统、频率特性的研究、激光测距等领域均有广泛的应用,相位检测的精度直接决定系统的整体性能。这就要求测量仪
[嵌入式]
基于AVR单片机与FPGA的低频数字式相位测量仪
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved