版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章AVR基本原理及應用2.1ATmega16概述2.2通用I/O接口2.3中斷系統(tǒng)2.4定時器2.5USART2.6SPI小結
2.1ATmega16概述
ATmega16作為一款中檔功能的AVR單片機,較全面地體現了AVR的特點,不僅適合對AVR的了解和使用的入門學習,同時也滿足一般應用。本章將詳細講解ATmega16的特點、封裝、結構、I/O接口、中斷系統(tǒng)、定時器、USART和SPI。2.1.1ATmega16特點
ATmega16功能豐富、性能較高,具有下述主要特點:
采用先進RISC結構的AVR內核,大多數指令的執(zhí)行時間為單個指令周期;
片內含16KB的Flash程序存儲器、1KB的SRAM數據存儲器及512字節(jié)EEPROM數據存儲器;
片內含JTAG接口,支持擴展的片內ISP調試功能,可實現對片內Flash、EEPROM、熔絲位配置等的下載編程;豐富的外圍接口:3個定時/計數器接口、模擬比較器和模/數轉換器接口、面向字節(jié)的兩線接口TWI(兼容IIC硬件接口),1個USART和1個SPI串行接口等;
寬電壓:ATmega16L為2.7V~5.5V,ATmega16為4.5V~5.5V,ATmega16A為2.7V~5.5V;
高速度:ATmega16L為0~8MHz,ATmega16為0~16MHz,ATmega16A為0~16MHz;低功耗:ATmega16L工作在1MHz、3V、25℃時的典型功耗,正常模式為1.1mA,空間模式為0.35mA,掉電模式時小于1μA。
多達21種類型的內外部中斷源;
片內含上電復位電路以及可編程的掉電檢測復位電路BOD;
片內含有1MHz/2MHz/4MHz/8MHz經過標定、可校正的RC振蕩器,可作為系統(tǒng)時鐘使用;
有6種休眠模式支持節(jié)點方式工作。2.1.2ATmega16外部引腳
ATmega16有3種典型的封裝形式,分別為PDIP-40(雙列直插)、TQFP-44(方形)和MLF-44(貼片形式),相應的外部引腳封裝圖如圖2-1所示。圖2-1ATmega16的引腳與封裝示意圖
1.特殊功能引腳
ATmega16的特殊功能引腳,主要有電源引腳、系統(tǒng)晶振引腳和芯片復位引腳。
電源引腳包括VCC、AVCC、AREF和GND,其功能分別概括如下:
VCC:芯片供電(片內數字電路電源)輸入引腳,使用時連接到電源正極。
AVCC:端口A和片內ADC模擬電路電源輸入引腳,不使用ADC時,直接連接到電源正極;使用ADC時,應通過一個低通電源濾波器與VCC相連。
AREF:使用ADC時,可作為外部ADC參考源的輸入
引腳。
GND:芯片接地引腳,使用時接地。
系統(tǒng)晶振引腳為XTAL2和XTAL1,其功能概括如下:
XTAL2:片內反相振蕩放大器的輸出端。
XTAL1:片內反相振蕩放大器和內部時鐘操作電路的輸入端。
芯片復位引腳為RESET引腳,其主要功能是引起芯片的硬件復位,具體做法為在該引腳上施加一個最小脈沖寬度為1.5μs的低電平。
2.?I/O引腳
ATmega16的I/O引腳有4個8位端口,分成PA、PB、PC和PD,全部是可編程控制的雙(多)功能復用的I/O引腳。
4個端口的第一功能均是通用雙向數字輸入/輸出(I/O)口,每一位都可以由指令設置為獨立的輸入或輸出口。除了作為通用輸入/輸出引腳外,每個I/O引腳還具有第二功能,芯片引腳圖中括號內的名稱即代表其第二功能,需通過設置相應的寄存器使能位開啟。默認情況下,按第一功能處理。各引腳第一功能簡要說明如下:
當I/O口設置為輸入方式時,引腳內部還配置有上拉電阻,可通過編程設置為上拉有效或上拉無效。
芯片RESET復位后,所有I/O口的默認狀態(tài)為輸入方式,上拉電阻無效,即I/O為輸入三態(tài)高阻狀態(tài)。
當I/O口設置為輸出方式時,在5V工作電壓下,若其輸出為高電平,則可以輸出20mA的電流;若其輸出為低電平,則可以最大吸收40mA的電流。2.1.3ATmega16結構
ATmega16主要由AVRCPU(內核)、存儲器(Flash、SRAM、EEPROM)、各種功能的外圍和I/O接口,以及相關的數據、控制和狀態(tài)器等組成。本節(jié)將重點介紹內核和存儲器結構以及狀態(tài)寄存器SREG。
1.內核結構
AVR內核是ATmega16的核心部分,由算術邏輯單元ALU、程序計數器PC、指令寄存器、指令譯碼器和32個8位通用寄存器組成。限于本書的篇幅,關于ALU、PC、指令寄存器和指令譯碼器不作講解,可參見AVR的相關教材。本節(jié)只介紹32個8位通用寄存器。
ATmega16的32個8位通用寄存器R0~R31構成一個“快速訪問通用寄存器組”,訪問時間為1個時鐘周期,其結構圖如圖2-2所示。圖2-2快速訪問通用寄存器組結構圖在圖2-2中,最后6個寄存器R26~R31除了用作通用寄存器外,還可以兩兩合并,組成3個16位的寄存器X、Y、Z,作為對數據存儲器空間(使用X、Y、Z)和程序存儲器空間(僅使用Z)的間接尋址寄存器使用。
2.存儲器結構
ATmega16在片內集成了Flash程序存儲器、SRAM數據存儲器和EEPROM數據存儲器,這3個存儲器空間相互獨立,物理結構也不同。
1)?Flash程序存儲器
ATmega16具有16K?×?8或8K?×?16的支持ISP的Flash存儲器,用于存放程序指令代碼,以16位(字)為一個
存儲單元。作為數據讀取時,以字節(jié)為單位。地址空間為0x0000~0x1FFF。
2)?SRAM數據存儲器
ATmega16共有1120個數據存儲器,包含片內SRAM及映射到數據存儲器空間的32個8位通用寄存器和64個8位I/O寄存器,均以8位(字節(jié))為一個存儲單元。其中,各個組成部分的地址范圍如下:
32個通用寄存器:映射到數據存儲器空間的地址為0x0000~0x001F。
64個I/O寄存器:I/O空間地址為0x00~0x3F;映射到數據存儲器空間的地址為0x0020~0x005F。其寄存器空間分配表詳見附錄1。
片內SRAM:數據存儲器空間地址為0x0060~0x045F。
3)?EEPROM數據存儲器
ATmega16包含512字節(jié)的EEPROM數據存儲器,用于保存系統(tǒng)的設定參數、固定表格和掉電后的數據等,可以提高系統(tǒng)的保密性。它以8位(字節(jié))為一個存儲單元,地址范圍為0x0000~0x01FF,按字節(jié)讀/寫。
3.?SREG
SREG是一個8位寄存器,用來存放指令執(zhí)行后的有關狀態(tài)和結果的標志。每一位狀態(tài)標志位均代表不同的含義,其狀態(tài)通常是在程序執(zhí)行中自動形成的,也可根據需要人
為修改。SREG在I/O空間的地址為0x3F(0x005F),其定義如表2-1所示。2.1.4系統(tǒng)時鐘與熔絲位
AVR單片機的運行需要有時鐘的驅動,而時鐘源的選擇需要設置相關熔絲位。本小節(jié)將講解ATmega16的系統(tǒng)時鐘和熔絲位的設置。
1.系統(tǒng)時鐘
系統(tǒng)時鐘為控制器提供時鐘脈沖,是控制器的心臟。系統(tǒng)時鐘頻率越高,單片機的執(zhí)行節(jié)拍越快,處理速度也越快。ATmega16的最高工作頻率為16MHz。
ATmega16的系統(tǒng)時鐘源可以選擇下述3種方式提供:
直接使用片內的1MHz/2MHz/4MHz/8MHz的RC振蕩源,由于RC振蕩源本身的頻率與標稱值有較大的誤差,而且受溫度變化影響較大,會影響系統(tǒng)穩(wěn)定性,因此實際中較少使用。在引腳XTAL1和XTAL2上外接由晶振和電容構成的諧振電路,配合片內的OSC振蕩電路構成的振蕩源,可提供0~16MHz的頻率,靈活性高,精度和穩(wěn)定度也高。這是常用的系統(tǒng)時鐘驅動方式。
直接使用外部的時鐘源輸出的脈沖信號。
本教材的開發(fā)板采用7.3728MHz的外部晶振作為系統(tǒng)時鐘源。
2.熔絲位及配置
AVR單片機中有一組專用的與芯片功能、特性、參數配置相關的可編程熔絲位。其中,幾個專用的熔絲位用于配置芯片要使用的系統(tǒng)時鐘源的類型。
AVR的熔絲位有0和1兩種狀態(tài)。
0:允許編程。
1:禁止編程。熔絲位的配置(編程)可以通過并行方式、ISP串行方式和JTAG串行方式實現,可進行多次編程。ATmega16出廠時的缺省配置設定為使用內部1MHz的RC振蕩源作為系統(tǒng)時
鐘,因此,在第一次使用前,必須先正確配置熔絲位,使其與使用的系統(tǒng)源類型相匹配。具體配置參見附錄2。2.1.5復位源與復位方式
復位是單片機芯片本身的硬件初始化操作,主要功能是把程序計數器的PC初始化為0x0000,使單片機從0x0000單元開始執(zhí)行程序,同時絕大部分的寄存器(通用寄存器和I/O寄存器)也被復位操作清0。
ATmega16有下述5種復位方式:系統(tǒng)上電復位。ATmega16內部含上電復位電路,當系統(tǒng)電源電壓VCC低于上電復位門限電平時,單片機復位。
外部復位。外部復位是由外加在RESET引腳上的低電平產生的。當RESET引腳為拉至低電平且低電平持續(xù)時間大于1.5μs時,單片機復位。掉電檢測復位。ATmega16有一個片內BOD(電源檢測)電路,用于對運行中的系統(tǒng)電壓VCC檢測。當BOD使能且VCC低于掉電檢測復位門限(4V或2.7V,通過熔絲位設置)時,單片機復位。
看門狗復位。ATmega16內部集成了一個看門狗定時器WDT。當WDT使能且WDT超時溢出時,單片機復位。
JTAG復位。當使用JTAG接口時,可由JTAG口控制單片機復位。
2.2通用I/O接口
ATmega16有4組8位的通用I/O接口,分別是PORTA、PORTB、PORTC、PORTD(簡稱PA、PB、PC、PD),對應芯片上的32個I/O引腳。其第一功能可作為數字通用I/O接口使用,而復用功能可分別用于中斷、定時/計數器等。本節(jié)主要介紹通用I/O的第一功能,第二功能將在后續(xù)內容中逐步講解。2.2.1基本結構
通用I/O口的工作方式和表現特征是由I/O寄存器來控制的。每組通用I/O口都配備有3個8位寄存器,分別是方向控制寄存器DDRn、數據寄存器PORTn和輸入引腳寄存器PINn,其中,n表示A、B、C、D。所有的端口引腳都有上拉電阻,可使I/O引腳保持高電平,防止外界干擾影響電平變化。通用I/O口結構示意圖如圖2-3所示。圖2-3通用I/O結構示意圖在圖2-3中,方向控制寄存器DDRn控制I/O口的輸入輸出方向;PORTn決定輸出電平。具體配置如下所述:
當設置為輸出(DDRn=1)時,內部上拉電阻無效,此時PORTn中的數據通過一個推挽電路輸出到外部引腳。當PORTn=1時,I/O引腳呈現高電平,同時可以輸出20mA的電流;而當PORTn=0時,I/O引腳呈現低電平,同時可以吸納20mA的電流。
當設置為輸入(DDRn=0)時,讀取外部引腳電平時應讀取PINn的值,讀得的值即為外部引腳上的真實電平。在該方式下,PORTn可以控制使用或者不使用內部的上拉電阻。
I/O口引腳的配置表如表2-2所示。從表2-2中可以看出,I/O口在輸出方式下,由于采用推挽電路,因此具備較強的驅動能力,可以直接驅動LED等小功率外圍器件。表中的PUD為寄存器SFIOR中的標志位,相當于全部I/O口的內部上拉電阻的總開關。
當PUD=1時,ATmega16所有I/O內部上拉電阻都不起
作用。
當PUD=0時,各I/O口的內部上拉電阻取決于PORTn的設置。
ATmega16的I/O口復位后的初始狀態(tài)全部為輸入工作方式,內部上拉電阻無效,外部引腳呈高阻態(tài)。2.2.2寄存器
方向控制寄存器DDRn、數據寄存器PORTn和輸入引
腳寄存器PINn是各個端口的3個寄存器,其詳細描述如表2-3所示。從表2-3中可以看出,每組I/O口的寄存器的情況相同,只是地址不一樣。下面以PA口為例說明各個端口的寄存器每個位的定義及使用方法。數據寄存器PORTA的定義如表2-4所示。數據方向寄存器DDRA具體定義如表2-5所示。輸入引腳寄存器PINA具體定義如表2-6所示。2.2.3通用I/O編程
通用I/O口常用于單片機對外數據輸出和輸入及LED驅動和按鍵檢測等。將ATmega16的I/O口作為通用I/O口使用時,首先應根據系統(tǒng)的硬件電路,正確設置輸入/輸出方式。
1.輸出配置
在ATmega16開發(fā)中,通常使用C語言對寄存器進行操作。若要設置PB0和PB4輸出0,可采用下述程序代碼實現。
【示例2-1】I/O口輸出設置。
#defineBIT00
#defineBIT11
#defineBIT22
#defineBIT33
#defineBIT44
#defineBIT55
#defineBIT66
#defineBIT77
DDRB|=(1<<(BIT0))|(1<<(BIT4));
PORTB&=~(1<<(BIT0)|(1<<(BIT4));
2.輸入配置
若要設置PB0和PB4為輸入,開啟內部上拉電阻,可采用下述程序代碼實現。
【示例2-2】I/O口輸入設置。
DDRB|=(1<<BIT0)|(1<<BIT4);//PB0,PB4端口設為輸出
PORTB|=(1<<BIT0)|(1<<BIT4);//PB0,PB4輸出高電平
DDRB&=~((1<<BIT0)|(1<<BIT4));//PB0,PB4端口設為輸入,開啟內部上拉電阻從上述代碼可以看出,先將引腳設置為高電平輸出,再將引腳設置為輸入狀態(tài),便可開啟芯片內部的上拉電阻。
本書配套的實驗開發(fā)板中,ATmega16的PC6和PC7引腳分別與LED1和LED2相連,其電路如圖2-4所示。當引腳輸出為低電平時,對應的LED燈亮;當引腳輸出為高電平時,對應的LED燈滅。圖2-4共陽極LED
3.編程應用
下述內容用于實現任務描述2.D.1,編寫一個點亮和熄滅LED燈的程序。
程序代碼如下:
【描述2.D.1】main.c。
#include<iom16.h>
voiddelay_ms(unsignedintms);//1ms延時函數
voidmain(void)將程序下載至開發(fā)板中,系統(tǒng)上電復位或按下復位按鍵,可以觀察實驗結果:LED1和LED2同時閃爍。
在實驗開發(fā)板中,4個按鍵的電路圖如圖2-5所示,其
中SW2連接至ATmega16的PD2管腳。從圖中可以看出,當SW2按下時,PD2為低電平;當SW2彈起時,PD2為高電平。圖2-5按鍵原理圖
2.3中斷系統(tǒng)
中斷是CPU在執(zhí)行期間,由于系統(tǒng)內發(fā)生非尋?;蚍穷A期的急需處理事件,使CPU停止正在執(zhí)行的程序而轉去執(zhí)行相應的事件處理程序,待處理完畢后自動返回原程序處執(zhí)行的過程。本節(jié)將介紹ATmega16的中斷源與中斷向量、外部中斷的工作原理及簡單編程應用。2.3.1中斷源與中斷向量
AVR單片機的中斷系統(tǒng)具有中斷源種類多、門類全的特點,便于設計實時、多功能、高效率的嵌入式應用系統(tǒng)。其中,ATmega16共有21個中斷源和中斷向量,中斷向量表如表2-7所示。在這21個中斷中,包含1個非屏蔽中斷(RESET)、3個外部中斷(INT0、INT1、INT2)和17個內部中斷。其中:
RESET是系統(tǒng)復位中斷,也稱系統(tǒng)復位源,是ATmega16中唯一的一個不可屏蔽中斷。當ATmega16由于各種原因被復位后,程序將跳到復位向量(默認為0x0000)處,在該地址處通常放置一條跳轉指令,跳轉到主程序繼續(xù)執(zhí)行。
INT0、INT1和INT2是3個外部中斷源,分別由ATmega16芯片的外部引腳PD2,PD3和PB2上的電平變化或狀態(tài)觸發(fā)。
17個內部中斷包括3個定時/計數器相關中斷、USART和SPI傳送中斷等。2.3.2外部中斷
ATmega16有3個外部中斷源,分別是INT0、INT1和INT2,由芯片外部引腳PD2、PD3和PB2上的電平變化或狀態(tài)作為中斷觸發(fā)信號。
1.觸發(fā)方式
3個外部中斷的觸發(fā)方式如表2-8所示。從表2-8中可以看出,INT0和INT1均有上升沿觸發(fā)、下降沿觸發(fā)、任意電平變化觸發(fā)和低電平觸發(fā)4種方式,其中低電平觸發(fā)無中斷標志位。INT2有上升沿和下降沿觸發(fā)2種方式,通過異步方式進行檢測,即不需要I/O時鐘信號。
2.相關寄存器
與外部中斷相關的寄存器有:狀態(tài)寄存器SREG、通用中斷控制寄存器GICR、通用中斷標志寄存器GIFR、微控
制器控制寄存器MCUCR、微控制器狀態(tài)與控制寄存器MCUCSR。
1)?SREG
SREG的BIT7(I位)為全局中斷使能位,響應中斷后,I位由硬件自動清零。使能全局中斷通常采用下述程序代碼實現:
SREG=0x80;
2)GICR
GICR各位的定義如表2-9所示。
3)GIFR
GIFR各位定義如表2-10所示。
GIFR的INTF1、INTF0、INTF2分別是INT1、INT0和INT2的中斷標志位,當外部中斷引腳的變化滿足觸發(fā)條件(通過MCUCR和MCUCSR設置)后,相應的中斷標志位會自動置1。如果此時SREG中的I位和GICR中的對應中斷允許控制位均為1,ATmega16才會響應中斷。執(zhí)行中斷服務程序時,INTFn(n=0,1,2)會由硬件自動清0,用戶也可通過軟件寫1清零。
清除INTF0、INTF1和INTF2可通過下述程序代碼實現:
GIFR|=(1<<INTF0)|(1<<INTF1)|(1<<INTF2);
4)?MCUCR
MCUCR定義如表2-11所示。
MCUCR的高4位與外部中斷的設置無關,其他四位是INT0(ISC01、ISC00)和INT1(ISC11、ISC00)的中斷觸發(fā)方式控制位。具體設置如表2-12所示。
5)MCUCSR
MCUCSR的定義如表2-13所示。
MCUCSR只有ISC2位與外部中斷有關,是INT2的中斷觸發(fā)控制位,具體設置如表2-14所示。若要設置INT2為下降沿觸發(fā)方式,可通過下述程序代碼實現:
MCUCSR|=(1<<ISC2);
通常,外部中斷的控制方法和步驟為
(1)設置外部中斷觸發(fā)方式,INT0和INT1設置MCUCR寄存器的相應位,INT2設置MCUCSR的相應位;
(2)開啟相應的外部中斷,將GICR中的相應位置1;
(3)開總中斷,SREG的I位置1;
(4)編寫中斷服務子函數。
3.外部中斷編程
如果要開啟INT0中斷,設置INT0為下降沿觸發(fā)方式,通常用下述程序代碼實現:
【示例2-3】中斷初始化設置。
2.4定時器
在工業(yè)生產及各種控制系統(tǒng)中,常常需要實現定時
或計數的功能。采用軟件延時程序進行定時,不僅精度不高,還會占用系統(tǒng)資源,降低CPU的利用率;相比之下,采用定時/計數器進行定時,不僅精確度高,而且提高了CPU的利用率。本節(jié)將詳細介紹ATmega16的定時器的基本原理和應用。2.4.1定時器概述
ATmega16內部有3個通用定時器/計數器:2個8位的定時器/計數器(T/C0和T/C2),1個16位的定時/計數器(T/C1)。這3個通用定時/計數器除了能夠實現通常的定時計數功能外,還具有捕獲、比較、脈寬調制輸出(PWM)等功能,其主要功能比較如表2-15所示。
3個定時/計數器的計數時鐘源可以來自外部引腳,也可以來自芯片內部的系統(tǒng)時鐘源。使用外部時鐘信號源時,通常作為計數器使用,用于記錄外部脈沖的個數;使用內部系統(tǒng)時鐘時,可選擇幾種不同頻率的計數源,這些計數源由內部預分頻器對主時鐘的不同分頻構成(1/1,1/8,1/64,1/256,1/1024),通常作為定時器和波形發(fā)生器使用。2.4.28位定時/計數器
在3個定時/計數器中,T/C0和T/C2均為單通道8位定時/計數器,兩者的主要結構和大部分功能是相同或相似的,下面以T/C0為例進行詳細講解。
T/C0可以產生計數器溢出中斷和比較匹配輸出中斷兩種中斷請求信號。T/C0的計數值存放在TCNT0中,可以選擇為向上計數(為0時將產生溢出中斷TOVO)或向下計數(為0xFF時將產生溢出中斷TOVO)。T/C0的輸出比較值則存放在OCR0中,計數值TCNT0與OCR0相等時,將產生比較匹配輸出中斷OCF0。
1.工作模式
T/C0可以工作在下述四種模式:普通模式、CTC模式、快速PWM模式和相位可調PWM模式。
普通模式:計數器為單向加1計數器,當計數寄存器TCNT0由0xFF返回0x00時,溢出標志位TOVO將被置1。在該模式下,也可以使用比較匹配功能產生定時中斷。
CTC模式:又稱比較匹配清0模式,計數器為單向加1計數器,將TCNT0的值與寄存器OCR0的值進行比較,當兩者相等時,將比較匹配標志OCF0置1,產生中斷申請,同時將TCNT0的值清0,重新開始加1計數。在CTC模式下,還可利用比較輸出產生占空比為50%的方波輸出,此時,應將輸出信號OC0設置為觸發(fā)方式??焖貾WM(脈沖寬度調制)模式:PWM有頻率、占空比和相位3個參數,通過改變輸出波形的占空比改變輸出電壓,可用于實現D/A、調節(jié)電壓或電流、改變電動機轉速等。T/C0工作在該模式時,可采用溢出或正(反)向比較匹配中斷方式,通過調整OCR0的值可改變輸出波形的占空比。相位修正PWM模式:相位修正PWM模式可以產生高
精度相位可調的PWM波形,輸出波形的占空比也由OCR0的值決定。該模式采用雙程計數方式,從0x00一直加到0xFF;下一個計數脈沖到達時,從0xFF減1計數直到0x00。因此產生的PWM波的頻率比快速PWM低,適用于電機控制類的應用。
2.相關寄存器
與T/C0相關的寄存器如表2-16所示。
1)?T/C0控制寄存器TCCR0
TCCR0各位的定義如表2-17所示。TCCR0各個位的詳細描述如表2-18所示。
2)?T/C0計數寄存器TCNT0
TCNT0是T/C0的計數值寄存器,該寄存器可以直接被讀/寫訪問,寫TCNT0寄存器將會在下一個時鐘周期中阻止比較匹配。在計數器運行的過程中,修改TCNT0的數值有可能丟失一次TCNT0與OCR0的比較匹配。
TCNT0的定義如表2-19所示。
3)輸出比較寄存器OCR0
OCR0寄存器包含一個8位的數據,不斷與TCNT0的值進行比較,兩者相等時,產生比較匹配事件,可以用來產生輸出比較中斷或者在OC0引腳上產生波形。
OCR0各位的定義如表2-20所示。
4)定時/計數器中斷屏蔽寄存器TIMSK
TIMSK各位定義如表2-21所示。
TIMSK的Bit[1:0]位是和T/C0有關的,Bit[5:2]位是和T/C1有關的,Bit[7:6]是和T/C2有關的。TIMSK各個位的詳細描述如表2-22所示。
5)定時/計數器中斷標志寄存器TIFR
TIFR各位定義如表2-23所示。
TIFR的Bit[1:0]位是和T/C0有關的,Bit[5:2]位是和T/C1有關的,Bit[7:6]是和T/C2有關的。TIFR各個位的詳細描述如表2-24所示。
3.編程應用
下述內容用于實現任務描述2.D.4,采用定時器T/C0的溢出中斷實現蜂鳴器每間隔2s鳴響一次。蜂鳴器電路如圖
2-6所示,BEEP與ATmega16的PD7引腳相連。圖2-6蜂鳴器驅動電路當采用外部7.3728MHz晶振頻率、1024分頻時,每計
1個脈沖為1/7200s(7.3728/1024=7200Hz)。若初值為56,
T0從56開始計數計滿255后,在下一個脈沖到達時將置位TOVO產生中斷,即計數次數為200。因此,從開始計數到溢出所用時間為1/7200×200=1/36s。定時計數器溢出中斷72次恰好為2?s。2.4.316位定時/計數器
T/C1是一個16位的多功能定時/計數器,可以實現精確的程序定時、波形測量和信號測量。T/C1與T/C0共享一個預分頻器,但它們的時鐘源選擇是相互獨立的。與T/C0相比,T/C1的計時寬度和長度大大增加,功能也更加強大。
1.工作模式
T/C1的工作方式包括定時/計數方式、輸出比較方式、輸入捕獲方式和PWM方式。
在T/C1的PWM方式下,有多種不同的計數器上限(TOP)值可供選擇,可產生頻率可調、相位可調以及頻率相位均可調的多種PWM波;同時,配備了2個比較匹配輸出單元OC1A、OC1B和比較匹配寄存器OCR1A、OCR1B,可以得到相同頻率、不同占空比的2路PWM輸出。輸入捕獲功能可用于精確捕捉一個外部事件的發(fā)生,記錄時間發(fā)生的時間印記,還可用于頻率和周期的精確測量。捕捉外部事發(fā)生的觸發(fā)信號由引腳ICP1輸入,也可通過模擬比較器單元來實現。
2.相關寄存器
T/C1有多個16位的寄存器,這些寄存器均由2個8位的寄存器組成,對它們的讀/寫操作須遵循特定的步驟。與定時/計數器T/C1相關的寄存器如表2-25所示。
1)?T/C1控制寄存器A(TCCR1A)
TCCR1A的定義如表2-26所示。
TCCR1A各個位的詳細描述如表2-27所示。
2)?T/C1控制寄存器B(TCCR1B)
TCCR1B的定義如表2-28所示。
TCCR1B各個位的詳細描述如表2-29所示。
3)計數寄存器TCNT1H和TCNT1L
T/C1的計數寄存器TCNT1由2個8位的計數器TCNT1H和TCNT1L組成,可直接被CPU讀/寫訪問。在計數器運行期間不能修改TCNT1的內容,否則有可能丟失一次TCNT1與OCR1A的匹配比較操作。TCNT1的定義如表2-30所示。
4)輸出比較寄存器OCR1AH和OCR1AL與OCR1BH和OCR1BL
輸出比較寄存器包含通道A輸出比較寄存器OCR1A和
通道B輸出比較寄存器OCR1B,均為16位寄存器。該寄存器中的數據與TCNT1中的計數值進行比較,一旦數據匹配相等,將產生一個輸出比較匹配中斷申請,或者改變OC1x(x=A,B)的輸出邏輯電平。
OCR1A和OCR1B均為雙向可讀/寫寄存器,系統(tǒng)復位后的初始值為0。以OCR1A為例,其定義如表2-31所示。
5)輸入捕捉寄存器ICR1H與ICR1L
16位的輸入捕捉寄存器ICR1由ICR1H和ICR1L組成。當外部引腳ICP1或模擬比較器有輸入捕捉觸發(fā)信號產生時,計數器TCNT1中的值寫入ICR1中。ICR1的值可以作為計數器的TOP值(當T/C1控制寄存器的對應位WGM1[3:0]=1000,1010,1100,1110時)。ICR1的定義如表2-32所示。
3.編程應用
下述內容用于實現任務描述2.D.5,采用定時器T/C1的比較匹配中斷方式,實現LED燈間隔1s閃亮(500ms亮、
500ms滅)。硬件電路參見圖2-4。
采用外部7.3728MHz晶振頻率、1024分頻時,每計1
個脈沖為1/7200s(7.3728/1024=7200Hz)。若比較匹配值為3600,定時計數器T/C1從0開始計數,則到輸出比較匹配中斷所用時間恰好為1/7200×3600=0.5s=500ms。
2.5USART
為了支持與采用不同通信方式的器件方便地交換數據,ATmega16集成了3個獨立的串行通信接口單元,分別是通用同步/異步收/發(fā)器USART、串行外設接口SPI、兩線串行接口TWI(IIC)。本節(jié)將介紹ATmega16的通用同步/異步串行收/發(fā)器USART。2.5.1USART概述
USART(UniversalSyncharonous/AsynchronousReceiver/Transmitter)是一個全雙工的同步/異步串行收/發(fā)器,也是ATmega16自帶的一個高度靈活的串行通信接口,主要由時鐘發(fā)生器、發(fā)送器和接收器3部分組成。
1.?USART特點
USART的主要特點如下:
全雙工操作,獨立的串行接收和發(fā)送寄存器,可同時進行收、發(fā)操作。
支持異步或同步操作。
主機或從機提供時鐘的同步操作。
高精度的波特率發(fā)生器。
支持5、6、7、8或9個數據位,1個或2個停止位的串行數據幀結構。硬件支持的奇偶校驗操作。
硬件支持的數據溢出檢測。
硬件支持的幀錯誤檢測。
噪聲濾波,包括錯誤的起始位檢測,以及數字低通濾
波器。
三個獨立的中斷:TX發(fā)送結束,TX發(fā)送數據寄存器空,以及RX接收結束。
多處理器通信模式。
倍速異步通信模式。
2.?USART的幀結構
ATmega16的串行數據幀由數據字加上同步位(開始位與停止位)以及用于糾錯的奇偶校驗位構成。具體來說,一個完整的數據幀按照傳輸的先后順序依次包括:
1個起始位;
5、6、7、8或9個數據位;
無校驗位或奇校驗或偶校驗位;
1或2個停止位。
在實際編程應用中,通常將數據幀的結構設置為1個起始位、8個數據位、無校驗、1個停止位。
1.?UDR
UDR數據寄存器實際上是兩個物理分離的寄存器,
分別是發(fā)送數據緩沖寄存器(TXB)和接收數據緩沖寄存器(RXB),它們共享同一個I/O地址。當把待發(fā)送的數據寫入UDR時,其實是寫入TXB中;當讀UDR時,讀的是RXB中的數據。數據寄存器UDR各位定義如表2-33所示。
2.?UCSRA
USART控制狀態(tài)寄存器UCSRA各位定義如表2-34所示。表2-34中各位的詳細描述如表2-35所示。
3.UCSRB
控制和狀態(tài)寄存器UCSRB各位的定義如表2-36所示。表2-36中各位的詳細描述如表2-37所示。在實際應用中,若要設置USART為異步通信模式,幀格式為8位數據位、無校驗方式、1位停止位,通常用下述程序代碼實現:
UCSRA|=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
UCSRA&=~((1<<UMSEL)|(1<<UPM1)|(1<<UPM0)|
(1<<USBS)|(1<<UCPOL));
5.UBRRL和UBRRH
在USART編程應用中,異步模式比較常用,通信的收、發(fā)雙方通過波特率保持一致。UBRRH和UBRRL構成了一個12位波特率寄存器UBRR,包含了USART的波特率信息。其中,UBRRH包含了USART波特率高4位,UBRRL包含了低8位,波特率的改變將造成正在進行的數據傳輸受到破壞,寫UBRRL將立即更新波特率分頻器。(說明:UCSRC與UBRRH公用一個I/O地址)。波特率寄存器UBRRL和UBRRH的定義如表2-42所示。表2-42中各位的描述如表2-43所示。在7.3728MHz晶振頻率下,UBRR的設置波特率設置如表2-44所示。2.5.3USART編程
下述函數程序代碼用于實現讀取UCSRC寄存器的值。
【示例2-4】Usart_ReadUCSRC()。
unsignedcharUsart_ReadUCSRC(void)
{
unsignedcharucsrc;
ucsrc=UBRRH;
ucsrc=UCSRC;
returnucsrc;
}下述函數程序代碼用于實現單字節(jié)的數據發(fā)送,函數參數data為要發(fā)送的字符。
下述內容用于實現任務描述2.D.6,編寫一個測試程序,實現ATmega16與PC之間的USART串口通信。
由于PC使用的是RS232標準電平,而ATmega16使用的是TTL電平,因此需要通過MAX3232芯片進行電平轉換。通過JP4使用跳線選擇使用RS232,實現單片機與PC之間的串口通信,如圖2-7所示。圖2-7串口跳線選擇編寫主函數程序代碼如下:
【描述2.D.6】main.c。
#include<iom16.h>
#include<string.h>
#defineucharunsignedchar
#defineuintunsignedint
uchartx_buf[30]; //定義發(fā)送緩沖數組程序運行后,使用超級串口工具觀察到的實驗結果如圖2-8所示。圖2-8USART發(fā)送測試結果
2.6SPI
串行外設接口SPI(SerialPeripheralInterface)總線系統(tǒng)是一種同步串行外設接口,允許MCU與各種外圍設備以串行方式進行通信及數據交換,具有電路簡單、控制方便、通信速度快、通信可靠等優(yōu)點。很多器件如LCD模塊、Flash/EEPROM存儲器、數據輸入/輸出設備都采用了SPI接口。本節(jié)將對SPI接口的基本原理和應用作詳細講解。2.6.1SPI概述
SPI接口一般用于系統(tǒng)板上芯片之間的短距離通信,如單片機與外圍EEPROM存儲器、A/D及D/A轉換器、實時時鐘RTC等器件的直接擴展和連接。采用SPI串行總線可以簡化系統(tǒng)結構,降低系統(tǒng)成本,使系統(tǒng)具有靈活的可擴展性。
1.特點
SPI允許ATmega16和外設之間,或幾個AVR單片機之間以標準SPI接口協(xié)議兼容的方式進行高速的同步數據傳輸。ATmega16SPI的特點如下:
2.系統(tǒng)組成
典型的SPI通信系統(tǒng)由一個主機、一個從機以及它們之間的4根信號線組成,通信連接如圖2-9所示。2-9典型SPI通信系統(tǒng)
3.工作原理
在SPI通信中,主機控制占據主導地位,決定了通信的起始和結束。通信雙方的數據傳輸是在主機的控制下,進行雙向同步數據交換。SCK和SS均由主機發(fā)出,從機只在SS信號有效時才響應SCK上的時鐘信號進行數據傳輸。
SPI的本質是在同步時鐘作用下的串行移位過程。當主機要發(fā)起一次傳輸時,首先將SS信號拉低;然后在內部產生的SCK作用下,將SPI數據寄存器中的數據逐位移出,并通過MOSI信號線傳送至從機。從機一旦檢測到SS有效后,在SCK的作用下,也將自己移位寄存器中的內容通過MISO信號線逐位移入主機寄存器。
4.工作模式
在介紹SPI的工作模式之前,首先介紹兩個基本概念:同步時鐘極性CPOL和同步時鐘相位CPHA。
CPOL:SPI總線處在傳輸空閑時SCK信號線的狀態(tài)。
CPOL=0:SPI傳輸空閑時,SCK信號線的狀態(tài)保持在低電平0。
CPOL=1:SPI傳輸空閑時,SCK信號線的狀態(tài)保持在高電平1。
CPHA:進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度恒溫恒濕儲藏室建設與維護合同3篇
- 2025年度影視制作車輛借用及拍攝服務合同2篇
- 領導干部談心談話記錄
- 2024年質押借款補充合同模板
- 2024收銀員崗位技能提升及入職培訓合同3篇
- 不銹鋼建筑安裝工程承攬協(xié)議版B版
- 2024年軟件開發(fā)購買合同
- 2024智能家居弱電裝修系統(tǒng)合同
- 2024年度特制版權轉讓協(xié)議(專業(yè)版)
- 專業(yè)化集裝箱物流配送服務協(xié)議2024版B版
- 河南省鄭州外國語高中-【高二】【上期中】【把握現在 蓄力高三】家長會【課件】
- 2024-2025學年烏魯木齊市數學三上期末檢測試題含解析
- GB 30254-2024高壓三相籠型異步電動機能效限定值及能效等級
- 非物質文化遺產拓印 課件
- 代理商授權書
- 中南財經政法大學工商管理碩士(MBA)
- 白云國際機場航站樓1027火災事故
- 正常胃鏡檢查診療報告單
- 外協(xié)管理制度
- 晚小品《新白蛇傳》小沈陽、沈陽、程野劇本
- 多產權、多家合用同一建筑物單位消防安全“五個統(tǒng)一”建設標準
評論
0/150
提交評論