《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > ATmega128在開發(fā)應(yīng)用中應(yīng)注意的問題

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

2009-08-24
作者:王少卿 霍迎輝
關(guān)鍵詞: 晶振 熔絲 I/O 上拉電阻 燒錄

  摘? 要: ATmega128是一種與51系列不同的單片機(jī),本文應(yīng)用ICCAVR和pony prog2000作為主要開發(fā)工具,通過分析其在開發(fā)過程中特殊的開發(fā)方法,從而達(dá)到更好地掌握和使用ATmega128的目的。

  關(guān)鍵詞: ATmega128? 單片機(jī)

?

  ATmega128是AVR系列中功能最強(qiáng)的單片機(jī),具有如下主要特點(diǎn):

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

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

  (3)具有JTAG接口:通過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)部振蕩器的可編程看門狗定時(shí)器等。

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

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

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

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

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

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

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

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

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

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

?

  (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(低功耗檢測(cè)使能)、BODLEVEL(低功耗檢測(cè)觸發(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í)間。

2?使用ATmega128芯片本身應(yīng)注意的問題

  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ò)方向)。

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

  DDRA=0x00;  //將PA口設(shè)置為輸入端口

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

  (2)位操作的使用方法

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

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

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

  (3)中? 斷

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

  #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC

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

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

?

參考文獻(xiàn)

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

2? 丁化成.AVR單片機(jī)應(yīng)用設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
浪潮色综合久久天堂| 欧美黄色一区| 亚洲国产精品久久久久秋霞影院| 亚洲天堂男人| 91久久久久久久久久久久久| 国产一区三区三区| 国产精品亚洲第一区在线暖暖韩国| 欧美激情成人在线视频| 欧美成人精品不卡视频在线观看| 久久久久久国产精品一区| 欧美亚洲视频一区二区| 亚洲欧美激情一区二区| 亚洲一区二区三区777| 在线中文字幕日韩| 99re6这里只有精品| 亚洲精品日韩综合观看成人91| 亚洲高清激情| 亚洲国产mv| 久久精品国产亚洲a| 午夜欧美视频| 午夜精品久久久久久久99樱桃| 亚洲欧美韩国| 小黄鸭精品密入口导航| 午夜亚洲性色视频| 新狼窝色av性久久久久久| 午夜精品国产精品大乳美女| 亚洲女性裸体视频| 亚洲欧美三级在线| 欧美一区二区| 久久av红桃一区二区小说| 久久国产精彩视频| 亚洲黄色av| 亚洲日本理论电影| 日韩视频一区二区三区在线播放| 亚洲精品中文字| 一本久久a久久精品亚洲| 中文在线资源观看网站视频免费不卡| 在线视频一区二区| 亚洲一区二区三区免费视频| 亚洲欧美日韩区| 欧美在线免费视频| 久久这里只精品最新地址| 麻豆成人综合网| 欧美激情视频免费观看| 欧美日韩免费高清| 国产精品日本一区二区| 国产精品一区二区三区久久| 国内不卡一区二区三区| 亚洲欧洲日本mm| 宅男噜噜噜66一区二区66| 亚洲与欧洲av电影| 久久精品一区二区三区中文字幕| 亚洲精品一区二区三区四区高清| 亚洲一区视频| 久久精品日产第一区二区| 免费观看不卡av| 欧美日韩在线播| 国产日韩久久| 亚洲精品1区2区| 在线亚洲电影| 欧美在线观看网站| 亚洲美女视频在线免费观看| 亚洲专区一区二区三区| 久久久夜色精品亚洲| 欧美高清在线观看| 国产精品乱码妇女bbbb| 精品动漫3d一区二区三区免费版 | 一区二区三区不卡视频在线观看 | 亚洲欧美激情在线视频| 久久综合国产精品| 欧美日韩一区二区视频在线观看| 国产区欧美区日韩区| 亚洲黄色有码视频| 亚洲欧美美女| 亚洲毛片一区二区| 欧美中文字幕在线视频| 欧美激情一区三区| 国产欧美一级| 亚洲精品免费网站| 久久aⅴ乱码一区二区三区| 亚洲视频香蕉人妖| 久久这里只有| 国产乱码精品一区二区三区忘忧草 | 午夜精品久久久99热福利| 日韩视频免费看| 久久久精品日韩| 欧美日韩在线三级| 尹人成人综合网| 亚洲在线视频观看| 亚洲乱码国产乱码精品精天堂 | 欧美激情导航| 国产一区视频网站| 中国av一区| 亚洲乱码国产乱码精品精天堂| 久久精品免费观看| 国产精品国产三级国产专播精品人| 狠狠做深爱婷婷久久综合一区| 亚洲视屏一区| 一区二区免费在线播放| 免费人成网站在线观看欧美高清| 国产精品美女久久| 艳妇臀荡乳欲伦亚洲一区| 亚洲乱码视频| 蜜桃精品久久久久久久免费影院| 国产日韩欧美精品综合| 亚洲图片在线观看| 中国av一区| 欧美激情综合五月色丁香| 激情综合色丁香一区二区| 亚洲欧美日韩国产综合在线| 亚洲伊人久久综合| 欧美日韩精品在线观看| 亚洲欧洲一区二区天堂久久| 亚洲激情网站| 麻豆精品91| 很黄很黄激情成人| 性久久久久久久久| 性欧美大战久久久久久久免费观看| 欧美色欧美亚洲另类二区| 亚洲人精品午夜| 亚洲日本电影在线| 欧美成人午夜激情在线| 亚洲成人在线视频网站| 亚洲欧洲免费视频| 免费成人av在线看| ●精品国产综合乱码久久久久| 欧美主播一区二区三区| 欧美伊人影院| 国产伦精品一区二区三区照片91| 亚洲调教视频在线观看| 宅男在线国产精品| 欧美日韩在线免费视频| 日韩西西人体444www| 99v久久综合狠狠综合久久| 玖玖综合伊人| 国户精品久久久久久久久久久不卡| 欧美一区二区成人| 久久男女视频| 国内精品久久久久影院 日本资源| 亚洲桃花岛网站| 亚洲视频一二三| 欧美日韩不卡| 亚洲国产网站| 一本大道av伊人久久综合| 欧美国产一区视频在线观看| 亚洲福利在线观看| 一本色道久久综合精品竹菊 | 国产精品一区二区久久国产| 亚洲在线视频免费观看| 欧美在线免费看| 精品不卡视频| 亚洲欧洲一区二区三区久久| 欧美精品免费在线| 在线亚洲精品| 久久爱另类一区二区小说| 黄色一区三区| 亚洲毛片一区二区| 国产精品国码视频| 亚洲欧美日韩第一区| 久久亚洲国产成人| 亚洲激情女人| 亚洲欧美精品在线观看| 国产日韩欧美中文| 亚洲大片精品永久免费| 欧美激情bt| 亚洲视频综合| 免费黄网站欧美| 亚洲乱码一区二区| 欧美一级午夜免费电影| 激情另类综合| 一区二区电影免费在线观看| 国产精品日韩在线| 久久国产乱子精品免费女| 欧美精品1区| 亚洲一区二区三区欧美| 久久伊人一区二区| 日韩视频精品在线观看| 久久精品亚洲精品| 亚洲人成人一区二区在线观看| 亚洲影音一区| 一区在线播放| 亚洲午夜精品网| 国产亚洲欧美色| 99xxxx成人网| 国际精品欧美精品| 亚洲一级一区| 黄色工厂这里只有精品| 亚洲少妇一区| 伊人成人在线视频| 亚洲一区久久| 尤物yw午夜国产精品视频| 亚洲影院免费观看| 亚洲高清视频中文字幕| 亚洲欧美资源在线| 亚洲黄色一区| 久久久久久久尹人综合网亚洲| 99视频国产精品免费观看| 久久躁日日躁aaaaxxxx| 一区二区三区不卡视频在线观看| 噜噜噜久久亚洲精品国产品小说|