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