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过程中应注意的问题,希望能给即将使用该单片机的读者提供有用的信息。
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)晶振的设置方法
菜单中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(注意一定不要搞错方向)。
此外,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
腾讯医典公布了一季度短视频供应商排行榜
三星S8国行版发布会马上开始:三星S8发布会3大亮点抢先看,三星S8发布会视频直播地址
中国标准走进国际视野 首个零信任国际标准的诞生往事
城镇河流河道AD叶绿素浮标水质在线监测了解一下
新能源汽车技术就业前景_新能源汽车的发展趋势
ATmega128在开发应用中应注意的问题
高低温环境试验设备在电子元器件行业的应用-贝尔试验箱
虎贲芯片什么水平?展锐的虎贲T610碾压高通665
几个常用电路
主流手机操作系统简介
三星Galaxy Note 10系列取消了3.5mm耳机孔电池容量增大了100Ah
现代索纳塔初尝音改甜头 芬朗入门级套装功不可没
骁龙775最新跑分曝光:与小米手机一同亮相
AI规划与映射很重要 是数字化转型中的重要一环
遥控器测试器,Remote Testing
一文读懂高速电机主轴的技术特性及应用
俄罗斯建立建立水下、水面和空中无人机的全球网络
TECNO全球首发智能手机行业第一款双棱镜潜望大角度长焦相机
云帆瑞达携手启迪作为大湾区科技代表参与黄石(深圳)离岸科创中心落地并签约毫米波雷达项目
从智能手机到物联网,中国芯与国产OS合力拿下大片市场!