ATmega128在開發(fā)應(yīng)用中應(yīng)注意的問(wèn)題
(1)晶振的設(shè)置方法
菜單中CKSEL0~CKSEL3是設(shè)置晶振的選項(xiàng)。ATmega128由于有內(nèi)部晶振,所以首先要確定是外部晶振還是內(nèi)部晶振。表1給出了內(nèi)、外部晶振的范圍。表2和表3給出了內(nèi)、外部晶振頻率的設(shè)置方法。
(2)熔絲位的設(shè)置方法
通過(guò)JTAG接口來(lái)實(shí)現(xiàn)對(duì)熔絲的設(shè)置,只要設(shè)置好如圖1所示的相應(yīng)位,就可以實(shí)現(xiàn)不同的功能。關(guān)于熔絲每一位的功能,首先需要說(shuō)明的是,在對(duì)熔絲位進(jìn)行設(shè)置時(shí),如果讀出該位為“0”,說(shuō)明該位已被設(shè)置;該位為“1”則未被設(shè)置。ATmega128中一共有3個(gè)字節(jié)是有關(guān)熔絲的設(shè)置。其中第1個(gè)字節(jié)只用到了低2位,分別是WDTON(看門狗始終開)和M103C(ATmega103兼容模式);第2個(gè)字節(jié)的低4位是CLK0~CLK3,高4位分別是SUT0、SUT1(啟動(dòng)時(shí)間選擇)、BODEN(低功耗檢測(cè)使能)、BODLEVEL(低功耗檢測(cè)觸發(fā)程度);第3個(gè)字節(jié)的每一位分別是:BOOTRST(復(fù)位向量選擇)、BOOTSZ0、BOOTSZ1(BOOT區(qū)大小選擇)、EESAVE(芯片擦除過(guò)程中E2PROM內(nèi)容保持)、CKOPT(選擇晶振操作)、SPIEN(串行下載程序使能,在PonyProg2000中沒(méi)有這一位是因?yàn)镻onyProg2000本身通過(guò)串行下載程序,故不能修改)、JTAGEN(JTAG使能)、OCDEN(OCD使能,OCD即ON CHIP DEBUG)。
ATmega128有6個(gè)位鎖位,其中BOOTLOCK12、BOOTLOCK11、BOOTLOCK02、BOOTLOCK01是關(guān)于BOOT區(qū)的4個(gè)位鎖位,而LOCK2和LOCK1則是熔絲位的位鎖位??梢酝ㄟ^(guò)設(shè)置熔絲位鎖位來(lái)選擇使用相應(yīng)的功能。所以在使用熔絲位功能以前一定要先設(shè)置相應(yīng)的“解鎖”,即將LOCK2和LOCK1都設(shè)置為“1”。
若用ICCAVR來(lái)開發(fā)編譯軟件,再通過(guò)PonyProg2000將程序直接下載到ATmega128芯片中去,可以即時(shí)地將程序思想反映到要實(shí)現(xiàn)的功能上來(lái),便于即時(shí)地修改程序中的錯(cuò)誤,大大縮短產(chǎn)品的開發(fā)時(shí)間。
2使用ATmega128芯片本身應(yīng)注意的問(wèn)題
ATmega128和51系列單片機(jī)基本上是2種不同的開發(fā)方式,在筆者使用過(guò)程中,總結(jié)出了以下一些常見(jiàn)的但必須重視的問(wèn)題。
(1)管 腳
ATmega128具有豐富的管腳資源,一共有8個(gè)端口共53個(gè)I/O引腳,而且每一個(gè)I/O引腳都可以通過(guò)編程來(lái)設(shè)置輸入、輸出方式。ATmega128的每一個(gè)端口都有3個(gè)寄存器與之對(duì)應(yīng),現(xiàn)以PA口為例來(lái)說(shuō)明管腳的設(shè)置。①方向寄存器DDRA。DDRA的每一位對(duì)應(yīng)于PA口的1個(gè)I/O管腳,相應(yīng)的位為1,則將該管腳設(shè)置為輸出引腳;為0則設(shè)置為輸入引腳。②是輸出寄存器PORTA。用來(lái)存放ATmega128輸出的數(shù)據(jù)。③輸入寄存器PINA,用來(lái)存放ATmega128輸入的數(shù)據(jù)。在對(duì)PA口進(jìn)行具體操作時(shí),首先應(yīng)該設(shè)置好DDRA,然后根據(jù)DDRA來(lái)選用PORTA或者PINA(注意一定不要搞錯(cuò)方向)。
評(píng)論