AVR單片機原理及其在機電系統(tǒng)控制電路中的應(yīng)用課件_第1頁
AVR單片機原理及其在機電系統(tǒng)控制電路中的應(yīng)用課件_第2頁
AVR單片機原理及其在機電系統(tǒng)控制電路中的應(yīng)用課件_第3頁
AVR單片機原理及其在機電系統(tǒng)控制電路中的應(yīng)用課件_第4頁
AVR單片機原理及其在機電系統(tǒng)控制電路中的應(yīng)用課件_第5頁
已閱讀5頁,還剩433頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

2022/12/9機電系統(tǒng)控制電路設(shè)計12AVR單片機原理與應(yīng)用2.1單片機電路開發(fā)過程2.2AVR單片機概述2.3Atmega128硬件體系結(jié)構(gòu)2.4基于Atmega128的電路系統(tǒng)設(shè)計2022/12/8機電系統(tǒng)控制電路設(shè)計12AVR單片機原理2022/12/9機電系統(tǒng)控制電路設(shè)計22.1單片機電路開發(fā)過程明確系統(tǒng)設(shè)計硬件電路編寫程序調(diào)試和仿真下載程序軟硬件聯(lián)調(diào)功能優(yōu)化程序優(yōu)化2022/12/8機電系統(tǒng)控制電路設(shè)計22.1單片機電路開發(fā)2022/12/9機電系統(tǒng)控制電路設(shè)計3明確系統(tǒng)系統(tǒng)要求:利用AVR單片機來控制一個紅色LED和綠色LED。電路加電后,兩個LED均點亮,1s后熄滅,然后點亮綠色的LED,1s以后,綠色的LED熄滅,然后紅色的LED點亮1s。最后紅色的LED和綠色的LED以1Hz左右的頻率閃爍。需要考慮的元器件:AVR單片機一片、DC/DC轉(zhuǎn)換模塊、發(fā)光二極管若干、電容若干、電阻若干、晶振一個、按鈕一個等。2.1單片機電路開發(fā)過程2022/12/8機電系統(tǒng)控制電路設(shè)計3明確系統(tǒng)系統(tǒng)要求:利2022/12/9機電系統(tǒng)控制電路設(shè)計4設(shè)計硬件電路2.1單片機電路開發(fā)過程2022/12/8機電系統(tǒng)控制電路設(shè)計4設(shè)計硬件電路2.1單2022/12/9機電系統(tǒng)控制電路設(shè)計5編寫程序2.1單片機電路開發(fā)過程2022/12/8機電系統(tǒng)控制電路設(shè)計5編寫程序2.1單片機2022/12/9機電系統(tǒng)控制電路設(shè)計6調(diào)試和仿真編譯項目2.1單片機電路開發(fā)過程2022/12/8機電系統(tǒng)控制電路設(shè)計6調(diào)試和仿真編譯項目22022/12/9機電系統(tǒng)控制電路設(shè)計7程序下載下載程序2.1單片機電路開發(fā)過程返回2022/12/8機電系統(tǒng)控制電路設(shè)計7程序下載下載程序2.2022/12/9機電系統(tǒng)控制電路設(shè)計82.2AVR單片機概述ATMEL公司是世界上高級半導(dǎo)體產(chǎn)品設(shè)計、制造和行銷的領(lǐng)先者,產(chǎn)品包括了微處理器、可編程邏輯器件、非易失性存儲器、安全芯片、混合信號及RF射頻集成電路。1997年,由ATMEL公司挪威設(shè)計中心的A先生與V先生利用ATMEL公司的Flash新技術(shù),共同研發(fā)出RISC精簡指令集的高速8位單片機,簡稱AVR。相對于出現(xiàn)較早也較為成熟的51系列單片機,AVR系列單片機片內(nèi)資源更為豐富,接口也更為強大,同時由于其價格低等優(yōu)勢,在很多場合可以替代51系列單片機。2022/12/8機電系統(tǒng)控制電路設(shè)計82.2AVR單片機概2022/12/9機電系統(tǒng)控制電路設(shè)計92.2AVR單片機概述AVR單片機特點---速度快AVR微處理器

以更快的速度運行程序-MIPS/MHzAVRRISC–速度優(yōu)先5個并行數(shù)據(jù)總線32個累加器單時鐘周期8,16,24,32和64-bit算術(shù)操作增強的RISC指令集線性地址映射為速度而設(shè)計2時鐘周期的硬件乘法器嵌入式高速存儲器MIPS即MillionInstructionPerSecond的簡寫--計算機每秒種執(zhí)行的百萬指令數(shù)。是衡量計算機速度的指標(biāo)。2022/12/8機電系統(tǒng)控制電路設(shè)計92.2AVR單片機概2022/12/9機電系統(tǒng)控制電路設(shè)計102.2AVR單片機概述AVR單片機特點---片上資源豐富AVR微處理器

減小PCB尺寸AVR–ALLINSIDE高集成度 Flash程序存儲器

EEPROM數(shù)據(jù)存儲器 CPU

外部存儲器接口 PWM SRAM數(shù)據(jù)存儲器 TWI 8-bit定時器

硬件乘法器 SPI 16-bit定時器

中斷處理 U(S)ART 實時時鐘

上電復(fù)位 10-bitADC 輸入捕捉

看門狗定時器 掉電檢測 輸出比較

片內(nèi)振蕩器 模擬比較器 上拉電阻2022/12/8機電系統(tǒng)控制電路設(shè)計102.2AVR單片機2022/12/9機電系統(tǒng)控制電路設(shè)計112.2AVR單片機概述AVR單片機特點---代碼更少AVR微處理器

減小你的程序代碼AVRRISC–為最小代碼而設(shè)計5個并行數(shù)據(jù)總線32個累加器4個數(shù)據(jù)/堆棧指針8,16,24,32和64-bit算術(shù)操作增強的RISC指令集線性地址影射適應(yīng)ANSIC和匯編相比付出代價極小指令集由編譯專家建構(gòu)和調(diào)整2022/12/8機電系統(tǒng)控制電路設(shè)計112.2AVR單片機2022/12/9機電系統(tǒng)控制電路設(shè)計12傳統(tǒng)的折衷方式適合于

ANSIC速度傳統(tǒng)CISC傳統(tǒng)RISC代碼效率速度2.2AVR單片機概述AVR單片機特點---代碼更少2022/12/8機電系統(tǒng)控制電路設(shè)計12傳統(tǒng)的折衷方式適合2022/12/9機電系統(tǒng)控制電路設(shè)計13AVR微處理器

降低系統(tǒng)功耗每一個電子都被考慮在內(nèi):單時鐘周期執(zhí)行5個并行數(shù)據(jù)總線6種MCU睡眠模式最小幅度振蕩器0泄漏輸入1.8–6.0V工作電壓2.2AVR單片機概述AVR單片機特點---功耗更低2022/12/8機電系統(tǒng)控制電路設(shè)計13AVR微處理器22022/12/9機電系統(tǒng)控制電路設(shè)計142.2AVR單片機概述AVR單片機特點---可選擇型號種類多MEGAAVR ATmegaxxx (16KB-128KB)針對需要大程序容量的復(fù)雜應(yīng)用ClassicAVR AT90Sxxxx (1KB-8KB)針對需要大吞吐量,低功耗和中等程序容量的應(yīng)用TinyAVR ATtinyxx (1KB-2KB)針對需要低價格的低端8位MCU市場2022/12/8機電系統(tǒng)控制電路設(shè)計142.2AVR單片機2022/12/9機電系統(tǒng)控制電路設(shè)計152.2AVR單片機概述AVR單片機特點---可選擇型號種類多存儲器大小性能(1KB-2KB)(1KB-8KB)(16KB-128KB)完全兼容2022/12/8機電系統(tǒng)控制電路設(shè)計152.2AVR單片機2022/12/9機電系統(tǒng)控制電路設(shè)計16

低功耗mega8新產(chǎn)品已淘汰主流產(chǎn)品未來產(chǎn)品90S231390S2323/43tiny2890S8535mega161tiny1590S4433mega128mega890S8515tiny26mega32mega8515mega8535tiny13mega169mega162mega64

tiny2313mega256mega1690S1200tiny11/12mega329CANAVRmega1032.2AVR單片機概述AVR單片機產(chǎn)品更新?lián)Q代2022/12/8機電系統(tǒng)控制電路設(shè)計16低功耗mega82022/12/9機電系統(tǒng)控制電路設(shè)計17AVR的中低檔Tiny與AT90S系列產(chǎn)品2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計17AVR的中低檔Ti2022/12/9機電系統(tǒng)控制電路設(shè)計18AVR的中高檔Mega系列產(chǎn)品2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計18AVR的中高檔Me2022/12/9機電系統(tǒng)控制電路設(shè)計19ATtiny10/11/12特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計19ATtiny10/2022/12/9機電系統(tǒng)控制電路設(shè)計20ATtiny10/11/12特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計20ATtiny10/2022/12/9機電系統(tǒng)控制電路設(shè)計21ATtiny10/11/12特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計21ATtiny10/2022/12/9機電系統(tǒng)控制電路設(shè)計22ATtiny10/11/12特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計22ATtiny10/2022/12/9機電系統(tǒng)控制電路設(shè)計23AT90S1200單片機特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計23AT90S12002022/12/9機電系統(tǒng)控制電路設(shè)計24AT90S1200單片機特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計24AT90S12002022/12/9機電系統(tǒng)控制電路設(shè)計25AT90S8515單片機特點2022/12/8機電系統(tǒng)控制電路設(shè)計25AT90S85152022/12/9機電系統(tǒng)控制電路設(shè)計26AT90S8515單片機特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計26AT90S85152022/12/9機電系統(tǒng)控制電路設(shè)計27AT90S8515單片機特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計27AT90S85152022/12/9機電系統(tǒng)控制電路設(shè)計28ATmega8單片機特點2.2AVR單片機概述2022/12/8機電系統(tǒng)控制電路設(shè)計28ATmega8單片2022/12/9機電系統(tǒng)控制電路設(shè)計292.2AVR單片機概述ATmega8單片機特點2022/12/8機電系統(tǒng)控制電路設(shè)計292.2AVR單片機2022/12/9機電系統(tǒng)控制電路設(shè)計302.2AVR單片機概述ATmega8單片機特點2022/12/8機電系統(tǒng)控制電路設(shè)計302.2AVR單片機2022/12/9機電系統(tǒng)控制電路設(shè)計31引腳配置2.2AVR單片機概述ATmega8單片機特點返回2022/12/8機電系統(tǒng)控制電路設(shè)計31引腳配置2.2AV2022/12/9機電系統(tǒng)控制電路設(shè)計322.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性Atmega128引腳配置及說明Atmega128的存儲器組織Atmega128的重要寄存器介紹Atmega128基本配置電路2022/12/8機電系統(tǒng)控制電路設(shè)計322.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計33Atmega128的I/O端口2.3Atmega128硬件體系結(jié)構(gòu)Atmega128的中斷處理Atmega128的定時/計數(shù)器Atmega128的USARTAtmega128的TWI(I2C)2022/12/8機電系統(tǒng)控制電路設(shè)計33Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計342.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性高性能、低功耗的AVR8位微處理器先進的RISC結(jié)構(gòu)–133條指令–大多數(shù)可以在一個時鐘周期內(nèi)完成–32x8通用工作寄存器+外設(shè)控制寄存器–全靜態(tài)工作–工作于16MHz時性能高達16MIPS–只需兩個時鐘周期的硬件乘法器2022/12/8機電系統(tǒng)控制電路設(shè)計342.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計352.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性非易失性的程序和數(shù)據(jù)存儲器–128K字節(jié)的系統(tǒng)內(nèi)可編程Flash

壽命:10,000次寫/擦除周期–4K字節(jié)的EEPROM

壽命:100,000次寫/擦除周期–4K字節(jié)的內(nèi)部SRAM–多達64K字節(jié)的優(yōu)化的外部存儲器空間–可以對鎖定位進行編程以實現(xiàn)軟件加密–可以通過SPI實現(xiàn)系統(tǒng)內(nèi)編程2022/12/8機電系統(tǒng)控制電路設(shè)計352.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計362.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性JTAG接口(與IEEE1149.1標(biāo)準(zhǔn)兼容)–遵循JTAG標(biāo)準(zhǔn)的邊界掃描功能–支持?jǐn)U展的片內(nèi)調(diào)試–通過JTAG接口實現(xiàn)對Flash,EEPROM,熔絲位和鎖定位的編程2022/12/8機電系統(tǒng)控制電路設(shè)計362.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計372.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性外設(shè)特點–兩個具有獨立的預(yù)分頻器和比較器功能的8位定時器/計數(shù)器–兩個具有預(yù)分頻器、比較功能和捕捉功能的16位定時器/計數(shù)器–具有獨立預(yù)分頻器的實時時鐘計數(shù)器–兩路8位PWM–輸出比較調(diào)制器–6路分辨率可編程(2到16位)的PWM2022/12/8機電系統(tǒng)控制電路設(shè)計372.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計382.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性外設(shè)特點–8路10位ADC8個單端通道,7個差分通道,2個具有可編程增益(1x,10x,或200x)的差分通道–面向字節(jié)的兩線接口–兩個可編程的串行USART–可工作于主機/從機模式的SPI串行接口–具有獨立片內(nèi)振蕩器的可編程看門狗定時器–片內(nèi)模擬比較器2022/12/8機電系統(tǒng)控制電路設(shè)計382.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計392.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性特殊的處理器特點–上電復(fù)位以及可編程的掉電檢測–片內(nèi)經(jīng)過標(biāo)定的RC振蕩器–片內(nèi)/片外中斷源–6種睡眠模式:空閑模式、ADC噪聲抑制模式、省電模式、掉電模式、Standby2022/12/8機電系統(tǒng)控制電路設(shè)計392.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計402.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性模式以及擴展的Standby模式–可以通過軟件進行選擇的時鐘頻率–通過熔絲位可以選擇ATmega103兼容模式–全局上拉禁止功能

I/O和封裝–53個可編程I/O口線–64引腳TQFP與64引腳MLF封裝2022/12/8機電系統(tǒng)控制電路設(shè)計402.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計412.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性工作電壓–2.7-5.5VATmega128L–4.5-5.5VATmega128速度等級–0-8MHzATmega128L–0-16MHzATmega1282022/12/8機電系統(tǒng)控制電路設(shè)計412.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計422.3Atmega128硬件體系結(jié)構(gòu)Atmega128芯片特性返回2022/12/8機電系統(tǒng)控制電路設(shè)計422.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計43Atmega128引腳配置及說明2022/12/8機電系統(tǒng)控制電路設(shè)計43Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計442.3Atmega128硬件體系結(jié)構(gòu)Atmega128引腳配置及說明VCC――數(shù)字電路的電源。GND――地。端口A(PA7..PA0)――端口A為8位雙向I/O口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口A為三態(tài)。端口B(PB7..PB0)――端口B為8位雙向I/O口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口B為三態(tài)。2022/12/8機電系統(tǒng)控制電路設(shè)計442.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計452.3Atmega128硬件體系結(jié)構(gòu)Atmega128引腳配置及說明端口C(PC7..PC0)――端口C為8位雙向I/O口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口C為三態(tài)。端口D(PD7..PD0)――端口D為8位雙向I/O口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口D為三態(tài)。2022/12/8機電系統(tǒng)控制電路設(shè)計452.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計462.3Atmega128硬件體系結(jié)構(gòu)Atmega128引腳配置及說明端口F(PF7..PF0)――端口F為ADC的模擬輸入引腳。如果不作為ADC的模擬輸入,端口F可以作為8位雙向I/O口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口F為三態(tài)。如果使能了JTAG接口,則復(fù)位發(fā)生時引腳PF7(TDI)、PF5(TMS)和PF4(TCK)的上拉電阻使能。端口F也可以作為JTAG接口。端口G(PG4..PG0)――端口G為5位雙向I/O口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口G為三態(tài)。2022/12/8機電系統(tǒng)控制電路設(shè)計462.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計472.3Atmega128硬件體系結(jié)構(gòu)Atmega128引腳配置及說明RESET――復(fù)位輸入引腳。超過最小門限時間的低電平將引起系統(tǒng)復(fù)位。低于門限時間的脈沖不能保證可靠復(fù)位。XTAL1――反向振蕩器放大器及片內(nèi)時鐘操作電路的輸入。XTAL2――反向振蕩器放大器的輸出。AVCC――AVCC為端口F以及ADC轉(zhuǎn)換器的電源,需要與VCC相連接,即使沒有使用ADC也應(yīng)該如此。使用ADC時應(yīng)該通過一個低通濾波器與VCC連接。AREF――AREF為ADC的模擬基準(zhǔn)輸入引腳。PEN――PEN是SPI串行下載的使能引腳。在上電復(fù)位時保持PEN為低電平將使器件進入SPI串行下載模式。在正常工作過程中PEN引腳沒有其他功能。返回2022/12/8機電系統(tǒng)控制電路設(shè)計472.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計482.3Atmega128硬件體系結(jié)構(gòu)Atmega128基本配置電路Atmega128單片機復(fù)位電路時鐘電路下載電路電源2022/12/8機電系統(tǒng)控制電路設(shè)計482.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計49Atmega128基本配置電路電源模塊

任何電路控制系統(tǒng),首要解決的問題是電源問題。對于單片機控制系統(tǒng)而言,電源系統(tǒng)的穩(wěn)定性決定著控制系統(tǒng)的穩(wěn)定性,也是系統(tǒng)能否可靠工作的前提條件。如何設(shè)計一個單片機控制系統(tǒng)的電源?這是我們設(shè)計過程中首要解決的問題。2022/12/8機電系統(tǒng)控制電路設(shè)計49Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計50Atmega128基本配置電路復(fù)位電路復(fù)位電路可以由簡單的RC電路構(gòu)成,但在對穩(wěn)定性有較高要求的應(yīng)用場合,一般要采用專用的復(fù)位芯片(如MAX809/810等)。這里給出常見的RC復(fù)位電路,可以滿足一般應(yīng)用的需要。

系統(tǒng)上電復(fù)位:在系統(tǒng)上電時,通過電阻R1向電容C1充電,當(dāng)C1兩端的電壓未達到高電平的門限電壓時,Reset端輸出為低電平,系統(tǒng)處于復(fù)位狀態(tài);當(dāng)C1兩端的電壓達到高電平的門限電壓時,Reset端輸出為高電平,系統(tǒng)進入正常工作狀態(tài)。

手動復(fù)位:當(dāng)按下復(fù)位按鈕S1時,C1兩端的電荷被放掉,Reset端輸出為低電平,系統(tǒng)進入復(fù)位狀態(tài),再重復(fù)以上的充電過程,系統(tǒng)進入正常工作狀態(tài)。2022/12/8機電系統(tǒng)控制電路設(shè)計50Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計51Atmega128基本配置電路復(fù)位電路MAX809是一種單一功能的微處理器復(fù)位芯片,用于監(jiān)控微控制器和其他邏輯系統(tǒng)的電源電壓。它可以在上電、掉電和節(jié)電情況下向微控制器提供復(fù)位信號。當(dāng)電源電壓低于預(yù)設(shè)的門檻電壓時,器件會發(fā)出復(fù)位信號,直到在一段時間內(nèi)電源電壓又恢復(fù)到高于門檻電壓為止。從圖中可以看出,MAX809是低電平有效的復(fù)位器件,而同類的MAX810是高電平有效的復(fù)位輸出。MAX809復(fù)位電路2022/12/8機電系統(tǒng)控制電路設(shè)計51Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計52Atmega128基本配置電路上電復(fù)位:當(dāng)電源電壓低于上電復(fù)位門限(VPOT)時,MCU復(fù)位。外部復(fù)位:當(dāng)引腳RESET上的低電平持續(xù)時間大于最小脈沖寬度時MCU復(fù)位。看門狗復(fù)位:當(dāng)看門狗使能并且看門狗定時器超時時復(fù)位發(fā)生。掉電檢測復(fù)位:當(dāng)?shù)綦姍z測復(fù)位功能使能,且電源電壓低于掉電檢測復(fù)位門限(VBOT)時MCU即復(fù)位。JTAGAVR復(fù)位:當(dāng)復(fù)位寄存器為1時MCU即復(fù)位。ATmega128有5個復(fù)位源:2022/12/8機電系統(tǒng)控制電路設(shè)計52Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計53Atmega128基本配置電路ATmega128復(fù)位邏輯2022/12/8機電系統(tǒng)控制電路設(shè)計53Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計54Atmega128基本配置電路ATmega128復(fù)位特性2022/12/8機電系統(tǒng)控制電路設(shè)計54Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計55Atmega128基本配置電路上電復(fù)位時序MCU啟動過程,RESET連接到VCC2022/12/8機電系統(tǒng)控制電路設(shè)計55Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計56Atmega128基本配置電路上電復(fù)位時序MCU啟動過程,RESET由外電路控制2022/12/8機電系統(tǒng)控制電路設(shè)計56Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計57Atmega128基本配置電路外部復(fù)位時序工作過程中發(fā)生外部復(fù)位2022/12/8機電系統(tǒng)控制電路設(shè)計57Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計58看門狗定時器溢出時將產(chǎn)生持續(xù)時間為1個CK周期的復(fù)位脈沖。在脈沖的下降沿,延時定時器開始對tTOUT

記數(shù)。Atmega128基本配置電路看門狗復(fù)位時序2022/12/8機電系統(tǒng)控制電路設(shè)計58看2022/12/9機電系統(tǒng)控制電路設(shè)計59Atmega128基本配置電路看門狗定時器

看門狗定時器的設(shè)定可以調(diào)解看門狗復(fù)位的時間間隔。看門狗定時器由獨立的1Mhz片內(nèi)振蕩器驅(qū)動。不同供電電壓,振蕩器頻率不同。通過設(shè)置看門狗定時器的預(yù)分頻器可以調(diào)節(jié)看門狗復(fù)位的時間間隔??撮T狗復(fù)位指令WDR用來復(fù)位看門狗定時器。此外,禁止看門狗定時器或發(fā)生復(fù)位時定時器也被復(fù)位。復(fù)位時間有8個選項。如果沒有及時復(fù)位定時器,一旦時間超過復(fù)位周期,ATmega128就復(fù)位,并執(zhí)行復(fù)位向量指向的程序。2022/12/8機電系統(tǒng)控制電路設(shè)計59Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計60看門狗定時器預(yù)分頻器選項Atmega128基本配置電路看門狗定時器2022/12/8機電系統(tǒng)控制電路設(shè)計60看門狗定時器預(yù)分頻2022/12/9機電系統(tǒng)控制電路設(shè)計61Atmega128基本配置電路看門狗定時器

要實現(xiàn)看門狗定時器的功能,必須了解看門狗定時器控制寄存器-WDTCR。Bits7..5–Res:保留保留位,讀操作返回值為零。2022/12/8機電系統(tǒng)控制電路設(shè)計61Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計62Atmega128基本配置電路看門狗定時器Bit4–WDCE:看門狗修改使能清零WDE時必須先置位WDCE,否則不能禁止看門狗。一旦置位,硬件將在緊接的4個時鐘周期之后將其清零。

要實現(xiàn)看門狗定時器的功能,必須了解看門狗定時器控制寄存器-WDTCR。2022/12/8機電系統(tǒng)控制電路設(shè)計62Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計63Atmega128基本配置電路看門狗定時器Bit3–WDE:看門狗使能WDE為"1"時,看門狗使能,否則看門狗將被禁止。只有在WDCE為"1"時WDE才能清零。以下為關(guān)閉看門狗的步驟:1.在同一個指令內(nèi)對WDCE和WDE寫"1",即使WDE已經(jīng)為"1"。2.在緊接的4個時鐘周期之內(nèi)對WDE寫"0"。2022/12/8機電系統(tǒng)控制電路設(shè)計63Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計64Atmega128基本配置電路看門狗定時器Bits2..0–WDP2,WDP1,WDP0:看門狗定時器預(yù)分頻器2,1,和02022/12/8機電系統(tǒng)控制電路設(shè)計64Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計65Atmega128基本配置電路軟件設(shè)置看門狗定時器2022/12/8機電系統(tǒng)控制電路設(shè)計65Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計66Atmega128基本配置電路時鐘電路所謂時鐘,實際上就是以一個特定頻率連續(xù)不斷出現(xiàn)的方波。單片機在每一個方波的上升沿執(zhí)行指令。一條指令如果能在一個時鐘周期(即方波的一個周期)內(nèi)執(zhí)行完,成為“單周期指令”,否則稱為“多周期指令”。2022/12/8機電系統(tǒng)控制電路設(shè)計66Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計67Atmega128基本配置電路時鐘電路

應(yīng)當(dāng)注意的是,這里所說的“一個指令”,指的是一條匯編語句,而不是C語句。一條C語句可能會被編譯成若干條匯編語句,而不同的C編譯器編譯的結(jié)果可能是不同的,即便是同一個C編譯器,在不同條件下對同一條C語句進行編譯的結(jié)果也可能是不同的。這就意味著,無法預(yù)知一條C語句將占用多少個時鐘周期(即運行多長時間)。這就是用C語言對單片機進行編程的缺點,在某些對時序要求極高的情況下,人們通常采用匯編語言或者將C語言與匯編語言混合使用。但對于初學(xué)者而言,用C語言對單片機進行編程簡單易學(xué),且足以滿足大部分的需要。2022/12/8機電系統(tǒng)控制電路設(shè)計67Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計68Atmega128基本配置電路時鐘電路2022/12/8機電系統(tǒng)控制電路設(shè)計68Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計69Atmega128基本配置電路時鐘電路2022/12/8機電系統(tǒng)控制電路設(shè)計69Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計70Atmega128基本配置電路時鐘電路程序內(nèi)部顯示時鐘軟件設(shè)置時鐘頻率2022/12/8機電系統(tǒng)控制電路設(shè)計70Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計71芯片有如下幾種通過熔絲位選擇的時鐘源Atmega128基本配置電路時鐘電路2022/12/8機電系統(tǒng)控制電路設(shè)計71芯片有如下幾種通過2022/12/9機電系統(tǒng)控制電路設(shè)計72Atmega128基本配置電路時鐘電路AVR系列單片機在仿真調(diào)試之前,首先必須對AVR的熔絲位和鎖定位進行配置。如果配置不當(dāng),則可能造成單片機不能正常工作,嚴(yán)重時可能導(dǎo)致單片機死鎖。因此,對單片機熔絲位和鎖定位的正確配置顯得尤為重要。

熔絲位是對單片機具體功能和工作模式的限定,其正確配置與否直接影響到單片機能否正常工作;鎖定位是對單片機的程序和數(shù)據(jù)進行加密,以防止單片機中的程序和數(shù)據(jù)被讀出或?qū)懭?。在進行配置時,一般先配置熔絲位,再配置鎖定位。2022/12/8機電系統(tǒng)控制電路設(shè)計72Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計73ATmega128的熔絲位共有3個字節(jié):熔絲位擴展字節(jié)、熔絲位高字節(jié)和熔絲位低字節(jié)。Atmega128基本配置電路時鐘電路軟件設(shè)置熔絲位2022/12/8機電系統(tǒng)控制電路設(shè)計73A2022/12/9機電系統(tǒng)控制電路設(shè)計74Atmega128基本配置電路下載電路當(dāng)RESET位低電平時,可以通過串行SPI總線對Flash及EEPROM進行編程。串行接口包括SCK、MOSI(輸入)及MISO(輸出)。RESET為低之后,應(yīng)在執(zhí)行編程/擦除操作之前執(zhí)行編程允許指令。不是所有的器件都使用SPI引腳專用于內(nèi)部SPI接口。注意,在串行載入的說明中,MOSI與MISO分別描述連續(xù)數(shù)據(jù)的輸入與輸出。在ATmega128中,這些引腳映射為PDI與PDO。SPI串行編程及JTAG編程2022/12/8機電系統(tǒng)控制電路設(shè)計74Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計75Atmega128基本配置電路下載電路Atmega128SPI串行編程引腳映射盡管SPI編程接口重用SPII/O模塊,但其中有一點不同:MOSI/MISO引腳映射到SPII/O模塊的PB2與PB3在編程接口并不使用。而PE0與PE1用來傳遞數(shù)據(jù).2022/12/8機電系統(tǒng)控制電路設(shè)計75Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計76Atmega128基本配置電路下載電路通過JTAG接口進行編程需要控制4個JTAG專用引腳:TCK、TMS、TDI及TDO。reset及時鐘引腳不用控制。JTAG(JointTestActionGroup;聯(lián)合測試行動小組)是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE1149.1兼容),主要用于芯片內(nèi)部測試?,F(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如MCU、DSP、FPGA器件等。JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進行預(yù)編程現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。2022/12/8機電系統(tǒng)控制電路設(shè)計76Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計77Atmega128基本配置電路下載電路返回2022/12/8機電系統(tǒng)控制電路設(shè)計77Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計782.3Atmega128硬件體系結(jié)構(gòu)Atmega128的CPU內(nèi)核結(jié)構(gòu)2022/12/8機電系統(tǒng)控制電路設(shè)計782.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計79CPU的主要任務(wù)是保證程序的正確執(zhí)行。因此它必須能夠訪問存儲器,執(zhí)行運算,控制外設(shè)以及處理中斷。為了得到最大程度的性能以及并行性,AVR采用了Harvard結(jié)構(gòu),具有獨立的數(shù)據(jù)和程序總線。程序存儲器的指令通過一級流水線運行。CPU在執(zhí)行一條指令的同時讀取下一條指令(在本文稱為預(yù)取)。這個概念實現(xiàn)了指令的單時鐘周期運行。程序存儲器為可以在線編程的FLASH??焖僭L問寄存器文件包括32個8位通用工作寄存器,而且都可以在一個時鐘周期內(nèi)訪問。從而實現(xiàn)單時鐘周期的ALU操作。在典型的ALU操作過程中,兩個位于寄存器文件中的操作數(shù)同時被訪問,然后執(zhí)行相應(yīng)的運算,結(jié)果再被送回寄存器文件。整個過程僅需要一個時鐘周期。Atmega128的CPU內(nèi)核結(jié)構(gòu)2022/12/8機電系統(tǒng)控制電路設(shè)計79CPU的主要任務(wù)2022/12/9機電系統(tǒng)控制電路設(shè)計802.3Atmega128硬件體系結(jié)構(gòu)Atmega128的存儲器組織Flash程序存儲器SRAM數(shù)據(jù)存儲器

EEPROM數(shù)據(jù)存儲器2022/12/8機電系統(tǒng)控制電路設(shè)計802.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計81Flash程序存儲器Atmega128的存儲器組織ATmega128具有128K字節(jié)的在線編程Flash。因為所有的AVR指令為16位或32位,故爾FLASH組織成64Kx16的形式??紤]到軟件安全性,F(xiàn)lash程序存儲器分為兩個區(qū):引導(dǎo)程序區(qū)和應(yīng)用程序區(qū)。Flash存儲器至少可以擦寫10,000次。ATmega128的程序計數(shù)器PC為16位,因此可以尋址64K的程序存儲器。

可利用SPI或JTAG接口實現(xiàn)對Flash的串行下載。2022/12/8機電系統(tǒng)控制電路設(shè)計81Flash程序存儲2022/12/9機電系統(tǒng)控制電路設(shè)計82Flash程序存儲器Atmega128的存儲器組織

一般而言,C程序中的變量可以選擇存放在SRAM或者EEPROM中,而常量可以選擇放在SRAM或者Flash中。標(biāo)準(zhǔn)C的變量類型一般都適用于單片機的C語言,如char、float、double、unsignedint等。CodeVisionAVRC編譯器中的數(shù)據(jù)類型如下表所示。2022/12/8機電系統(tǒng)控制電路設(shè)計82Flash程序存儲2022/12/9機電系統(tǒng)控制電路設(shè)計83

AVR單片機中的Flash本來是用作程序存儲空間的,但可以利用其存儲容量大的特點,在剩余足夠空間的前提下,將一些在使用中沒有必要改變的數(shù)值或者字符串等存放在Flash中。當(dāng)然,也可以將其存放在SRAM中,但Flash比SRAM的空間大好幾倍;此外這些數(shù)值或字符串在使用過程中沒有必要改動,存放在Flash中會比存放在SRAM更合適。CodeVisionAVRC編譯器對于用戶沒有指定只能保存在Flash中的字符串,在啟動時將字符串從程序存儲區(qū)復(fù)制到數(shù)據(jù)存儲區(qū)。Char*ptr_to_sram=”thisisplacedinSRAM”;上面例子中沒有指定字符串只存儲于Flash,因此啟動時會將該字符串復(fù)制到數(shù)據(jù)存儲空間。Charflash*ptr_to_flash=”thisisplacedinFlash”;在上例中,用戶使用了flash關(guān)鍵字,因此字符串只存儲于Flash空間。Flash程序存儲器Atmega128的存儲器組織2022/12/8機電系統(tǒng)控制電路設(shè)計83AVR單片2022/12/9機電系統(tǒng)控制電路設(shè)計84Flash程序存儲器Atmega128的存儲器組織2022/12/8機電系統(tǒng)控制電路設(shè)計84Flash程序存儲2022/12/9機電系統(tǒng)控制電路設(shè)計85Atmega128的存儲器組織SRAM數(shù)據(jù)存儲器

ATmega128支持兩種不同的SRAM配置普通模式兼容模式2022/12/8機電系統(tǒng)控制電路設(shè)計85Atmega1282022/12/9機電系統(tǒng)控制電路設(shè)計86EEPROM數(shù)據(jù)存儲器Atmega128的存儲器組織ATmega128包含4K字節(jié)的EEPROM。它是作為一個獨立的數(shù)據(jù)空間而存在的,可以按字節(jié)讀寫。EEPROM的壽命至少為100,000次(擦除)。EEPROM的訪問由地址寄存器,數(shù)據(jù)寄存器和控制寄存器決定。EEPROM的訪問寄存器位于I/O空間。當(dāng)執(zhí)行EEPROM讀操作時,CPU會停止工作4個周期,然后再執(zhí)行后續(xù)指令;當(dāng)執(zhí)行EEPROM寫操作時,CPU會停止工作2個周期,然后再執(zhí)行后續(xù)指令。2022/12/8機電系統(tǒng)控制電路設(shè)計86EEPROM數(shù)據(jù)存2022/12/9機電系統(tǒng)控制電路設(shè)計87

CodeVisionAVRC編譯器中,可以用eeprom關(guān)鍵字將全局變量分配至EEPROM中,如:

eeprominta;也可以在定義時對變量初始化,如:eeprominta=1;CodeVisionAVRC編譯器中還可以將數(shù)組、字符串、結(jié)構(gòu)體分配至EEPROM中,如:eepromchara[4]={0,1,2,3};//數(shù)組Chareeprom*ptr_to_eeprom=”thisisplacedinEEPROM”;//字符串Eepromstructa{charb;intc;chare[15];}f;在CodeVisionAVRC編譯器中可以直接訪問EEPROM中的全局變量,與訪問SRAM中的數(shù)據(jù)方式相同。EEPROM數(shù)據(jù)存儲器Atmega128的存儲器組織2022/12/8機電系統(tǒng)控制電路設(shè)計87CodeV2022/12/9機電系統(tǒng)控制電路設(shè)計88EEPROM數(shù)據(jù)存儲器Atmega128的存儲器組織2022/12/8機電系統(tǒng)控制電路設(shè)計88EEPROM數(shù)據(jù)存EEPROM地址寄存器-EEARH和EEARL機電系統(tǒng)控制電路設(shè)計89EEPROM數(shù)據(jù)存儲器Bits15..12–Res:保留保留位,讀操作返回值為零。在寫數(shù)據(jù)時要寫入0以保證與未來產(chǎn)品的兼容。Bits11..0–EEAR11..0:EEPROM地址EEARH和EEARL指定了4K字節(jié)的EEPROM空間。EEPROM的地址是線性的,從0到4096。EEAR的初始值沒有定義。在訪問EEPROM之前必須為其賦予正確的數(shù)據(jù)。EEPROM地址寄存器-EEARH和EEARL機電系統(tǒng)控制2022/12/9機電系統(tǒng)控制電路設(shè)計90EEPROM數(shù)據(jù)存儲器EEPROM數(shù)據(jù)寄存器-EEDRBits7..0–EEDR7.0:EEPROM數(shù)據(jù)對于EEPROM寫操作,EEDR是需要寫到EEAR單元的數(shù)據(jù);對于EEPROM讀操作,EEDR是從地址EEAR讀取的數(shù)據(jù)。2022/12/8機電系統(tǒng)控制電路設(shè)計90EEPROM數(shù)據(jù)存2022/12/9機電系統(tǒng)控制電路設(shè)計91EEPROM數(shù)據(jù)存儲器EEPROM控制寄存器-EECRBits7..4–Res:保留保留位,讀操作返回值為零。Bit3–EERIE:EEPROM就緒中斷使能若SREG的I為"1",則置位EERIE使能EEPROM就緒中斷。清零EERIE則禁止此中斷。當(dāng)EEWE清零時EEPROM就緒中斷即可發(fā)生。Bit2–EEMWE:EEPROM主機寫使能EEMWE決定設(shè)置EEWE為"1"是否可以啟動EEPROM寫操作。當(dāng)EEMWE為"1"時,在4個時鐘周期內(nèi)置位EEWE將把數(shù)據(jù)寫入EEPROM的指定地址;若EEMWE為"0",則EEWE不起作用。EEMWE置位后4個周期,硬件對其清零。2022/12/8機電系統(tǒng)控制電路設(shè)計91EEPROM數(shù)據(jù)存2022/12/9機電系統(tǒng)控制電路設(shè)計92EEPROM數(shù)據(jù)存儲器EEPROM控制寄存器-EECRBit1–EEWE:EEPROM寫使能當(dāng)EEPROM數(shù)據(jù)和地址設(shè)置好之后,需置位EEWE以便將數(shù)據(jù)寫入EEPROM。此時EEMWE必須置位,否則EEPROM寫操作將不會發(fā)生。Bit0–EERE:EEPROM讀使能當(dāng)EEPROM地址設(shè)置好之后,需置位EERE以便將數(shù)據(jù)讀入EEAR。EEPROM數(shù)據(jù)的讀取只需要一條指令,且無需等待。讀取EEPROM時CPU要停止4個時鐘周期。用戶在讀取EEPROM時應(yīng)該檢測EEWE。如果一個寫操作正在進行,就無法讀取EEPROM,也無法改變寄存器EEAR。2022/12/8機電系統(tǒng)控制電路設(shè)計92EEPROM數(shù)據(jù)存2022/12/9機電系統(tǒng)控制電路設(shè)計93voidEEPROMwrite(intlocation,unsignedchardatabyte){ unsignedcharsavedSREG; EEAR=location;//setaddress EEDR=databyte;//setdata savedSREG=SREG;//keepsettingsoitcanberestored CLI(); //disableinterrupts EECR|=BIT(EEMWE); //set"writeenable"bit EECR|=BIT(EEWE);//set"write"bit SREG=savedSREG;//restoreSREG EEAR=0;}EEPROM數(shù)據(jù)存儲器向EEPROM中寫數(shù)據(jù)程序2022/12/8機電系統(tǒng)控制電路設(shè)計93voidEEPR2022/12/9機電系統(tǒng)控制電路設(shè)計94unsignedcharEEPROMread(intlocation){ EEAR=location;//setaddress EECR|=BIT(EERE);//set"readenable"bit EEAR=0; return(EEDR);}EEPROM數(shù)據(jù)存儲器從EEPROM中讀數(shù)據(jù)程序2022/12/8機電系統(tǒng)控制電路設(shè)計94unsigned2022/12/9機電系統(tǒng)控制電路設(shè)計95EEPROM數(shù)據(jù)存儲器返回2022/12/8機電系統(tǒng)控制電路設(shè)計95EEPROM數(shù)據(jù)存2022/12/9機電系統(tǒng)控制電路設(shè)計962.3Atmega128硬件體系結(jié)構(gòu)Atmega128的重要寄存器介紹MCU控制寄存器-MCUCRBit7–SRE:外部SRAM/XMEM使能SRE為"1"時外部存儲器接口使能。引腳AD7:0,A15:8,ALE,WR和RD工作于第二功能,且自動按照要求配置端口方向寄存器。SRE清零將使外部SRAM無效,相關(guān)端口可以當(dāng)作普通I/O口使用。Bit6–SRW10:等待狀態(tài)選擇位對于ATmega103兼容模式,SRW10寫"1“將使能等待狀態(tài),在讀/寫過程中插入一個時鐘周期。2022/12/8機電系統(tǒng)控制電路設(shè)計962.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計972.3Atmega128硬件體系結(jié)構(gòu)Atmega128的重要寄存器介紹MCU控制寄存器-MCUCRBit5–SE:睡眠使能為了使MCU在執(zhí)行SLEEP指令后進入睡眠模式,SE必須置位。為了確保進入睡眠模式是程序員的有意行為,建議僅在SLEEP指令的前一條指令置位SE。一旦喚醒立即清除SE。Bits4..2–SM2..0:睡眠模式選擇位2022/12/8機電系統(tǒng)控制電路設(shè)計972.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計982.3Atmega128硬件體系結(jié)構(gòu)Atmega128的重要寄存器介紹MCU控制寄存器-MCUCR睡眠模式選擇2022/12/8機電系統(tǒng)控制電路設(shè)計982.3Atmeg2022/12/9機電系統(tǒng)控制電路設(shè)計99MCU控制寄存器包含了電源管理的控制位。睡眠模式可以使應(yīng)用程序關(guān)閉MCU中沒有使用的模塊,從而降低功耗。AVR具有不同的睡眠模式,允許用戶根據(jù)自己的應(yīng)用要求實施剪裁。進入睡眠模式的條件是置位寄存器MCUCR的SE,然后執(zhí)行SLEEP指令。具體哪一種模式(空閑模式、ADC噪聲抑制模式、掉電模式、省電模式、Standby模式和擴展Standby模式)由MCUCR的SM2、SM1和SM0決定。Atmega128的重要寄存器介紹MCU控制寄存器-MCUCR2022/12/8機電系統(tǒng)控制電路設(shè)計99MCU控制寄存器2022/12/9機電系統(tǒng)控制電路設(shè)計100Atmega128的重要寄存器介紹MCU控制寄存器-MCUCRBit1–IVSEL:中斷向量選擇當(dāng)IVSEL為"0“時,中斷向量位于Flash存儲器的起始地址;當(dāng)IVSEL為"1“時,中斷向量轉(zhuǎn)移到Boot區(qū)的起始地址。實際的Boot區(qū)起始地址由熔絲位BOOTSZ確定。Bit0–IVCE:中斷向量修改使能改變IVSEL時IVCE必須置位。在IVCE或IVSEL寫操作之后4個時鐘周期,IVCE被硬件清零。如前面所述,置位IVCE將禁止中斷。2022/12/8機電系統(tǒng)控制電路設(shè)計100Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計101Atmega128的重要寄存器介紹MCU控制和狀態(tài)寄存器-MCUCSRBit7–JTD:JTAG接口禁用當(dāng)這一位為‘0’,且JTAG使能熔絲位JTAGEN被編程時JTAG接口使能;否則JTAG接口功能禁止。若JTAG接口未與其他JTAG電路連接,JTD位應(yīng)置為‘1’,以避免JTAG接口TDO引腳的靜態(tài)電流。Bit4–JTRF:JTAG復(fù)位標(biāo)志若復(fù)位是由JTAG復(fù)位寄存器不為'0’且執(zhí)行了的AVR_RESET指令引發(fā)的,JTRF置位。通過寫入'0’或上電復(fù)位的方法可以將其清零。2022/12/8機電系統(tǒng)控制電路設(shè)計101Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計102Atmega128的重要寄存器介紹MCU控制和狀態(tài)寄存器-MCUCSRBit3–WDRF:看門狗復(fù)位標(biāo)志看門狗復(fù)位發(fā)生時置位。上電復(fù)位將使其清零,也可以通過寫”0”來清除。Bit2–BORF:掉電檢測復(fù)位標(biāo)志掉電檢測復(fù)位發(fā)生時置位。上電復(fù)位將使其清零,也可以通過寫”0”來清除。Bit1–EXTRF:外部復(fù)位標(biāo)志外部復(fù)位發(fā)生時置位。上電復(fù)位將使其清零,也可以通過寫”0”來清除。Bit0–PORF:上電復(fù)位標(biāo)志上電復(fù)位發(fā)生時置位。只能通過寫”0”來清除。2022/12/8機電系統(tǒng)控制電路設(shè)計102Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計103Atmega128的重要寄存器介紹狀態(tài)寄存器-SREG狀態(tài)寄存器包含了最近執(zhí)行的算術(shù)指令的結(jié)果信息。這些信息可以用來改變程序流程以實現(xiàn)條件操作。狀態(tài)寄存器的內(nèi)容只有在ALU運算結(jié)束后才會更新。這樣,在多數(shù)情況下就不需要專門的比較指令了,從而使系統(tǒng)運行更快速,代碼效率更高。在進入中斷例程時狀態(tài)寄存器不會自動保存;中斷返回時也不會自動恢復(fù)。這些工作需要軟件來處理。2022/12/8機電系統(tǒng)控制電路設(shè)計103Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計104Atmega128的重要寄存器介紹狀態(tài)寄存器-SREG?Bit7–I:全局中斷使能置位時使能全局中斷。單獨的中斷使能由其他獨立的控制寄存器控制。如果I清零,則不論單獨中斷標(biāo)志置位與否,都不會產(chǎn)生中斷。任意一個中斷發(fā)生后I清零,而執(zhí)行RETI指令后置位以使能中斷。I也可以通過SEI和CLI指令來置位和清零。?Bit6–T:位拷貝存儲位拷貝指令BLD和BST利用T作為目的或源地址。BST把寄存器的某一位拷貝到T,而BLD把T拷貝到寄存器的某一位。2022/12/8機電系統(tǒng)控制電路設(shè)計104Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計105Atmega128的重要寄存器介紹狀態(tài)寄存器-SREG?Bit5–H:半進位標(biāo)志半進位標(biāo)志H表示算術(shù)操作發(fā)生了半進位。此標(biāo)志對于BCD運算非常有用。?Bit4–S:符號位,S=N⊕VS為負(fù)數(shù)標(biāo)志N與2的補碼溢出標(biāo)志V的異或。?Bit3–V:2的補碼溢出標(biāo)志支持2的補碼運算。2022/12/8機電系統(tǒng)控制電路設(shè)計105Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計106Atmega128的重要寄存器介紹狀態(tài)寄存器-SREG?Bit2–N:負(fù)數(shù)標(biāo)志表明算術(shù)或邏輯操作結(jié)果為負(fù)。?Bit1–Z:零標(biāo)志表明算術(shù)或邏輯操作結(jié)果為零。?Bit0–C:進位標(biāo)志表明算術(shù)或邏輯操作發(fā)生了進位。返回2022/12/8機電系統(tǒng)控制電路設(shè)計106Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計107Atmega128的I/O端口2022/12/8機電系統(tǒng)控制電路設(shè)計107Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計108作為通用數(shù)字I/O使用時,所有AVRI/O端口都具有真正的讀-修改-寫功能。輸出緩沖器具有對稱的驅(qū)動能力,可以輸出或吸收大電流,直接驅(qū)動LED。所有的端口引腳都具有與電壓無關(guān)的上拉電阻。每個端口都有三個I/O存儲器地址:數(shù)據(jù)寄存器–PORTx數(shù)據(jù)方向寄存器–DDRx端口輸入引腳–PINx數(shù)據(jù)寄存器和數(shù)據(jù)方向寄存器為讀/寫寄存器,而端口輸入引腳為只讀寄存器。當(dāng)寄存器SFIOR的上拉禁止位PUD置位時所有端口的全部引腳的上拉電阻都被禁止。Atmega128的I/O端口2022/12/8機電系統(tǒng)控制電路設(shè)計108作為通用數(shù)字I/2022/12/9機電系統(tǒng)控制電路設(shè)計109端口A數(shù)據(jù)寄存器-PORTAAtmega128的I/O端口端口A數(shù)據(jù)方向寄存器-DDRA端口A輸入引腳地址-PINA2022/12/8機電系統(tǒng)控制電路設(shè)計109端口A數(shù)據(jù)寄存2022/12/9機電系統(tǒng)控制電路設(shè)計110端口G數(shù)據(jù)寄存器-PORTGAtmega128的I/O端口端口G數(shù)據(jù)方向寄存器-DDRG端口G輸入引腳地址-PING2022/12/8機電系統(tǒng)控制電路設(shè)計110端口G數(shù)據(jù)寄存2022/12/9機電系統(tǒng)控制電路設(shè)計111Atmega128的I/O端口特殊功能IO寄存器-SFIOR?Bit2–PUD:禁止上拉電阻置位時,即使將寄存器DDxn和PORTxn配置為使能上拉電阻({DDxn,PORTxn}=0b01),I/O端口的上拉電阻也被禁止。2022/12/8機電系統(tǒng)控制電路設(shè)計111Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計112Atmega128的I/O端口端口引腳配置不論如何配置DDxn,都可以通過讀取PINxn寄存器來獲得引腳電平。如果有引腳未被使用,建議給這些引腳賦予一個確定電平。2022/12/8機電系統(tǒng)控制電路設(shè)計112Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計113Atmega128的I/O端口端口引腳配置最簡單的保證未用引腳具有確定電平的方法是使能內(nèi)部上拉電阻。但要注意的是復(fù)位時上拉電阻將被禁用。如果復(fù)位時的功耗也有嚴(yán)格要求則建議使用外部上拉或下拉電阻。不推薦直接將未用引腳與VCC或GND連接,因為這樣可能會在引腳偶然作為輸出時出現(xiàn)沖擊電流。2022/12/8機電系統(tǒng)控制電路設(shè)計113Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計114Atmega128的I/O端口端口A的第二功能2022/12/8機電系統(tǒng)控制電路設(shè)計114Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計115Atmega128的I/O端口端口B的第二功能2022/12/8機電系統(tǒng)控制電路設(shè)計115Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計116Atmega128的I/O端口端口C的第二功能端口引腳第二功能PC7 A15(為外部存儲器接口的地址高字節(jié))PC6 A14(為外部存儲器接口的地址高字節(jié))PC5 A13(為外部存儲器接口的地址高字節(jié))PC4 A12(為外部存儲器接口的地址高字節(jié))PC3 A11(為外部存儲器接口的地址高字節(jié))PC2 A10(為外部存儲器接口的地址高字節(jié))PC1 A9(為外部存儲器接口的地址高字節(jié))PC0 A8(為外部存儲器接口的地址高字節(jié))2022/12/8機電系統(tǒng)控制電路設(shè)計116Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計117Atmega128的I/O端口端口D的第二功能2022/12/8機電系統(tǒng)控制電路設(shè)計117Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計118Atmega128的I/O端口端口E的第二功能2022/12/8機電系統(tǒng)控制電路設(shè)計118Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計119Atmega128的I/O端口端口F的第二功能2022/12/8機電系統(tǒng)控制電路設(shè)計119Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計120Atmega128的I/O端口端口G的第二功能2022/12/8機電系統(tǒng)控制電路設(shè)計120Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計121Atmega128的I/O端口利用I/O端口實現(xiàn)八段數(shù)碼管輸出顯示由八段LED構(gòu)成各LED陰極或陽極并在一起,稱為“位選線”:共陰、共陽其余8個引腳各自引出,稱為“段選線”,各段可以分別控制2022/12/8機電系統(tǒng)控制電路設(shè)計121Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計122Atmega128的I/O端口數(shù)字0123456789共陰極0x3F0x060x5B0x4F0x660x6D0x7D0x070x7F0x6F共陽極0xC00xF90xA40xB00x990x920x820xF80x800x90共陰極、共陽極數(shù)碼管段碼表2022/12/8機電系統(tǒng)控制電路設(shè)計122Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計123Atmega128的I/O端口利用I/O端口點亮四個7段數(shù)碼管返回2022/12/8機電系統(tǒng)控制電路設(shè)計123Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計124Atmega128的中斷處理2.3Atmega128硬件體系結(jié)構(gòu)在程序運行期間,發(fā)生非預(yù)期的緊急事件通常是為了避免查詢方式的程序設(shè)計用得最多的是外部中斷與定時器中斷外部中斷:按鍵程序定時器中斷:定時與循環(huán)掃描等應(yīng)用場合中斷服務(wù)程序中斷發(fā)生時,主程序暫停,跳轉(zhuǎn)到中斷服務(wù)程序,稱為“響應(yīng)中斷”執(zhí)行完畢后返回主程序繼續(xù)運行中斷的概念2022/12/8機電系統(tǒng)控制電路設(shè)計124Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計125Atmega128的中斷處理中斷屬于一種對事件的實時處理過程。中斷源可能隨時停止單片機當(dāng)前正在處理的工作,轉(zhuǎn)而去處理中斷事件,待中斷時間處理完畢之后,再返回原來工作的斷點處,繼續(xù)原來的工作。對于單片機的中斷系統(tǒng),需要了解這幾個概念:中斷源、中斷信號、中斷向量、中斷優(yōu)先級、中斷嵌套、中斷控制(屏蔽)、中斷響應(yīng)條件、中斷響應(yīng)過程(中斷服務(wù)程序)。如何很好的理解中斷概念?2022/12/8機電系統(tǒng)控制電路設(shè)計125Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計126Atmega128的中斷處理中斷源的理解中斷源是指能夠向單片機發(fā)出中斷請求信號的部件和設(shè)備。對于單片機來講,往往存在多個中斷源。中斷源一般可分為內(nèi)部中斷源和外部中斷源。單片機內(nèi)部集成的許多功能模塊,如定時器、串行通訊口、模/數(shù)轉(zhuǎn)換器等,它們在正常工作時往往無需CPU參與,而當(dāng)處于某種狀態(tài)或達到某個規(guī)定值需要程序控制時,會通過發(fā)出中斷請求信號通知CPU。這一類的中斷源位于單片機內(nèi)部,稱作內(nèi)部中斷源。內(nèi)部中斷源在中斷條件成立時,一般通過片內(nèi)硬件會自動產(chǎn)生中斷請求信號,無須用戶介入,使用方便。內(nèi)部中斷是CPU管理片內(nèi)資源的一種高效的途徑。系統(tǒng)中的外部設(shè)備也可以用作中斷源,這時要求它們能夠產(chǎn)生一個中斷信號(通常是高(低)電平或者電平跳變的上升(下降)沿),送到單片機的外部中斷請求引腳供CPU檢測。這些中斷源位于單片機外部,稱為外部中斷源。通常用作外部中斷源的有輸入輸出設(shè)備、控制對象、以及故障源等。2022/12/8機電系統(tǒng)控制電路設(shè)計126Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計127Atmega128的中斷處理中斷信號的理解中斷信號是指內(nèi)部或外部中斷源產(chǎn)生的中斷申請信號,這個中斷信號往往是電信號的某種變化形式,通常有以下幾種類型:脈沖的上升沿或下降沿(上升沿觸發(fā)型或下降沿觸發(fā)型)高電平或低電平(電平觸發(fā)型)電平的變化(狀態(tài)變化觸發(fā)型)對于單片機來講,不同的中斷源,產(chǎn)生什么類型的中斷信號能夠觸發(fā)申請中斷,取決于芯片內(nèi)部的硬件結(jié)構(gòu),而且通常也可以通過用戶的軟件來設(shè)定。單片機的硬件系統(tǒng)會自動對這些中斷信號進行檢測。一旦檢測到規(guī)定的信號出現(xiàn),將會把相應(yīng)的中斷標(biāo)志位置“1”(在I/O空間的控制或狀態(tài)寄存器中),通知CPU進行處理。2022/12/8機電系統(tǒng)控制電路設(shè)計127Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計128Atmega128的中斷處理中斷向量的理解中斷源發(fā)出的請求信號被CPU檢測到之后,如果單片機的中斷控制系統(tǒng)允許響應(yīng)中斷,CPU會自動轉(zhuǎn)移,執(zhí)行一個固定的程序空間地址中的指令。這個固定的地址稱作中斷入口地址,也叫做中斷向量。中斷入口地址往往是由單片機內(nèi)部硬件決定的。一個單片機有若干個中斷源,每個中斷源都有著自己的中斷向量。這些中斷向量一般在程序存儲空間中占用一個連續(xù)的地址空間段,稱為中斷向量區(qū)。由于一個中斷向量通常僅占幾個字節(jié)或一條指令的長度,所以在中斷向量區(qū)一般不放置中斷服務(wù)程序的。中斷服務(wù)程序一般放置在程序存儲器的其它地方,而在中斷向量處放置一條跳轉(zhuǎn)到中斷服務(wù)程序的指令。這樣,CPU響應(yīng)中斷后,首先自動轉(zhuǎn)向執(zhí)行中斷向量中的轉(zhuǎn)移指令,再跳轉(zhuǎn)執(zhí)行中斷服務(wù)程序。2022/12/8機電系統(tǒng)控制電路設(shè)計128Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計129Atmega128的中斷處理中斷優(yōu)先級的理解單片機系統(tǒng)一般有多個中斷源,當(dāng)某一時刻同時有多個中斷產(chǎn)生時,單片機該如何處理呢?這就有了中斷優(yōu)先級的概念。通常,單片機可以接收若干個中斷源發(fā)出的中斷請求。但在同一時刻,MCU只能響應(yīng)這些中斷請求中的其中一個。為了避免MCU同時響應(yīng)多個中斷請求帶來的混亂,在單片機中為每一個中斷源賦予一個特定的中斷優(yōu)先級。一旦有多個中斷請求信號,MCU先響應(yīng)中斷優(yōu)先級高的中斷請求,然后再逐次響應(yīng)優(yōu)先級次一級的中斷。中斷優(yōu)先級也反映了各個中斷源的重要程度,同時也是分析中斷嵌套的基礎(chǔ)。2022/12/8機電系統(tǒng)控制電路設(shè)計129Atmega122022/12/9機電系統(tǒng)控制電路設(shè)計130Atmega128的中斷處理中斷優(yōu)先級的理解對于中斷優(yōu)先級的確定,通常是由單片機的硬件結(jié)構(gòu)規(guī)定的。一般的確定規(guī)則方式為兩種:某中斷對應(yīng)的中斷向量地址越小,其中斷優(yōu)先級越高(硬件確定方式)。通過軟件對中斷控制寄存器的設(shè)定,改變中斷的優(yōu)先級(用戶軟件可設(shè)置方式,注意:AVR不支持)。實際上,MCU在兩種情況下需要對中斷的優(yōu)先級進行判斷:第一種情況為同時有兩(多)個中斷源申請中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論