ATmega128在開(kāi)發(fā)應(yīng)用中應(yīng)注意的問(wèn)題
(1)先進(jìn)的RISC精簡(jiǎn)指令集結(jié)構(gòu):ATmega128具有133條功能強(qiáng)大的指令,大部分指令在單時(shí)鐘周期內(nèi)執(zhí)行;有32b×8個(gè)通用工作寄存器;片內(nèi)帶有執(zhí)行時(shí)間為2個(gè)時(shí)鐘周期的硬件乘法器。
本文引用地址:http://www.ex-cimer.com/article/173583.htm(2)非易失性程序和數(shù)據(jù)存儲(chǔ)器:ATmega128具有128KB在線可重復(fù)編程Flash、4KB的E2PROM以及4KB內(nèi)部SRAM。在其BOOT區(qū)具有獨(dú)立的加密位,可通過(guò)片內(nèi)的引導(dǎo)程序?qū)崿F(xiàn)在系統(tǒng)編程,寫(xiě)操作時(shí)真正可讀。
(3)具有JTAG接口:通過(guò)JTAG接口對(duì)Flash、E2PROM熔絲位和加密位編程。
(4)增強(qiáng)的硬件功能:ATmega128具有2個(gè)帶預(yù)分頻器和一種比較模式的8位定時(shí)/計(jì)數(shù)器;2個(gè)擴(kuò)充的帶預(yù)分頻器和比較模式、捕獲模式的16位定時(shí)/計(jì)數(shù)器;獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器;2通道8位PWM;6通道2~16位精度PWM;8通道10位A/D轉(zhuǎn)換;輸出比較調(diào)節(jié)器;8個(gè)單端通道;7個(gè)微分通道;2個(gè)增益為1x、10x或200x的微分通道;二線(I2C)串行接口;2路可編程串行UART接口;主/從SPI串 行接口;帶內(nèi)部振蕩器的可編程看門(mén)狗定時(shí)器等。
(5)獨(dú)有的特點(diǎn):上電復(fù)位和可編程的低電壓檢測(cè);內(nèi)部可校準(zhǔn)的RC振蕩器;5種睡眠模式,即空閑模式、ADC噪聲抑制模式、省電模式、掉電模式、待命模式和擴(kuò)展待命模式;可通過(guò)軟件選擇時(shí)鐘頻率;通過(guò)1個(gè)熔絲選定ATmega103兼容模式;全局上拉禁止。
筆者通過(guò)使用ATmega128單片機(jī),總結(jié)出在使用ATmega128過(guò)程中應(yīng)注意的問(wèn)題,希望能給即將使用該單片機(jī)的讀者提供有用的信息。
1ATmega128的開(kāi)發(fā)工具及其應(yīng)注意問(wèn)題
隨著用戶對(duì)編譯器的要求越來(lái)越高,開(kāi)發(fā)商也在不斷地提高編譯器對(duì)用戶的方便程度。目前的大趨勢(shì)是從用匯編語(yǔ)言開(kāi)發(fā)單片機(jī)發(fā)展到用C語(yǔ)言開(kāi)發(fā)。筆者在對(duì)開(kāi)發(fā)ATmega128編譯器的選擇時(shí),考慮到時(shí)間上的局限以及開(kāi)發(fā)的方便性等問(wèn)題,最終選擇了ImageCraft的ICCAVR工具。
ICCAVR是一種使用符合ANSI標(biāo)準(zhǔn)的C語(yǔ)言開(kāi)發(fā)微控制器程序的工具。它集合了編譯器和工程管理器的集成工作環(huán)境(IDE),可以編譯生成INTEL HEX格式文件。
ICCAVR和人們通常所用的編譯器的使用的方法大同小異,故本文不再詳述。本文主要對(duì)使用中應(yīng)當(dāng)注意的問(wèn)題作一介紹。
(1)該編譯器在設(shè)置中有一項(xiàng)“Return Stack Size”,默認(rèn)值為16,但在程序量很大而且子函數(shù)較多的情況下,該默認(rèn)值就不適合了,編譯時(shí)會(huì)出錯(cuò)。碰到這種情況建議將該選項(xiàng)的值改大。
(2)在經(jīng)過(guò)一段時(shí)間的使用后,發(fā)現(xiàn)該編譯器對(duì)C語(yǔ)言的編譯效率不是很理想。但設(shè)置當(dāng)中有一編譯優(yōu)化選擇項(xiàng)“Enable Code Compression”,使用它在一定情況下可以減少程序所占的空間。不過(guò)當(dāng)程序在“default”編譯優(yōu)化選擇的情況下所占的程序空間達(dá)到95%以上時(shí),使用“Enable Code Compression”編譯就會(huì)出錯(cuò)。所以筆者認(rèn)為,雖然ATmega128具有128KB的程序空間,但在使用過(guò)程中也應(yīng)當(dāng)考慮到數(shù)據(jù)結(jié)構(gòu)方面的問(wèn)題。
應(yīng)用ICCAVR生成hex文件以后,下一步就是將hex文件燒錄到ATmega128中去。筆者選用的軟件是PonyProg2000。這是一款操作簡(jiǎn)單但功能強(qiáng)大的燒錄軟件,它支持包括AVR、PIC在內(nèi)的多種單片機(jī)型。作者是通過(guò)PC機(jī)的并口以串行方式連接到ATmega128的JTAG接口的。在燒錄的整個(gè)過(guò)程當(dāng)中,最關(guān)鍵的問(wèn)題是芯片晶振的選擇以及熔絲的配置。晶振的選擇較為簡(jiǎn)單,只要注意使用外部晶振還是內(nèi)部晶振,并設(shè)置好相應(yīng)的選項(xiàng)就可以了。由于ATmega128具有IAP(應(yīng)用中編程)及用戶可以在應(yīng)用程序中對(duì)Flash塊、加密位等實(shí)現(xiàn)擦除和編程等操作功能,而熔絲位的設(shè)置正是實(shí)現(xiàn)IAP功能的必要條件,因此可以通過(guò)ATmega128的用戶手冊(cè)再根據(jù)自己需要的實(shí)際情況來(lái)進(jìn)行設(shè)置。正確的晶振和熔絲設(shè)置都是必不可少的,否則不能正確下載。這一步非常重要應(yīng)特別注意,以免走彎路。下面介紹使用晶振和熔絲的設(shè)置方法。
這里采用PonyProg2000中“configruation and security bits”菜單命令來(lái)進(jìn)行設(shè)置,其界面如圖1所示。
評(píng)論