AVR單片機(jī)編程一般采用怎樣的方式?
AVR單片機(jī)硬件結(jié)構(gòu)采取8位機(jī)與16位機(jī)的折中策略,即采用局部寄存器存堆(32個寄存器文件)和單體高速輸入/輸出的方案(即輸入捕獲寄存器、輸出比較匹配寄存器及相應(yīng)控制邏輯)。提高了指令執(zhí)行速度(1Mips/MHz),克服了瓶頸現(xiàn)象,增強(qiáng)了功能;同時又減少了對外設(shè)管理的開銷,相對簡化了硬件結(jié)構(gòu),降低了成本。故AVR單片機(jī)在軟/硬件開銷、速度、性能和成本諸多方面取得了優(yōu)化平衡,是高性價比的單片機(jī)。
ISP是In System Program的縮寫,意思是在系統(tǒng)編程。目前的AVR芯片基本上都具備ISP接口,可通過ISP接口進(jìn)行編程。它一共使用了兩條電源線:VCC、GND,三條信號線:SCK、MOSI、MISO,以及復(fù)位線:RESET。由于僅僅使用了幾條數(shù)據(jù)線,所以我們亦常將其稱為串行編程。值得注意的是,雖然下載器端使用的信號線名為SCK、MOSI、MISO,但AVR MCU的信號端不一定是名為SCK、MOSI、MISO。AVR的串行編程方式有很多種,如:
(1)STK200/STK300:并口下載器多采用該燒寫方式,最早期的一種燒寫方式,支持型號少,燒寫速度低,不支持AVR Studio。
(2)STK500:ATMEL最推薦的編程方式,由于采用ATMEL官方的STK500固件,使得它可燒寫全系列AVR(若對固件進(jìn)行升級亦可支持未來的AVR型號),燒寫速度非???,支持AVR Studio。
(3)AVRISP(準(zhǔn)STK500):由于采用ATMEL官方的STK500固件,使得它可燒寫大部分AVR(若對固件進(jìn)行升級亦可支持未來的AVR型號),燒寫速度非??欤С諥VR Studio。
(4)AVRISPmkII:由于采用ATMEL官方的AVRISPmkII固件,使得它可燒寫大部分AVR(若對固件進(jìn)行升級亦可支持未來的AVR型號),燒寫速度非常快,支持AVR Studio。
(5)當(dāng)然還有其它的ISP方式,但已經(jīng)那些均不是最為常見的串行編程方式,在此不在作一一介紹。
(2)高壓/并行編程。
AVR的高壓編程/并行編程,實(shí)際上是更早出現(xiàn)的編程方法,它功能強(qiáng)大,但需要:
1)連接較多的引腳(故稱“并行編程”)
2)使用12V電壓(故稱“高壓編程”)
聯(lián)合起來一般叫高壓/并行編程。實(shí)際上,有些編程是高壓/串行編程,如Attiny13。(Attiny13端口非常少)高壓/并行編程(理論上)能修復(fù)任何熔絲位,例如:
1)Attiny13/24/2313、Atmega8/48/88/168等AVR的RESET端口與IO端口是共用的,由于這類AVR的引腳一般較少,(如Attiny13僅有6個IO口),經(jīng)常出現(xiàn)IO不夠用的情況,需要將RESET端口設(shè)置為IO端口使用,然而,一旦將RESET設(shè)置為IO,便無法再進(jìn)行ISP編程了,更無法使用ISP恢復(fù)RESET功能,因?yàn)镮SP編程需要RESET功能。然而,這種情況下,使用高壓/并行編程,可以恢復(fù)RESET功能,(注意:RESET端口與IO端口是共用的AVR,具備debugWIRE功能,“dW”熔絲位必須為啟動狀態(tài))因?yàn)楦邏?并行編程不需要RESET功能。
2)當(dāng)設(shè)置錯了熔絲位導(dǎo)致芯片鎖死,這種情況下,使用高壓/并行編程,可恢復(fù)熔絲位。
AVR單片機(jī)吸取了PIC及8051等單片機(jī)的優(yōu)點(diǎn),改進(jìn):
1、程序存儲器為價格低廉、可擦寫1萬次以上、指令長度單元為16位(字)的FlashROM(即程序存儲器寬度為16位,按8位字節(jié)計算時應(yīng)乘2)。而數(shù)據(jù)存貯器為8位。因此AVR還是屬于8位單片機(jī)。
2、采用CMOS技術(shù)和RISC架構(gòu),實(shí)現(xiàn)高速(50ns)、低功耗(μA)、具有SLEEP(休眠)功能。AVR的一條指令執(zhí)行速度可達(dá)50ns(20MHz),而耗電則在1uA~2.5mA間。AVR采用Harvard結(jié)構(gòu),以及一級流水線的預(yù)取指令功能,即對程序的讀取和數(shù)據(jù)的操作使用不同的數(shù)據(jù)總線,因此,當(dāng)執(zhí)行某一指令時,下一指令被預(yù)先從程序存儲器中取出,這使得指令可以在每一個時鐘周期內(nèi)被執(zhí)行。
3、工業(yè)級產(chǎn)品。具有大電流10~20mA(輸出電流)或40mA(吸電流)的特點(diǎn),可直接驅(qū)動LED、SSR或繼電器。有看門狗定時器(WDT)安全保護(hù),可防止程序走飛,提高產(chǎn)品的抗干擾能力。
4、通用數(shù)字I/O口的輸入輸出特性與PIC的HI/LOW輸出及三態(tài)高阻抗HI-Z輸入類同,同時可設(shè)定類同與8051結(jié)構(gòu)內(nèi)部有上拉電阻的輸入端功能,便于作為各種應(yīng)用特性所需(多功能I/O口),AVR的I/O口是真正的I/O口,能正確反映I/O口的輸入/輸出的真實(shí)情況。
5、像8051一樣,有多個固定中斷向量入口地址,可快速響應(yīng)中斷,而不是像PIC一樣所有中斷都在同一向量地址,需要以程序判別后才可響應(yīng),這會浪費(fèi)且失去控制時機(jī)的最隹機(jī)會。
AVR單片機(jī)內(nèi)嵌高質(zhì)量的Flash程序存儲器,擦寫方便,支持ISP和IAP,便于產(chǎn)品的調(diào)試、開發(fā)、生產(chǎn)、更新。內(nèi)嵌長壽命的EEProm可長期保存關(guān)鍵數(shù)據(jù),避免斷電丟失。片內(nèi)大容量的RAM不僅能滿足一般場合的使用,同時也更有效的支持使用高級語言開發(fā)系統(tǒng)程序,并可像MCS-51單片機(jī)那樣擴(kuò)展外部RAM。