當前位置:首頁 > 單片機 > 單片機
[導讀]ATmega128是一種與51系列不同的單片機,本文應用ICCAVR和pony prog2000作為主要開發(fā)工具,通過分析其在開發(fā)過程中特殊的開發(fā)方法,從而達到更好地掌握和使用ATmega128的目的。

ATmega128是AVR系列中功能最強的單片機,具有如下主要特點:

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

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

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

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

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

  筆者通過使用ATmega128單片機,總結出在使用ATmega128過程中應注意的問題,希望能給即將使用該單片機的讀者提供有用的信息。

1 ATmega128的開發(fā)工具及其應注意問題

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

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

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

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

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

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

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

 

  (1)晶振的設置方法

  菜單中CKSEL0~CKSEL3是設置晶振的選項。ATmega128由于有內部晶振,所以首先要確定是外部晶振還是內部晶振。表1給出了內、外部晶振的范圍。表2和表3給出了內、外部晶振頻率的設置方法。

  

 

  (2)熔絲位的設置方法

  通過JTAG接口來實現(xiàn)對熔絲的設置,只要設置好如圖1所示的相應位,就可以實現(xiàn)不同的功能。關于熔絲每一位的功能,首先需要說明的是,在對熔絲位進行設置時,如果讀出該位為“0”,說明該位已被設置;該位為“1”則未被設置。ATmega128中一共有3個字節(jié)是有關熔絲的設置。其中第1個字節(jié)只用到了低2位,分別是WDTON(看門狗始終開)和M103C(ATmega103兼容模式);第2個字節(jié)的低4位是CLK0~CLK3,高4位分別是SUT0、SUT1(啟動時間選擇)、BODEN(低功耗檢測使能)、BODLEVEL(低功耗檢測觸發(fā)程度);第3個字節(jié)的每一位分別是:BOOTRST(復位向量選擇)、BOOTSZ0、BOOTSZ1(BOOT區(qū)大小選擇)、EESAVE(芯片擦除過程中E2PROM內容保持)、CKOPT(選擇晶振操作)、SPIEN(串行下載程序使能,在PonyProg2000中沒有這一位是因為PonyProg2000本身通過串行下載程序,故不能修改)、JTAGEN(JTAG使能)、OCDEN(OCD使能,OCD即ON CHIP DEBUG)。

  ATmega128有6個位鎖位,其中BOOTLOCK12、BOOTLOCK11、BOOTLOCK02、BOOTLOCK01是關于BOOT區(qū)的4個位鎖位,而LOCK2和LOCK1則是熔絲位的位鎖位??梢酝ㄟ^設置熔絲位鎖位來選擇使用相應的功能。所以在使用熔絲位功能以前一定要先設置相應的“解鎖”,即將LOCK2和LOCK1都設置為“1”。

  若用ICCAVR來開發(fā)編譯軟件,再通過PonyProg2000將程序直接下載到ATmega128芯片中去,可以即時地將程序思想反映到要實現(xiàn)的功能上來,便于即時地修改程序中的錯誤,大大縮短產品的開發(fā)時間。

2 使用ATmega128芯片本身應注意的問題

  ATmega128和51系列單片機基本上是2種不同的開發(fā)方式,在筆者使用過程中,總結出了以下一些常見的但必須重視的問題。

  (1)管  腳

  ATmega128具有豐富的管腳資源,一共有8個端口共53個I/O引腳,而且每一個I/O引腳都可以通過編程來設置輸入、輸出方式。ATmega128的每一個端口都有3個寄存器與之對應,現(xiàn)以PA口為例來說明管腳的設置。①方向寄存器DDRA。DDRA的每一位對應于PA口的1個I/O管腳,相應的位為1,則將該管腳設置為輸出引腳;為0則設置為輸入引腳。②是輸出寄存器PORTA。用來存放ATmega128輸出的數(shù)據。③輸入寄存器PINA,用來存放ATmega128輸入的數(shù)據。在對PA口進行具體操作時,首先應該設置好DDRA,然后根據DDRA來選用PORTA或者PINA(注意一定不要搞錯方向)。

  此外,ATmega128自帶輸入上拉電阻功能,通過設置即可以實現(xiàn)其功能。例如將PA口設為輸入口并且加上拉電阻,可以如下設置:

  DDRA=0x00;  //將PA口設置為輸入端口

  PORA=0xff;  //將PA輸入口加上拉電阻

  (2)位操作的使用方法

  采用ICCAVR對ATmega128的位操作的使用方法比較麻煩,不像51系列那樣可以直接對某一個引腳進行置0或置1,而是要通過如下的方法進行位操作:

  如要對PA端口的第1位置1,則用C語言必須按PORTA|=(1<

  這樣就可以單獨對某一位操作而不影響其他位。位操作對其他寄存器也同樣適合,例如若要對某個口的幾位設為輸入,某幾位設為輸出,就可以通過上面的置1、置0方法來實現(xiàn)。

  (3)中  斷

  ATmega128中斷資源豐富,一共有35個中斷源,在ICCAVR的iom128v.h頭文件中給出了這些中斷源對應的中斷向量表。當用到相應的中斷時,首先應設置好對應的中斷向量。用ICCAVR設置ATmega128中斷的方法與Keil51設置中斷的方法截然不同,例如若需要將ATmega128的串口0設置為中斷接收,就必須在程序中做如下設置:

  #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC

  否則程序不能中斷接收,延長開發(fā)過程。

  ATmega128作為一種功能強大的芯片,相信會在不同的領域發(fā)揮不同的作用,為此需要人們不斷地提高對ATmega128的認識。而且ATmega128與AVR等其他單片機如ATmega8、ATmega103、AT90S8535系列有相同的開發(fā)方法,掌握了ATmega128就可以在開發(fā)其他AVR類型的單片機時應用自如。

 

參考文獻

1  USA:Atmel Corporation.ATmega128(L)Datasheet,2001

2  丁化成.AVR單片機應用設計.北京:北京航空航天大學出版社,2002

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉