ATmega128在开发应用中应注意的问题.doc_第1页
ATmega128在开发应用中应注意的问题.doc_第2页
ATmega128在开发应用中应注意的问题.doc_第3页
ATmega128在开发应用中应注意的问题.doc_第4页
全文预览已结束

下载本文档

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

文档简介

ATmega128在开发应用中应注意的问题ATmega128是AVR系列中功能最强的单片机,具有如下主要特点: (1)先进的RISC精简指令集结构:ATmega128具有133条功能强大的指令,大部分指令在单时钟周期内执行;有32b8个通用工作寄存器;片内带有执行时间为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通道216位精度PWM;8通道10位A/D转换;输出比较调节器;8个单端通道;7个微分通道;2个增益为1x、10x或200x的微分通道;二线(I2C)串行接口;2路可编程串行UART接口;主/从SPI串行接口;带内部振荡器的可编程看门狗定时器等。(5)独有的特点:上电复位和可编程的低电压检测;内部可校准的RC振荡器;5种睡眠模式,即空闲模式、ADC噪声抑制模式、省电模式、掉电模式、待命模式和扩展待命模式;可通过软件选择时钟频率;通过1个熔丝选定ATmega103兼容模式;全局上拉禁止。笔者通过使用ATmega128单片机,总结出在使用ATmega128过程中应注意的问题,希望能给即将使用该单片机的读者提供有用的信息。1ATmega128的开发工具及其应注意问题随着用户对编译器的要求越来越高,开发商也在不断地提高编译器对用户的方便程度。目前的大趋势是从用汇编语言开发单片机发展到用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所示。(1)晶振的设置方法 菜单中CKSEL0CKSEL3是设置晶振的选项。ATmega128由于有内部晶振,所以首先要确定是外部晶振还是内部晶振。表1给出了内、外部晶振的范围。表2和表3给出了内、外部晶振频率的设置方法。(2)熔丝位的设置方法通过JTAG接口来实现对熔丝的设置,只要设置好如图1所示的相应位,就可以实现不同的功能。关于熔丝每一位的功能,首先需要说明的是,在对熔丝位进行设置时,如果读出该位为“0”,说明该位已被设置;该位为“1”则未被设置。ATmega128中一共有3个字节是有关熔丝的设置。其中第1个字节只用到了低2位,分别是WDTON(看门狗始终开)和M103C(ATmega103兼容模式);第2个字节的低4位是CLK0CLK3,高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(注意一定不要搞错方向)。此外,ATmega128自带输入上拉电阻功能,通过设置即可以实现其功能。例如将PA口设为输入口并且加上拉电阻,可以如下设置: DDRA=0x00;/将PA口设置为输入端口PORA=0xff;/将PA输入口加上拉电阻(2)位操作的使用方法采用ICCAVR对ATmega128的位操作的使用方法比较麻烦,不像51系列那样可以直接对某一个引脚进行置0或置1,而是要通过如下的方法进行位操作:如要对PA端口的第1位置1,则用C语言必须按PORTA|=(1PA1)编写;如要对PA端口的第2位置0,则用C语言必须按PORTA&=*(1PA2)编写。 这样就可以单独对某一位操作而不影响其他位。位操作对其他寄存器也同样适合,例如若要对某个口的几位设为输入,某几位设为输出,就可以通过上面的置1、置0方法来实现。(3)中 断ATmega128中断资源丰富,一共有35个中断源,在ICCAVR的iom128v.h头文件中给出了这些中断源对应的中断向量表。当用到相应的中断时,首先应设置好对应的中断向量。用ICCAVR设置ATmega128中断的方法与Keil51设置中断的方法截然不同,例如若需要将ATmega128的串口0设置为中断接收,就必须在程序中做如下设置:#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC否则程序不能中断接收,延长开发过程。ATmega128作为一种功能强大的芯片,相信会在不同的领域发挥不同的作用,为此需要人们不断地提高对ATmeg

温馨提示

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

评论

0/150

提交评论