新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ATmega128在開發(fā)應(yīng)用中應(yīng)注意的問題

ATmega128在開發(fā)應(yīng)用中應(yīng)注意的問題

作者: 時間:2009-10-22 來源:網(wǎng)絡(luò) 收藏
是AVR系列中功能最強的單片機,具有如下主要特點:

  (1)先進的RISC精簡指令集結(jié)構(gòu):具有133條功能強大的指令,大部分指令在單時鐘周期內(nèi)執(zhí)行;有32b×8個通用工作寄存器;片內(nèi)帶有執(zhí)行時間為2個時鐘周期的硬件乘法器。

本文引用地址:http://butianyuan.cn/article/173583.htm

  (2)非易失性程序和數(shù)據(jù)存儲器:具有128KB在線可重復(fù)編程Flash、4KB的E2PROM以及4KB內(nèi)部SRAM。在其BOOT區(qū)具有獨立的加密位,可通過片內(nèi)的引導(dǎo)程序?qū)崿F(xiàn)在系統(tǒng)編程,寫操作時真正可讀。

  (3)具有JTAG接口:通過JTAG接口對Flash、E2PROM熔絲位和加密位編程。

  (4)增強的硬件功能:ATmega128具有2個帶預(yù)分頻器和一種比較模式的8位定時/計數(shù)器;2個擴充的帶預(yù)分頻器和比較模式、捕獲模式的16位定時/計數(shù)器;獨立振蕩器的實時計數(shù)器;2通道8位PWM;6通道2~16位精度PWM;8通道10位A/D轉(zhuǎn)換;輸出比較調(diào)節(jié)器;8個單端通道;7個微分通道;2個增益為1x、10x或200x的微分通道;二線(I2C)串行接口;2路可編程串行UART接口;主/從SPI串 行接口;帶內(nèi)部振蕩器的可編程看門狗定時器等。

  (5)獨有的特點:上電復(fù)位和可編程的低電壓檢測;內(nèi)部可校準(zhǔn)的RC振蕩器;5種睡眠模式,即空閑模式、ADC噪聲抑制模式、省電模式、掉電模式、待命模式和擴展待命模式;可通過軟件選擇時鐘頻率;通過1個熔絲選定ATmega103兼容模式;全局上拉禁止。

  筆者通過使用ATmega128單片機,總結(jié)出在使用ATmega128過程中應(yīng),希望能給即將使用該單片機的讀者提供有用的信息。

1ATmega128的工具及其應(yīng)

  隨著用戶對編譯器的要求越來越高,商也在不斷地提高編譯器對用戶的方便程度。目前的大趨勢是從用匯編語言單片機發(fā)展到用C語言開發(fā)。筆者在對開發(fā)ATmega128編譯器的選擇時,考慮到時間上的局限以及開發(fā)的方便性等,最終選擇了ImageCraft的ICCAVR工具。

  ICCAVR是一種使用符合ANSI標(biāo)準(zhǔn)的C語言開發(fā)微控制器程序的工具。它集合了編譯器和工程管理器的集成工作環(huán)境(IDE),可以編譯生成INTEL HEX格式文件。

  ICCAVR和人們通常所用的編譯器的使用的方法大同小異,故本文不再詳述。本文主要對使用中應(yīng)當(dāng)的問題作一介紹。

(1)該編譯器在設(shè)置中有一項“Return Stack Size”,默認(rèn)值為16,但在程序量很大而且子函數(shù)較多的情況下,該默認(rèn)值就不適合了,編譯時會出錯。碰到這種情況建議將該選項的值改大。

(2)在經(jīng)過一段時間的使用后,發(fā)現(xiàn)該編譯器對C語言的編譯效率不是很理想。但設(shè)置當(dāng)中有一編譯優(yōu)化選擇項“Enable Code Compression”,使用它在一定情況下可以減少程序所占的空間。不過當(dāng)程序在“default”編譯優(yōu)化選擇的情況下所占的程序空間達到95%以上時,使用“Enable Code Compression”編譯就會出錯。所以筆者認(rèn)為,雖然ATmega128具有128KB的程序空間,但在使用過程中也應(yīng)當(dāng)考慮到數(shù)據(jù)結(jié)構(gòu)方面的問題。

  ICCAVR生成hex文件以后,下一步就是將hex文件燒錄到ATmega128中去。筆者選用的軟件是PonyProg2000。這是一款操作簡單但功能強大的燒錄軟件,它支持包括AVR、PIC在內(nèi)的多種單片機型。作者是通過PC機的并口以串行方式連接到ATmega128的JTAG接口的。在燒錄的整個過程當(dāng)中,最關(guān)鍵的問題是芯片晶振的選擇以及熔絲的配置。晶振的選擇較為簡單,只要注意使用外部晶振還是內(nèi)部晶振,并設(shè)置好相應(yīng)的選項就可以了。由于ATmega128具有IAP(中編程)及用戶可以在程序中對Flash塊、加密位等實現(xiàn)擦除和編程等操作功能,而熔絲位的設(shè)置正是實現(xiàn)IAP功能的必要條件,因此可以通過ATmega128的用戶手冊再根據(jù)自己需要的實際情況來進行設(shè)置。正確的晶振和熔絲設(shè)置都是必不可少的,否則不能正確下載。這一步非常重要應(yīng)特別注意,以免走彎路。下面介紹使用晶振和熔絲的設(shè)置方法。

  這里采用PonyProg2000中“configruation and security bits”菜單命令來進行設(shè)置,其界面如圖1所示。


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉