arduino筆記4:AVR微控制器 + 外圍功能

下面是AVR微控制器的詳細組成和相關參數的簡介,對我們學習arduino有一定的輔助作用,當然剛開始用arduino可能會用不到,但是可以先了解一下。

 

目錄

(一)外圍功能

1)控制寄存器

2)數字I/O端口

3)8位定時器/計數器

正常模式(Normal mode)

CTC(Clear Timer on Compare)模式

快速PWM模式

相位校正PWM模式

4)16位定時器/計數器

5)定時器/計數器預分頻器

(二)模擬比較器

(三)模數轉換器

(四)串行I/O

(五)中斷

(六)看門狗定時器

(七)電氣特性


 

(一)外圍功能

AVR微控制器的”心臟“是一塊8位的CPU,但讓它真正有用的是其內置的外圍功能,這些功能被集成到IC(Integrated Circuit Chip),並帶有CPU邏輯。比同類型的AVR設備,其外圍功能也有所不同。有些只有一個定時器,而有些則有兩個或更多(有的多達6個)。有些擁有10位的A/D轉換器(ADC),而另一些的則爲12位。所有AVR器件都爲離散的數字信號提供雙向I/O引腳。有些版本也提供觸屏支持,以及其他一些交互接口。

這裏將以ATmega168爲例子進行講解,並且只介紹通用的外圍功能。當然更多的就需要查閱Atmel技術文檔了。

1)控制寄存器

控制寄存器(CR0~CR3)用於控制和確定處理器的操作模式以及當前執行任務的特性。除了CPU中的32個通用寄存器之外,AVR設備也含有一些控制寄存器,它們用於控制I/O端口、定時器、通信端口以及其他功能的工作方式。控制寄存器的設置因設備類型的不同而不同,因爲不同類型的設備可能會有不同數量的端口,以及不同的外圍功能配置。

即使是ATmega168這類略顯保守的AVR器件,也擁有很多內部功能。若每個引腳只分配一項功能,那麼它所擁有的引腳是遠遠不夠的。由於這個原因,AVR微控制器上的大多數引腳都能被重新配置爲“基於控制寄存器中的設置執行特定功能”。因爲引腳功能是可動態配置的,所以我們可以讓一個引腳在某個時間點執行一種功能,然後當控制寄存器的值發生改變時,使其執行另一項功能。

比如,ATmega168採用的是28引腳的DIP封裝方式,它的第12號引腳連接到PD6(端口D,位6),但它也可以被配置爲中斷源(PCINT22)、AVR內部模擬比較器(AIN0)的正向輸入,或者用作定時器比較邏輯電路(Timer/Counter0輸出比較匹配A)的輸出,用於產生PWM(脈衝寬度調製)信號。

2)數字I/O端口

AVR微控制器使用雙向I/O端口與外部世界進行通信。端口是一個8位的寄存器,它的部分位或所有位會被連接到AVR設備封裝的物理引腳上。不同類型的AVR設備擁有不同數量的端口。

端口的每個引腳都由內部邏輯進行控制,這些內部邏輯管理着信號方向、內部上拉電阻的狀態、計時以及其他功能。下面是AVR I/O端口的簡圖,圖中Px表示point bit/pin x(0~7)。

由於功能控制邏輯複雜且巧妙,所以AVR端口能夠執行多種不同功能,其中一些功能可以同時進行。當對一個端口進行配置並將其用作輸出時,我們仍然可以藉助它讀取數據,輸出可以用來觸發中斷。

3)8位定時器/計數器

AVR微控制器中,有兩種形式的8位定時器/計數器可用。

  • 第一種類型中,時鐘輸入來自於主系統時鐘,因此定時器/計數器是同步的;
  • 第二種類型中,可以使用外部時鐘源在異步模式下進行操作。

下面是AVR定時器的簡圖:

在AVR8位定時器/計數器周邊電路(peripheral function)中,Timer/Counter0模塊是一個通用的定時器/計數器。其特色是帶有兩個獨立的輸出比較電路,擁有4種操作模式。

正常模式(Normal mode)

這是最簡單的定時器/計數器操作模式。計數總是在增長,當計數器達到最大8位值時,不會對計數器執行清空操作,在此情形下,計數器會發生溢出並歸0.計數器歸0時,就會設置Timer/Counter的溢出標誌位(TOV0),TOV0標記對應於第9位,它只在定時器溢出時被設置,而不是被清除。定時器溢出中斷會自動清空溢出標誌位,中斷也可以用來增加內存中另一個基於軟件的計數器。在任何時候,新的計數器值都可以被寫入TCNT0寄存器。

CTC(Clear Timer on Compare)模式

在CTC模式下,OCR0A寄存器通過定義計數器的最大值操縱計數器的分辨率。這有利於更好地控制比較匹配輸出頻率,也有助於簡化外部事件計數。

快速PWM模式

快速脈衝寬度調製模式支持產生高頻PWM波形。

相位校正PWM模式

相位校正PWM模式提供了一個產生高分辨率相位矯正PWM波形

4)16位定時器/計數器

16爲定時器/計數器與8位列斯,但擁有更大的計數範圍。它是真正地16位邏輯,允許產生16位可變週期地PWM。

5)定時器/計數器預分頻器

預分頻器是一個分頻電路。

 

(二)模擬比較器

AVR模擬比較器用於比較AIN0與AIN1引腳地輸入電壓。儘管AIN0被定義爲正向輸入,AIN1被定義爲負輸入,但這僅僅用於反映它們之間的關係,並非指輸入電壓的實際極性。下面是AVR模擬比較器電路的簡圖:

除了比較AIN0與AIN1輸入的電壓之外,模擬比較器還可以做更多事情。還可以對模擬比較器的輸入進行配置,使得可以將AIN1輸入看作是內部帶隙基準電壓,或者將AIN0看作ADC多路複用器的輸出(並且該電壓對於ADC輸入仍然有效)。帶有4個箭頭的特殊符號是模擬門。模擬門對控制輸入做出何種反映由反向循環(inversion circle)指示,即使用反向控制輸入時,若控制爲低電平,則傳遞模擬信號,否則傳遞數字信號。

(三)模數轉換器

模數轉換器即A/D轉換器,或簡稱ADC,通常是指一個將模擬信號轉變爲數字信號的電子元件。通常的模數轉換器是將一個輸入電壓信號轉換爲一個輸出的數字信號。由於數字信號本身不具有實際意義,僅僅表示一個相對大小。故任何一個模數轉換器都需要一個參考模擬量作爲轉換的標準,比較常見的參考標準爲最大的可轉換信號大小。而輸出的數字量則表示輸入信號相對於參考信號的大小。

下面是AVR ADC外圍電路的框圖:

 

(四)串行I/O

I/O接口是一電子電路(以IC芯片或接口板形式出現 ),其內有若干專用寄存器和相應的控制邏輯電路構成。它是CPU和I/O設備之間交換信息的媒介和橋樑。CPU與外部設備、存儲器的連接和數據交換都需要通過接口設備來實現,前者被稱爲I/O接口,而後者則被稱爲存儲器接口。

ATmega168主要提供3種串口:同步/異步串口、SPI主從同步串口、面向字節的雙線接口—類似於PhilipsI2C(內部集成電路)標準。

(五)中斷

中斷是現代處理器的基本功能。它們允許處理器對內部或外部事件做出相應,通過切換到一段特殊的中斷代理代碼來處理中斷。一旦中斷處理代碼執行完畢,控制流將返回程序中發生中斷的位置,並繼續向下執行。在AVR中,通過修改控制寄存器中相應的位,可以打開或關閉中斷響應。

(六)看門狗定時器

看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數器,一般給看門狗一個數字,程序開始運行後看門狗開始計數。如果程序運行正常,過一段時間CPU應發出指令讓看門狗置零,重新開始計數。如果看門狗增加到設定值就認爲程序沒有正常工作,強制整個系統復位。

AVR提供一個看門狗定時器(WDT)。

(七)電氣特性

AVR設備的電流消耗各有不同,這主要取決於設備類型、微控制器的激活或非激活(睡眠)狀態,以及時鐘頻率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章