(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(注意一定不要搞错方向)。