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