AVR單片機(jī)是1997年由ATMEL公司研發(fā)出的增強(qiáng)型內(nèi)置Flash的RISC(Reduced Instruction Set CPU) 精簡(jiǎn)指令集高速8位單片機(jī)。可以廣泛應(yīng)用于計(jì)算機(jī)外部設(shè)備、工業(yè)實(shí)時(shí)控制、儀器儀表、通訊設(shè)備、家用電器等各個(gè)領(lǐng)域。AVR單片機(jī)是 Atmel 公司 1997 年推出的 RISC 單片機(jī)。RISC(精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī))是相對(duì)于CISC(復(fù)雜指令系統(tǒng)計(jì)算機(jī))而言的。RISC 并非只是簡(jiǎn)單地去減少指令,而是通過(guò)使計(jì)算機(jī)的結(jié)構(gòu)更加簡(jiǎn)單合理而提高運(yùn)算速度的。
AVR單片機(jī)ATmega16的主要特點(diǎn):
1) 采用 RISC 結(jié)構(gòu)的AVR內(nèi)核單片機(jī)。
131 條機(jī)器指令, 大多數(shù)指令為單個(gè)系統(tǒng)時(shí)鐘周期執(zhí)行的指令;
32 個(gè) 8 位通用工作寄存器;
全靜態(tài)工作方式(Fully Static Operation)。
工作在 16 MHz 時(shí)具有 16 MIPS 的性能。(注: ATmega16L 系列最大工作頻率為 8 MHz);
內(nèi)部配備有 2 個(gè)時(shí)鐘周期的硬件乘法器。
2)片內(nèi)自帶大容量, 非易失的程序和數(shù)據(jù)存儲(chǔ)器
16KB 在線可編程(ISP, In-System Programming)Flash 程序存儲(chǔ)器(擦寫次數(shù)》10 000), 采用 Boot load 技術(shù)支持IAP(In-Application Programming)功能。
1KB片內(nèi) SRAM 數(shù)據(jù)存儲(chǔ)器, 可以實(shí)現(xiàn) 3 級(jí)鎖定的程序加密;
512 字節(jié)片內(nèi) ISP 的EEPROM 數(shù)據(jù)存儲(chǔ)器(擦鞋次數(shù)》100 000);
3) 片內(nèi)含JTAG接口
支持符合 JTAG 標(biāo)準(zhǔn)(與IEEE 1149.1 標(biāo)準(zhǔn)兼容)的邊界掃描功能, 用于芯片檢測(cè);
支持?jǐn)U展的片內(nèi)在線調(diào)試功能;
可通過(guò) JTAG 接口對(duì)片內(nèi) Flash, EEPROM, 熔絲位和加密鎖定位實(shí)現(xiàn)下載編程;
4) 外圍接口
2 個(gè)帶有分別獨(dú)立和可設(shè)置預(yù)分頻的 8 位定時(shí)/計(jì)數(shù)器;
1 個(gè)帶有可設(shè)置預(yù)分頻器, 具有比較, 捕捉功能的 16 位定時(shí)/計(jì)數(shù)器;
片內(nèi)含獨(dú)立振蕩器的實(shí)時(shí)時(shí)鐘 RTC;
4 路 PWM 通道;
8 路 10 位 ADC;
面向字節(jié)的兩線接口 TWI(Two—Wire Serial Interface, 完全兼容 IIC 總線硬件接口);
1 個(gè)可編程, 增強(qiáng)型全雙工, 支持同步/異步通信的串行接口 USART;
1 個(gè)可工作于主機(jī)/從機(jī)模式的 SPI (Serial Peripheral Interface Bus)串行接口(支持 ISP 程序下載);
片內(nèi)含有可編程的具有獨(dú)立片內(nèi)震蕩期的看門狗定時(shí)器 WDT;
5) 其他特點(diǎn)
內(nèi)含上電復(fù)位電路以及可編程的掉電檢測(cè)復(fù)位電路 BOD(Brown-out Detection);
片內(nèi)含有 1/2/4/8 MHz 經(jīng)過(guò)標(biāo)定的, 可校正的 RC 震蕩器, 可作為系統(tǒng)時(shí)鐘使用;
21 種內(nèi)外部中斷源;
6 種休眠模式(空閑模式、ADC 噪聲抑制模式、省電模式、掉電模式、Standby 模式以及
擴(kuò)展的Standby 模式), 支持節(jié)電方式工作;
32 個(gè)可編程 I/O 口。 封裝方式有: 40腳 PDIP 封裝, 44 腳 TQFP 封裝, 與44 腳的 MLF 封裝;
工作電壓: ATmega16L 為 2.7~5.5V, ATmega16 為 4.5~5.5V;
運(yùn)行速度: ATmega16L為 0~8MHz, ATmega16為0~16MHz;
功耗指標(biāo): ATmega16L 工作在 1MHz, 3V, 25攝氏度時(shí): 典型功耗為 1.1mA, 空閑模式為 0.35mA, 掉電模式為 《 1uA;
AVR 單片機(jī)的內(nèi)部結(jié)構(gòu)框圖:
avr單片機(jī)工作經(jīng)驗(yàn)總結(jié)
AVR與傳統(tǒng)類型的 相比,除了必須能實(shí)現(xiàn)原來(lái)的一些基本的功能,其在結(jié)構(gòu)體系、功能部件、性能和可靠性等多方面有很大的提高和改善。
但使用更好的器件只是為設(shè)計(jì)實(shí)現(xiàn)一個(gè)好的系統(tǒng)創(chuàng)造了一個(gè)好的基礎(chǔ)和可能性,如果還采用和沿襲以前傳統(tǒng)的硬件和軟件設(shè)計(jì)思想和方法的話,是不能用好AVR的,甚至也不能真正的了解AVR的特點(diǎn)和長(zhǎng)處。
功能越好的器件,需要具備更高技術(shù)和能力的人來(lái)使用和駕馭它。就象一部好的F1賽車,只有具備高超技術(shù)的駕駛員才能充分體會(huì)到車的特點(diǎn),并能最大限度的發(fā)揮出車的性能。
AVR具有上手入門快,開發(fā)方便簡(jiǎn)單的特點(diǎn),但要充分體會(huì)和發(fā)揮AVR的優(yōu)點(diǎn),還需要應(yīng)用工程師本身的硬軟件設(shè)計(jì)開發(fā)能力的不斷學(xué)習(xí)、實(shí)踐提高。
“外行看熱鬧,內(nèi)行看門道”,對(duì)于有一定基礎(chǔ)的和單片機(jī)系統(tǒng)設(shè)計(jì)開發(fā)的工程師,不妨先簡(jiǎn)單嘗試一下AVR。
開發(fā)環(huán)境與工具:PC+下載線+實(shí)際的系統(tǒng)板
PC上的開發(fā)軟件:
AVR Studio(Free)匯編+匯編調(diào)試+高級(jí)語(yǔ)言調(diào)試+軟件仿真
ICC、CVAVR、BASCOM-AVR 高級(jí)語(yǔ)言程序開發(fā)+程序下載。其中一個(gè)購(gòu)買正版全功能,作為主要的開發(fā)環(huán)境,其它使用DEMO版,作為輔助及參考。
AVR ISP下載線:
STK200 and STK200+ and STK300 ISP programmer。通過(guò)PC的打印機(jī)口,采用ISP技術(shù)將系統(tǒng)運(yùn)行代碼(HEX、BIN)和數(shù)據(jù)寫入AVR芯片的Flash和EEProm中,編程AVR的配置熔絲位和加密位。支持決大多數(shù)的AVR芯片、以及ATMEL的51兼容芯片89S8252、89S52等。在ICC、CVAVR、BASCOM-AVR、BASCOM-8051中都內(nèi)含對(duì)該下載線的支持程序。免費(fèi)專用的下載程序:SLISP、PonyProg2000等。
盡量不使用仿真器的建議:
在開發(fā)和調(diào)試系統(tǒng)程序時(shí),有許多人完全依賴于仿真器,一旦離開了仿真器時(shí)就感覺無(wú)從下手。其實(shí),由于AVR的Flash存貯器可方便的使用ISP技術(shù)在線的多次擦寫,因此建議盡量不使用(依賴)仿真器來(lái)開發(fā)和調(diào)試程序。
在實(shí)際開發(fā)過(guò)程中,程序的調(diào)試可以從下幾方面入手:
現(xiàn)在的高級(jí)語(yǔ)言編譯器(如C編譯器)可以產(chǎn)生效率很高的機(jī)器代碼,因此建議大家盡量使用高級(jí)語(yǔ)言編寫系統(tǒng)程序。
使用Atmel公司提供AVR Studio軟件模擬仿真環(huán)境,以及其他的軟件模擬仿真環(huán)境(BASCOM-AVR)。
盡可能使用高級(jí)語(yǔ)言編寫系統(tǒng)程序。
利用目標(biāo)板上的、LCD或異步串口。見附件“沒(méi)有仿真器的情況下如何開發(fā)AVR”的介紹。
提高的合理性:
盡量合理和充分使用AVR片內(nèi)的資源,如EEPROM、A/D、內(nèi)部的RC振蕩源。
盡量采用連接的外圍器件,大容量的存儲(chǔ)器、LCD控制器、打印機(jī)、不用8279(LED數(shù)碼管+鍵盤)而使用7279等。除了必須外擴(kuò)RAM(如語(yǔ)音和圖象),一般不提倡使用并行擴(kuò)展(573+譯碼電路),減小硬件和連線以及PCB板上錯(cuò)誤的出現(xiàn)概率,同時(shí)也提高了系統(tǒng)的可靠性。并行擴(kuò)展向串行擴(kuò)展是發(fā)展趨勢(shì)。現(xiàn)在有大量的新的外圍器件采用高速的,如A/D、D/A、RTC、存儲(chǔ)器等。
盡量使用以及在目標(biāo)板上預(yù)留ISP程序下載接口,或使用IAP技術(shù)。
優(yōu)點(diǎn):ISP接口與I/O的兼容性比JETAG好。
缺點(diǎn):不能在線調(diào)試
注意和掌握AVR配置熔絲位的使用:
系統(tǒng)晶振的選擇
.BOD的使用
啟動(dòng)延時(shí)
.Mega8的PC6引腳,RESET與通用I/O的轉(zhuǎn)換
.JETAG接口和通用I/O的轉(zhuǎn)換
啟動(dòng)向量的轉(zhuǎn)換,BOOT-LOAT區(qū)大小的設(shè)置
提高硬件可靠性的考慮:
。盡量采用片內(nèi)晶體、采用低頻率的系統(tǒng)時(shí)鐘、的輸出小幅度。
。選擇合適的啟動(dòng)延時(shí)參數(shù)
。使用BOD、片內(nèi)的看門狗
。合理休眠方式的使用
。不用I/O口設(shè)定輸出低電平
。利用內(nèi)部的EEProm和寄存器MCUCSR判斷復(fù)位標(biāo)志,進(jìn)行不同的處理
提高軟件設(shè)計(jì)的能力和水平:
盡量合理采用高級(jí)語(yǔ)言設(shè)計(jì)編寫系統(tǒng)程序。有許多人認(rèn)為使用匯編寫程序比較精簡(jiǎn),而用高級(jí)語(yǔ)言開發(fā)會(huì)浪費(fèi)很多程序空間,其實(shí)這是一種誤解。對(duì)一個(gè)有經(jīng)驗(yàn)的,而且非常熟悉某種單片機(jī)的匯編高手而言,他是能寫出比高級(jí)語(yǔ)言更精簡(jiǎn)的代碼。而對(duì)匯編不是很熟的開發(fā)者、或突然更換了一種新的單片機(jī),您能保證一定可以寫出比高級(jí)語(yǔ)言更簡(jiǎn)練的代碼嗎?
高級(jí)語(yǔ)言的優(yōu)越性是匯編語(yǔ)言不能比的:
。程序移植方便
。程序的堅(jiān)固性
。數(shù)學(xué)運(yùn)算的支持
。條理清晰的結(jié)構(gòu)化編程,程序的可維護(hù)性。
。可協(xié)同開發(fā)軟件,開發(fā)周期短。
現(xiàn)在的高級(jí)語(yǔ)言編譯器(如C編譯器)已可以產(chǎn)生代碼效率很高的機(jī)器代碼,因此建議大家能用高級(jí)語(yǔ)言實(shí)現(xiàn)的程序盡可能使用高級(jí)語(yǔ)言寫,在對(duì)速度和時(shí)序要求特嚴(yán)的場(chǎng)合可以采用混合編程的方法來(lái)解決。
更深入和全面的掌握各種串行通信協(xié)議的規(guī)程:
目前以大量的使用串行接口外圍芯片和各種通信接口,如RS232、兩線(I2C)、三線(SPI)、單、USB、CAN、TCP/IP等。開發(fā)人員和程序員應(yīng)了解低層協(xié)議,熟悉硬件怎樣和如何實(shí)現(xiàn)低層協(xié)議,如何定義可靠的上層應(yīng)用協(xié)議,以及低層協(xié)議驅(qū)動(dòng)同上層應(yīng)用協(xié)議之間的(中間層軟件的實(shí)現(xiàn))等。
硬件工程師的軟件編寫能力要提高,采用標(biāo)準(zhǔn)程序編寫方式、完善的軟件整體框架的設(shè)計(jì)、良好的數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu)系統(tǒng)。(計(jì)算機(jī)軟件專業(yè)的程序設(shè)計(jì)員對(duì)硬件不熟悉、大部分是在操作系統(tǒng)支持下編寫軟件,對(duì)低層接口和協(xié)議的驅(qū)動(dòng)層以及接口也不了解,往往也編寫不出好的單片機(jī)系統(tǒng)程序。)
通信接口的編寫應(yīng)盡量
采用中斷+緩沖區(qū),
分層+結(jié)構(gòu)化設(shè)計(jì),
盡量不使用輪循方式(降低AVR的效率)。參見URAT(RS232)驅(qū)動(dòng)+中間層軟件示例。
采用好的系統(tǒng)設(shè)計(jì)模式:
盡量不使用傳統(tǒng)的前后臺(tái)(中斷)系統(tǒng)設(shè)計(jì)模式,任務(wù)之間相互影響和干擾,無(wú)法定時(shí)操作。如設(shè)計(jì)一個(gè)采用動(dòng)態(tài)掃描方式驅(qū)動(dòng)的8位LED數(shù)碼管顯示+動(dòng)態(tài)掃描的4*4。
采用TimeTip+狀態(tài)機(jī)設(shè)計(jì)+CASE結(jié)構(gòu),實(shí)現(xiàn)多任務(wù)并行運(yùn)行系統(tǒng)設(shè)計(jì)方法。或時(shí)間觸發(fā)式的系統(tǒng)設(shè)計(jì)。(見:《時(shí)間觸發(fā)嵌入式系統(tǒng)設(shè)計(jì)模式》中國(guó)電力出版社 2004.6)
移植小型,如UCOS-II。在網(wǎng)上有些免費(fèi)的基于AVR的簡(jiǎn)潔的操作系統(tǒng)。
提高C語(yǔ)言的編程能力和軟件應(yīng)用水平:
熟悉和用好C中的數(shù)據(jù)結(jié)構(gòu)體、指針應(yīng)用、內(nèi)存管理等較高級(jí)的應(yīng)用。
熟悉和了解你所使用的高級(jí)語(yǔ)言開發(fā)平臺(tái)的特點(diǎn)。這些平臺(tái)是針對(duì)某一類處理器的,包含許多特殊的不兼容的語(yǔ)句和擴(kuò)展的結(jié)構(gòu)、語(yǔ)句、函數(shù)等。盡管使用方便,但由于其不透明性和時(shí)間的不確定性,因此要合理使用。如C中的getchar()、putchar()等。
AVR有多個(gè)開發(fā)平臺(tái),每個(gè)都有其特點(diǎn)和不足。能夠綜合使用這些平臺(tái),相互互補(bǔ),能夠提高開發(fā)效率。如通過(guò)ICC、CVAVR的程序生成器CodeWizard學(xué)習(xí)和了解AVR的硬件設(shè)置,簡(jiǎn)化計(jì)算,快速的生成程序基本模塊,如“一個(gè)URAT(RS232)低層驅(qū)動(dòng)+中間層軟件示例”。
-
AVR單片機(jī)
+關(guān)注
關(guān)注
22文章
608瀏覽量
55820
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
單片機(jī)硬件設(shè)計(jì)的經(jīng)驗(yàn)總結(jié)
SOPC Builder/Nios 學(xué)習(xí)經(jīng)驗(yàn)總結(jié)

空調(diào)維修的經(jīng)驗(yàn)總結(jié)
做四軸飛行器的經(jīng)驗(yàn)總結(jié)
開關(guān)電源測(cè)量的經(jīng)驗(yàn)總結(jié)
模擬電路設(shè)計(jì)經(jīng)驗(yàn)總結(jié)
根據(jù)學(xué)習(xí)經(jīng)驗(yàn)以及教學(xué)經(jīng)驗(yàn)總結(jié)出學(xué)習(xí)單片機(jī)的4個(gè)步驟

評(píng)論