愛特梅爾

Atmel 8 位元 AVR 微控制器,具有 2/4/8K 位元組系統內可編程快閃記憶體晶片

 

特徵

  • 高效能、低功耗 AVR® 8 位元微控制器
  • 先進的 RISC 架構
  • 120 條強大指令 – 大多數單時鐘週期執行
  • 32 x 8 通用工作寄存器
  • 全靜態操作
  • 非揮發性程序和資料存儲器
  • 2/4/8K 位元組在系統可編程程式記憶體快閃記憶體
  • 耐力: 10,000 次寫入/擦除週期
  • 128/256/512 位元組系統內可編程 EEPROM
  • 耐力: 100,000 次寫入/擦除週期
  • 128/256/512位元組內部SRAM
  • 自編程閃存程式和 EEPROM 資料安全的程式鎖定

周邊特性

  • 具有預分頻器和兩個 PWM 通道的 8 位元計時器/計數器
  • 具有獨立預分頻器的 8 位元高速定時器/計數器
  • 2 個具有獨立輸出比較暫存器的高頻 PWM 輸出
  • 可程式死區時間發生器
  • USI – 具有啟動條件偵測器的通用序列介面
  • 10位元類比數位轉換器

4 個單端通道

2 個差分 ADC 通道對,具有可程式增益(1x、20x)

溫度測量

具有獨立片上振盪器的可程式看門狗定時器

片上模擬比較器

特殊微控制器功能

debugWIRE 片上調試系統

可透過 SPI 連接埠進行系統內編程

外部和內部中斷源

低功耗空閒、ADC 降噪與斷電模式

增強型上電重置電路

可程式欠壓檢測電路

內部校準振盪器

I/O 和封裝

6 條可程式 I/O 線

8 腳 PDIP、8 腳 SOIC、20 焊盤 QFN/MLF 和 8 腳 TSSOP(僅限 ATtiny45/V)

操作量tage
– ATtiny1.8V/5.5V/25V 為 45 – 85V
– ATtiny2.7/5.5/25 為 45 – 85V

速度等級
– ATtiny25V/45V/85V:0 – 4 MHz @ 1.8 – 5.5V,0 – 10 MHz @ 2.7 – 5.5V
– ATtiny25/45/85:0 – 10 MHz @ 2.7 – 5.5V,0 – 20 MHz @ 4.5 – 5.5V

工業溫度範圍

低功耗

活動模式:

1MHz,1.8V:300μA

掉電模式:

引腳配置

腳位排列 ATtiny25/45/85 配置

引腳說明

VCC:供應量tage.
GND:接地。
端口 B (PB5:PB0):端口 B 是一個 6 位元雙向 I/O 端口,具有內部上拉電阻(為每位選擇)。連接埠 B 輸出緩衝器具有對稱驅動特性,具有高灌電流和拉電流能力。作為輸入,如果上拉電阻被激活,則外部拉低的連接埠 B 引腳將提供電流。當重設條件變為活動狀態時,即使時脈未運行,連接埠 B 接腳也會處於三態。

連接埠 B 還具有所列 ATtiny25/45/85 的各種特殊功能的功能
在 ATtiny25 上,可程式 I/O 連接埠 PB3 和 PB4(引腳 2 和 3)在 ATtiny15 相容模式下交換,以支援與 ATtiny15 的向後相容性。

RESET:重設輸入。即使時脈未運作且重設引腳未被停用,此引腳上的低電平持續時間超過最小脈衝長度也會產生重設。最小脈衝長度由下式給出 表21-4 第 165 頁。較短的脈衝不能保證產生重設。

復位引腳也可用作(弱)I/O 引腳。

超過view

ATtiny25/45/85是一款基於AVR增強型RISC架構的低功耗CMOS 8位元微控制器。透過在單一時脈週期內執行強大的指令,ATtiny25/45/85 的吞吐量接近每 MHz 1 MIPS,從而使系統設計人員能夠優化功耗與處理速度。

框圖 框圖

AVR 核心結合了豐富的指令集和 32 個通用工作暫存器。所有 32 個暫存器都直接連接到算術邏輯單元 (ALU),允許在一個時脈週期內執行的一條指令中存取兩個獨立的暫存器。由此產生的架構具有更高的程式碼效率,同時吞吐量比傳統 CISC 微控制器快十倍。

ATtiny25/45/85 提供以下功能:2/4/8K 位元組在系統可程式快閃記憶體、128/256/512 位元組EEPROM、128/256/256 位元組SRAM、6 個通用I/O 線、32 個條通用I/O 線專用工作暫存器、8 個帶比較模式的8 位元定時器/計數器、4 個10 位元高速定時器/計數器、通用序列介面、內部和外部中斷、XNUMX 個XNUMX 通道、XNUMX 位元ADC 、XNUMX 個內部功能的可程式看門狗定時器振盪器和三種軟體可選的省電模式。空閒模式會停止 CPU,同時允許 SRAM、定時器/計數器、ADC、類比比較器和中斷系統繼續運作。掉電模式保存暫存器內容,停用所有晶片功能,直到下一次中斷或硬體重設。 ADC 降噪模式會停止 CPU 和 ADC 以外的所有 I/O 模組,以最大程度地減少 ADC 轉換期間的開關雜訊。

此裝置採用Atmel 的高密度非揮發性記憶體技術製造。片上 ISP 快閃記憶體允許透過 SPI 串列介面、傳統的非揮發性記憶體程式設計器或在 AVR 核心上執行的片上引導程式碼對程式記憶體進行系統內重新編程。

ATtiny25/45/85 AVR 由全套程式和系統開發工具支持,包括:C 編譯器、巨集彙編器、程式偵錯器/模擬器和評估套件。

關於資源

一套全面的開發工具、應用說明和資料表可供下載 http://www.atmel.com/avr.

代碼示例amp萊斯

該文件包含簡單的程式碼amp簡要展示如何使用設備各部分的文件。這些代碼前amples 假設部分特定標頭 file 在編譯之前包含。請注意,並非所有 C 編譯器供應商都在標頭中包含位元定義 fileC 中的 s 和中斷處理取決於編譯器。請確認 C 編譯器文件以取得更多詳細資訊。

對於位於擴充 I/O 映射中的 I/O 暫存器,「IN」、「OUT」、「SBIS」、「SBIC」、「CBI」和「SBI」指令必須替換為允許存取擴充 I/O 的指令。 /O。通常,這意味著“LDS”和“STS”與“SBRS”、“SBRC”、“SBR”和“CBR”的組合。請注意,並非所有 AVR 裝置都包含擴充 I/O 對映。

電容式觸控感應

Atmel QTouch 庫為 Atmel AVR 微控制器上的觸控式敏感介面提供了簡單易用的解決方案。 QTouch 庫支援 QTouch® 和 QMatrix® 擷取方法。

透過連結 QTouch 庫並使用庫的應用程式介面 (API) 定義觸控通道和感測器,可以輕鬆地將觸控感應新增至任何應用程式。然後,應用程式呼叫 API 來檢索通道資訊並確定觸控感測器的狀態。

QTouch 庫是免費的,可以從 Atmel 下載 web地點。有關實施的更多資訊和細節,請參閱 QTouch 庫使用者指南 – 也可從 Atmel 取得 web地點。

資料保留

可靠性鑑定結果表明,1°C 下 20 年或 85°C 下 100 年預計資料保留故障率遠低於 25 PPM。

AVR CPU核心

介紹

本節整體討論 AVR 核心架構。 CPU核的主要功能是保證程式的正確執行。因此,CPU 必須能夠存取記憶體、執行計算、控制週邊和處理中斷。

建築結束view 建築學

為了最大限度地提高效能和並行性,AVR 使用哈佛架構 - 具有用於程式和資料的單獨記憶體和匯流排。程式記憶體中的指令透過單級管線執行。執行一條指令時,將從程式記憶體中預先取下一條指令。這個概念使得指令能夠在每個時脈週期執行。程式記憶體是系統內可重編程快閃記憶體。

快速存取暫存器 File 包含 32 個 8 位元通用工作暫存器,具有單一時脈週期存取時間。這允許單週期算術邏輯單元(ALU)操作。在典型的 ALU 運算中,兩個運算元從暫存器輸出 File,執行操作,並將結果存回暫存器中 File– 在一個時鐘週期內。

32 個暫存器中的 16 個可用作資料空間尋址的三個 16 位元間接位址暫存器指針,從而實現高效率的位址計算。這些位址指標之一也可以用作快閃程式記憶體中查找表的位址指標。這些新增的功能暫存器是 XNUMX 位元 X、Y 和 Z 暫存器,本節稍後將對此進行描述。

ALU 支援暫存器之間或常數與暫存器之間的算術和邏輯運算。單一暫存器操作也可以在 ALU 中執行。算術運算後,狀態暫存器會更新以反映運算結果的資訊。

程式流程由條件和無條件跳躍和呼叫指令提供,能夠直接定址整個位址空間。大多數 AVR 指令具有單一 16 位元字格式,但也有 32 位元指令。

在中斷和子程序呼叫期間,返回地址程序計數器(PC)儲存在堆疊中。堆疊有效地分配在通用資料SRAM中,因此堆疊大小僅受總SRAM大小和SRAM的使用情況的限制。所有使用者程式必須在重設例程中初始化 SP(在執行子例程或中斷之前)。堆疊指標 (SP) 可在 I/O 空間中進行讀取/寫入存取。可以透過 AVR 架構中支援的五種不同尋址模式輕鬆存取資料 SRAM。

AVR架構中的記憶體空間都是線性的、規則的記憶體映射。

靈活的中斷模組在 I/O 空間中具有其控制暫存器,並在狀態暫存器中具有附加的全域中斷允許位元。所有中斷在中斷向量表中都有一個單獨的中斷向量。中斷根據其中斷向量位置具有優先權。中斷向量位址越低,優先權越高。

I/O 記憶體空間包含 64 個位址,用於 CPU 週邊功能,如控制暫存器、SPI 和其他 I/O 功能。 I/O 記憶體可以直接訪問,也可以作為暫存器後面的資料空間位置進行存取。 File,0x20 – 0x5F。

ALU-算術邏輯單元

高效能 AVR ALU 與所有 32 個通用工作暫存器直接連接運作。在單一時脈週期內,執行通用暫存器之間或暫存器與立即數之間的算術運算。 ALU 運算分為三個主要類別:算術運算、邏輯運算和位元運算。該架構的一些實作還提供強大的乘法器,支援有符號/無符號乘法和小數格式。詳細說明請參閱「指令集」部分。

狀態暫存器

狀態暫存器包含有關最近執行的算術指令的結果的資訊。此資訊可用於變更程式流程以執行條件操作。請注意,狀態暫存器在所有 ALU 操作後更新,如指令集參考中所指定。在許多情況下,這將消除使用專用比較指令的需要,從而產生更快、更緊湊的程式碼。

進入中斷例程時,狀態暫存器不會自動存儲,從中斷返回時也不會自動恢復。這必須由軟體來處理。

SREG——AVR狀態暫存器

AVR 狀態暫存器 – SREG – 定義為:

位元 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

位元 7 – I:全域中斷啟用

必須設定全域中斷允許位元才能允許中斷。然後在單獨的控制暫存器中執行單獨的中斷啟用控制。如果全域中斷允許暫存器被清除,則任何中斷都不會獨立於各個中斷允許設定而被允許。中斷發生後,I 位元由硬體清除,並由 RETI 指令置位以啟用後續中斷。 I 位元也可以由應用程式使用 SEI 和 CLI 指令設定和清除,如指令集參考中所述。

位 6 – T:位元複製存儲

位元複製指令 BLD(位元載入)和 BST(位元儲存)使用 T 位元作為操作位元的來源或目標。暫存器中暫存器的一位 File 可以透過BST指令複製到T中,且T中的一個位元可以複製到暫存器中的一個暫存器中的一個位元中 File 透過 BLD 指令。

位 5 – H:半進位標誌

半進位標誌 H 表示某些算術運算中的半進位。半進位在 BCD 算術中很有用。詳細資訊請參閱「指令集說明」。

位 4 – S:符號位,S = N ⊕ V

S 位元總是負標誌 N 和補碼溢位標誌 V 之間的異或。

位元 3 – V:補碼溢位標誌

補碼溢位標誌 V 支援補碼運算。詳細資訊請參閱「指令集說明」。

位 2 – N:負標誌

負標誌 N 表示算術或邏輯運算中的負結果。詳細資訊請參閱「指令集說明」。

位 1 – Z:零標誌

零標誌 Z 指示算術或邏輯運算中的零結果。詳細資訊請參閱「指令集說明」。

位 0 – C:進位標誌

進位標誌C表示算術或邏輯運算中的進位。詳細資訊請參閱「指令集說明」。

通用暫存器 File

登記冊 File 針對 AVR 增強型 RISC 指令集進行了最佳化。為了實現所需的效能和靈活性,暫存器支援以下輸入/輸出方案 File:

8 個 8 位元輸出運算元和 XNUMX 個 XNUMX 位元結果輸入

8 個 8 位元輸出運算元和 XNUMX 個 XNUMX 位元結果輸入

8 個 16 位元輸出運算元和 XNUMX 個 XNUMX 位元結果輸入

16 個 16 位元輸出運算元和 XNUMX 個 XNUMX 位元結果輸入

圖4-2 顯示了CPU中32個通用工作暫存器的結構。 一般

如圖所示 圖4-2,每個暫存器還分配有一個資料記憶體位址,將它們直接對應到使用者資料空間的前 32 個位置。雖然物理上並未實現為 SRAM 位置,但這種記憶體組織在暫存器存取方面提供了極大的靈活性,因為 X、Y 和 Z 指標暫存器可以設定為索引暫存器中的任何暫存器。 file.大部分指令在暫存器上操作 File 可以直接存取所有暫存器,其中大多數是單週期指令。

X 暫存器、Y 暫存器和 Z 暫存器

暫存器 R26..R31 在其通用用途的基礎上增加了一些功能。這些暫存器是用於資料空間間接尋址的 16 位元位址指標。三個間接位址暫存器 X、Y 和 Z 的定義如下: 圖4-3.

登記

在不同的尋址方式下,這些位址暫存器具有固定位移、自動遞增、自動遞減的功能(請參閱指令集參考)。

堆棧指針

堆疊主要用於儲存臨時資料、儲存局部變數以及儲存中斷和子程序呼叫後的返回位址。堆疊指標暫存器始終指向堆疊頂部。請注意,堆疊的實作是從較高的記憶體位置向較低的記憶體位置成長。這意味著 Stack PUSH 命令會減少堆疊指標。

堆疊指標指向子程式和中斷堆疊所在的資料SRAM堆疊區域。資料 SRAM 中的堆疊空間必須在執行任何子例程呼叫或啟用中斷之前由程式定義。堆疊指標必須設定為指向 0x60 以上。當使用 PUSH 指令將資料壓入堆疊時,堆疊指標減 XNUMX;當使用子程序呼叫或中斷將返回位址壓入堆疊時,堆疊指標會減 XNUMX。當以 POP 指令從堆疊中彈出資料時,堆疊指標加 XNUMX;當從子程序 RET 返回或從中斷 RETI 返回時從堆疊中彈出資料時,堆疊指標加 XNUMX。

AVR 堆疊指標在 I/O 空間中以兩個 8 位元暫存器實作。實際使用的位數取決於實作。請注意,AVR 架構的某些實作中的資料空間非常小,僅需要 SPL。在這種情況下,SPH 暫存器將不存在。

SPH 和 SPL — 堆疊指標暫存器

位元 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 新加坡公共衛生局
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 聲壓級
7 6 5 4 3 2 1 0
讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德
初始值 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德 拉曼德

指令執行時序

本節描述指令執行的一般存取時序概念。 AVR CPU 由 CPU 時脈 clkCPU 驅動,直接從晶片選定的時脈來源產生。不使用內部時鐘分頻。

圖4.4

圖4-4 顯示了哈佛架構和快速存取暫存器實現的平行指令讀取和指令執行 File 概念。這是獲得高達 1 MIPS/MHz 的基本流水線概念,並針對每成本功能、每時脈功能和每功率單元功能提供相應的獨特結果。

圖 4-5。單週期 ALU 操作

圖4.5

重設和中斷處理

AVR 提供了幾種不同的中斷來源。這些中斷和單獨的重設向量在程式儲存空間中都有一個單獨的程式向量。所有中斷都分配有單獨的使能位,必須將這些位元與狀態暫存器中的全域中斷使能位一起寫入邏輯 1,才能使能中斷。

程式儲存空間中的最低位址預設定義為重設和中斷向量。完整的向量列表顯示在 第 48 頁的“中斷”。該清單還確定了不同中斷的優先順序。地址越低,優先權越高。 RESET 具有最高優先權,其次是 INT0-外部中斷請求 0。

當中斷發生時,全域中斷允許 I 位元被清除,並且所有中斷被禁止。使用者軟體可以將邏輯1寫入I位元以啟用嵌套中斷。所有啟用的中斷都可以中斷目前的中斷例程。當執行中斷返回指令 RETI 時,I 位元會自動設定。

基本上有兩種類型的中斷。第一種類型是由設定中斷標誌的事件觸發的。對於這些中斷,程式計數器被向量到實際的中斷向量以執行中斷處理例程,並且硬體清除相應的中斷標誌。也可以將邏輯 1 寫入要清除的標誌位位置來清除中斷標誌。如果在相應的中斷使能位被清除時發生中斷條件,則中斷標誌將被設定並被記住,直到中斷被使能,或者該標誌被軟體清除。同樣,如果在全域中斷允許位元清零時發生一個或多個中斷條件,則相應的中斷標誌將被置位並被記憶,直到全域中斷允許位元被置位,然後將按優先順序執行。

只要中斷條件存在,就會觸發第二種類型的中斷。這些中斷不一定有中斷標誌。如果在中斷使能之前中斷條件消失,則不會觸發中斷。

當 AVR 從中斷中退出時,它總是會回到主程序,並在處理任何待處理的中斷之前再執行一條指令。

請注意,進入中斷例程時不會自動儲存狀態暫存器,從中斷例程返回時也不會恢復狀態暫存器。這必須由軟體來處理。

當使用 CLI 指令停用中斷時,中斷將立即被停用。 CLI 指令之後不會執行任何中斷,即使它與 CLI 指令同時發生。以下前amp文件顯示如何使用它來避免定時 EEPROM 寫入序列期間的中斷。

彙編程式碼Example
在 r16 中,SREG ;儲存 SREG 值

命令列;在定時序列期間禁用中斷

sbi EECR、EEMPE;開始EEPROM寫入

履行機構 EECR、EEPE

出SREG,r16;恢復SREG值(I位元)

C程式碼Example
字符cSREG;

cSREG = SREG; /* 儲存SREG值*/

/* 在定時序列期間停用中斷 */

_CLI();

EECR |= (1<

EECR |= (1<

SREG=cSREG; /*恢復SREG值(I位元)*/

當使用 SEI 指令啟用中斷時,SEI 後面的指令將在任何掛起的中斷之前執行,如本例所示amp勒。

彙編程式碼Example
塞伊;設定全域中斷啟用

睡覺;進入休眠,等待中斷

;注意:將在任何掛起之前進入睡眠狀態

;中斷

C程式碼Example
_SEI(); /* 設定全域中斷啟用 */

_睡覺(); /* 進入休眠,等待中斷 */

/* 注意:將在任何掛起的中斷之前進入睡眠狀態 */

中斷回應時間

所有啟用的 AVR 中斷的中斷執行回應最少為四個時脈週期。四個時鐘週期後,執行實際中斷處理例程的程式向量位址。在這四個時脈週期期間,程式計數器被壓入堆疊。此向量通常是跳到中斷例程,而該跳躍需要三個時脈週期。如果在執行多周期指令期間發生中斷,則該指令將在中斷服務之前完成。如果 MCU 處於睡眠模式時發生中斷,則中斷執行回應時間將增加 4 個時脈週期。除了所選睡眠模式的啟動時間之外,還會增加此時間。

從中斷處理例程返回需要四個時脈週期。在這四個時脈週期內,程式計數器(兩個位元組)從堆疊中彈出,堆疊指標增加 2,並且 SREG 中的 I 位元被設定。

AVR 回憶

本節介紹 ATtiny25/45/85 中的不同記憶體。 AVR架構有兩個主要的儲存空間,資料儲存空間和程式儲存空間。此外,ATtiny25/45/85 還具有用於資料儲存的 EEPROM 記憶體。所有三個儲存空間都是線性且規則的。

系統內可重編程快閃記憶體程式記憶體

ATtiny25/45/85 包含 2/4/8K 位元組片上系統內可重編程快閃記憶體,用於程式儲存。由於所有 AVR 指令都是 16 或 32 位元寬,因此 Flash 的組織方式為 1024/2048/4096 x 16。

快閃記憶體的耐用性至少為 10,000 次寫入/擦除週期。 ATtiny25/45/85 程式計數器 (PC) 為 10/11/12 位元寬,因此可尋址 1024/2048/4096 程式記憶體位置。 「記憶程序- 第 147 頁 包含使用 SPI 引腳序列下載 Flash 資料的詳細說明。

常量表可以在整個程式記憶體位址空間內指派(請參閱 LPM – 載入程式記憶體指令說明)。

圖 5-1。 程式記憶體映射 記憶圖

SRAM資料記憶體

圖5-2 顯示 ATtiny25/45/85 SRAM 記憶體的組織方式。

較低的 224/352/607 資料記憶體位置尋址暫存器 File、I/O記憶體和內部資料SRAM。前 32 個位置尋址暫存器 File,接下來的 64 個位置是標準 I/O 記憶體,最後 128/256/512 個位置是內部資料 SRAM。

資料記憶體有五種不同的定址模式:直接、有位移的間接、間接、帶前遞減的間接和帶後遞增的間接。在暫存器中 File,暫存器 R26 至 R31 具有間接定址指標暫存器。

直接尋址到達整個資料空間。

間接位移模式從 Y 或 Z 暫存器給出的基底位址達到 63 個位址位置。

當使用具有自動預遞減和後遞增的暫存器間接定址模式時,位址暫存器 X、Y 和 Z 會遞減或遞增。

ATtiny32/64/128 中的 256 個通用工作暫存器、512 個 I/O 暫存器和 25/45/85 位元組內部資料 SRAM 都可以透過所有這些尋址模式進行存取。登記冊 File 描述於 「根- 通用目的暫存器 File” 第 10 頁.

圖 5-2。 資料記憶體映射 記憶體映射2

資料記憶體存取 時代

本節介紹內部記憶體存取的一般存取時序概念。內部資料 SRAM 存取在兩個 clkCPU 週期內執行,如 圖5-3.

圖 5-3。 片上資料 SRAM 存取週期 晶片數據 EEPROM資料記憶體

ATtiny25/45/85 包含 128/256/512 位元組的資料 EEPROM 記憶體。它被組織為單獨的資料空間,可以在其中讀取和寫入單一位元組。 EEPROM 的耐用性至少為 100,000 次寫入/擦除週期。以下介紹 EEPROM 和 CPU 之間的訪問,指定 EEPROM 位址暫存器、EEPROM 資料暫存器和 EEPROM 控制暫存器。詳情請參閱 第 151 頁上的“序列下載”.

EEPROM 讀取/寫入訪問

EEPROM 存取暫存器可在 I/O 空間中存取。

EEPROM 的寫入存取時間如下 第5頁的表1-21。然而,自計時功能可以讓使用者軟體偵測何時可以寫入下一個位元組。如果使用者程式碼包含寫入 EEPROM 的指令,則必須採取一些預防措施。在經過嚴格濾波的電源中,VCC 可能會緩慢上升或下降

加電/斷電。這會導致設備在一段時間內以一定的速度運行tage 低於指定的所使用時脈頻率的最小值。看 第 19 頁上的“防止 EEPROM 損壞” 有關如何避免這些情況下出現問題的詳細資訊。

為了防止意外寫入 EEPROM,必須遵循特定的寫入程式。參考 “原子 第 17 頁上的“位元組編程” 和 第 17 頁上的“分割位元組編程” 有關詳細資訊。

當讀取 EEPROM 時,CPU 在執行下一條指令之前暫停四個時脈週期。當寫入 EEPROM 時,CPU 在執行下一條指令之前會暫停兩個時脈週期。

原子位元組編程

使用原子位元組編程是最簡單的模式。當 EEPROM 寫入一個位元組時,使用者必須將位址寫入 EEAR 暫存器,將資料寫入 EEDR 暫存器。如果 EEPMn 位元為零,則寫入 EEPE(寫入 EEMPE 後的四個週期)將觸發擦除/寫入操作。擦除和寫入週期均在一次操作中完成,總編程時間如下所示 第5頁的表1-21。 EEPE 位元保持置位直到擦除和寫入操作完成。當裝置忙於程式設計時,無法執行任何其他 EEPROM 操作。

分割位元組編程

可以將擦除和寫入週期分為兩個不同的操作。如果系統在某個有限的時間段內需要較短的存取時間(通常如果電源電壓較低),這可能會很有用。tage 下降)。為了搶先機 tag在該方法中,要求在寫入操作之前已經擦除了要寫入的位置。但由於擦除和寫入操作是分開的,因此當系統允許執行時間關鍵操作時(通常在上電後),可以執行擦除操作。

擦除

若要擦除一個位元組,必須將位址寫入 EEAR。如果 EEPMn 位元為 0b01,寫入 EEPE(寫入 EEMPE 後的四個週期)將僅觸發擦除操作(程式設計時間在 表 5-1 第 21 頁)。 EEPE 位元保持置位直到擦除操作完成。當裝置忙於程式設計時,無法執行任何其他 EEPROM 操作。

要寫入位置,使用者必須將位址寫入 EEAR,將資料寫入 EEDR。如果 EEPMn 位元為 0b10,則寫入 EEPE(寫入 EEMPE 後的四個週期)將僅觸發寫入操作(程式設計時間在 第5頁的表1-21)。 EEPE 位元保持置位直到寫入作業完成。如果要寫入的位置在寫入之前沒有被擦除,則儲存的資料必須被視為遺失。當裝置忙於程式設計時,無法執行任何其他 EEPROM 操作。

校準振盪器用於對 EEPROM 存取進行計時。確保振盪器頻率符合中所述的要求 第 31 頁上的“OSCCAL – 振盪器校準暫存器”.

以下代碼例如amp檔案顯示了用於擦除、寫入或原子寫入 EEPROM 的一個組件和一個 C 函數。前任amp這些文件假定中斷是受控制的(例如,透過全域停用中斷),以便在執行這些函數期間不會發生中斷。

彙編程式碼Example
EEPROM_寫入:

;等待之前的寫入完成

SBIC EECR、EEPE

rjmp EEPROM_write

;設定編程模式

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

出 EECR,r16

;在位址暫存器中設定位址(r18:r17)

出 EEARH,r18

出 EEARL,r17

;將資料(r19)寫入資料暫存器

出 EEDR,r19

;將邏輯 1 寫入 EEMPE

sbi EECR、EEMPE

;透過設定 EEPE 啟動 eeprom 寫入

sbi EECR、EEPE

雷特

C程式碼Example
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)

{

/* 等待前一個寫入完成 */ while(EECR & (1<

;

/* 設定編程模式 */

有效效率比 = (0<

/* 設定位址與資料暫存器 */ EEAR = ucAddress;

EEDR = ucData;

/* 將邏輯 1 寫入 EEMPE */

EECR |= (1<

/* 透過設定 EEPE 啟動 eeprom 寫入 */

EECR |= (1<

}

下一個代碼例如amp這些檔案顯示了用於讀取 EEPROM 的彙編和 C 函數。前任amp這些檔案假定中斷受到控制,以便在執行這些函數期間不會發生中斷。

彙編程式碼Example
EEPROM_讀取:

;等待之前的寫入完成

SBIC EECR、EEPE

rjmp EEPROM_read

;在位址暫存器中設定位址(r18:r17)

出 EEARH,r18

出 EEARL,r17

;透過寫入EERE啟動eeprom讀取

sbi EECR、EERE

;從資料暫存器讀取數據

在r16,EEDR中

雷特

C程式碼Example
無符號字元 EEPROM_read(無符號字元 ucAddress)

{

/* 等待之前的寫入完成 */

而(EECR & (1<

;

/* 設定位址暫存器 */ EEAR = ucAddress;

/* 透過寫入 EERE 啟動 eeprom 讀取 */

EECR |= (1<

/* 從資料暫存器返回資料 */

返回 EEDR;

}

防止 EEPROM 損壞

在低 VCC 期間,EEPROM 資料可能會損壞,因為電源電壓tage 太低,CPU 和 EEPROM 無法正常運作。這些問題與使用 EEPROM 的板級系統相同,並且應採用相同的設計解決方案。

EEPROM 資料損壞可能由以下兩種情況引起:tage太低了。首先,對 EEPROM 的常規寫入序列需要最小容量tage 正確操作。其次,如果供應量過多,CPU本身可能會錯誤地執行指令。tage太低了。

透過遵循以下設計建議可以輕鬆避免 EEPROM 資料損壞:

在電源電壓不足期間保持 AVR RESET 有效(低電平)tage.這可以透過啟用內部欠壓檢測器 (BOD) 來完成。如果內部 BOD 的偵測水準與

如果需要檢測電平,可以使用外部低VCC重設保護電路。如果在寫入操作正在進行時發生復位,只要電源電壓充足,寫入操作就會完成。tage 就足夠了。

輸入/輸出記憶體

ATtiny25/45/85的I/O空間定義如圖 第 200 頁上的“寄存器摘要”.

所有 ATtiny25/45/85 I/O 和周邊均放置在 I/O 空間。所有 I/O 位置均可透過 LD/LDS/LDD 和 ST/STS/STD 指令訪問,在 32 個通用工作暫存器和 I/O 空間之間傳輸資料。位址範圍 0x00 – 0x1F 內的 I/O 暫存器可使用 SBI 和 CBI 指令直接進行位元存取。在這些暫存器中,可以使用 SBIS 和 SBIC 指令檢查單位元的值。有關更多詳細信息,請參閱指令集部分。當使用 I/O 特定指令 IN 和 OUT 時,必須使用 I/O 位址 0x00 – 0x3F。當使用 LD 和 ST 指令將 I/O 暫存器定址為資料空間時,必須將 0x20 新增至這些位址。

為了與未來設備兼容,保留位在訪問時應寫入零。 永遠不要寫入保留的 I/O 內存地址。

某些狀態標誌可透過寫入邏輯 0 來清除。請注意,CBI 和 SBI 指令僅對指定位元進行操作,因此可用於包含此類狀態標誌的暫存器。 CBI 和 SBI 指令僅適用於暫存器 00x​​0 至 1xXNUMXF。

I/O 和周邊控制暫存器將在後面的章節中解釋。

註冊說明

EEARH – EEPROM 位址暫存器

位元 7 6 5 4 3 2 1 0
0x1F EEAR8 歐洲環境研究協會
讀/寫 R R R R R R R 讀/寫
初始值 0 0 0 0 0 0 0 X/0

位 7:1 – Res:保留位

這些位元保留供將來使用,並且始終讀為零。

位元 0 – EEAR8:EEPROM 位址

這是 ATtiny85 的最高有效 EEPROM 位址位元。在 EEPROM 較少的裝置中,即 ATtiny25/ATtiny45,該位元被保留,並且始終讀為零。 EEPROM 位址暫存器 (EEAR) 的初始值未定義,因此在存取 EEPROM 之前必須寫入正確的值。

EEARL – EEPROM 位址暫存器

位元

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 厄爾
後置/寫入 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 X X X X X X X X

位元 7 – EEAR7:EEPROM 位址

這是 ATtiny45 的最高有效 EEPROM 位址位元。在 EEPROM 較少的裝置中,即 ATtiny25,該位元被保留,並且始終讀為零。 EEPROM 位址暫存器 (EEAR) 的初始值未定義,因此在存取 EEPROM 之前必須寫入正確的值。

位元 6:0 – EEAR[6:0]:EEPROM 位址

這些是 EEPROM 位址暫存器的(低)位元。 EEPROM 資料位元組在 0…(128/256/512-1) 範圍內線性尋址。 EEAR 的初始值未定義,因此必須在存取 EEPROM 之前寫入正確的值。

EEDR——EEPROM 資料暫存器

位元 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

對於 EEPROM 寫入操作,EEDR 暫存器包含要寫入 EEAR 暫存器指定位址中的 EEPROM 的資料。對於 EEPROM 讀取操作,EEDR 包含從 EEPROM 讀取的數據

EEPROM 的位址由 EEAR 給予。

 

5.5.4 EECR——EEPROM 控制暫存器

位 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 怪異 EEEMPE EEPE 能源效率 EECR
讀/寫 R R R/W 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 X X 0 0 X 0

位 7 – Res:保留位

該位保留供將來使用,並且在 ATtiny0/25/45 中始終讀為 85。為了與未來的 AVR 設備相容,請始終將該位元寫入零。讀完後,屏蔽掉這一位。

位 6 – Res:保留位

該位在 ATtiny25/45/85 中保留,並且始終讀為零。

位元 5:4 – EEPM[1:0]:EEPROM 程式模式位

EEPROM 程式模式位元設定定義了寫入 EEPE 時將觸發的程式操作。可以在一個原子操作中對資料進行編程(擦除舊值並編程新值),或者將擦除和寫入操作拆分為兩個不同的操作。不同模式的程式時間如下所示 表5-1。當 EEPE 設定時,對 EEPMn 的任何寫入都將被忽略。重設期間,EEPMn 位元將重設為 0b00,除非 EEPROM 正忙於編程。

表 5-1。 EEPROM 模式位

EEPM1 EEPM0 程式設計時間 手術
0 0 3.4毫秒 擦除和寫入一次操作(原子操作)
0 1 1.8毫秒 僅擦除
1 0 1.8毫秒 只寫
1 1 保留供將來使用

位元 3 – EERIE:EEPROM 就緒中斷啟用

如果 SREG 中的 I 位元被置位,則將 EERIE 寫入 1 會啟用 EEPROM 就緒中斷。將 EERIE 寫入零會停用中斷。當非揮發性記憶體準備好編程時,EEPROM 就緒中斷會產生恆定中斷。

位元 2 – EEMPE:EEPROM 主程式啟用

EEMPE 位元決定將 EEPE 寫入 1 是否有效。

當 EEMPE 置位時,在四個時脈週期內設定 EEPE 將對所選位址的 EEPROM 進行程式設計。如果 EEMPE 為零,則設定 EEPE 將無法運作。當 EEMPE 被軟體寫入 1 時,硬體會在四個時脈週期後將該位元清除。

位元 1 – EEPE:EEPROM 程式啟用

EEPROM 程式設計使能訊號 EEPE 是 EEPROM 的程式設計啟用訊號。當寫入 EEPE 時,將根據 EEPMn 位元設定對 EEPROM 進行程式設計。在將邏輯 1 寫入 EEPE 之前,必須先將 EEMPE 位元寫入 1,否則不會發生 EEPROM 寫入操作。當寫入存取時間結束時,EEPE 位元由硬體清除。當 EEPE 被設定時,CPU 在執行下一指令之前暫停兩個週期。

位元 0 – EERE:EEPROM 讀取使能

EEPROM 讀取使能訊號 – EERE – 是 EEPROM 的讀選通訊號。當在 EEAR 暫存器中設定正確的位址時,必須將 EERE 位元寫入 1 以觸發 EEPROM 讀取。 EEPROM 讀取存取需要一條指令,並且要求的資料立即可用。當讀取 EEPROM 時,CPU 在執行下一條指令之前暫停四個週期。使用者應在開始讀取操作之前輪詢 EEPE 位元。如果正在進行寫入操作,則既不能讀取 EEPROM,也不能更改 EEAR 暫存器。

系統時鐘和時鐘選項

時鐘系統及其分佈

時鐘分配

CPU時鐘

CPU 時脈被路由到與 AVR 核心操作相關的系統部分。前任amp此類模組的檔案是通用暫存器 File、狀態暫存器和保存堆疊指標的資料記憶體。停止 CPU 時脈會阻止核心執行一般操作和計算。

I/O 時鐘 – clkI/O

大多數 I/O 模組(如定時器/計數器)都使用 I/O 時鐘。 I/O 時脈也由外部中斷模組使用,但請注意,某些外部中斷是由非同步邏輯偵測到的,即使 I/O 時脈停止,也允許偵測到此類中斷。

快閃記憶體時鐘 – clkFLASH

Flash 時脈控制Flash 介面的操作。快閃記憶體時脈通常與 CPU 時脈同時啟動。

ADC 時鐘 – clkADC

ADC 具有專用時脈域。這允許停止 CPU 和 I/O 時鐘,以減少數位電路產生的雜訊。這可提供更準確的 ADC 轉換結果。

用於快速產生週邊時脈的內部 PLL – clkPCK

ATtiny25/45/85 中的內部 PLL 產生時脈頻率,此時脈頻率是來源輸入的 8 倍。預設情況下,PLL 使用內部 8.0 MHz RC 振盪器的輸出作為來源。或者,如果 PLLCSR 的 LSM 位元被置位,則 PLL 將使用 RC 振盪器的輸出除以 64。因此,PLL 的輸出(快速外設時脈)為 1 MHz。可選擇快速外設時鐘或從中預分頻的時鐘作為定時器/計數器 XNUMX 的時鐘來源或系統時鐘。看 圖6-2。當 PLLCSR 的 LSM 置位時,快速週邊時脈的頻率被除以 32,產生 XNUMX MHz 的時脈頻率。請注意,如果 PLLCLK 用作系統時鐘,則無法設定 LSM。

圖 6-2。 PCK 時脈系統。 PCK時鐘

PLL 鎖定在 RC 振盪器上,透過 OSCCAL 暫存器調整 RC 振盪器將同時調整快速週邊時脈。然而,即使 RC 振盪器的頻率高於 8 MHz,快速外設時脈頻率也會在 85 MHz(最壞情況)處飽和,並保持在最大頻率振盪。應該注意的是,這種情況下的 PLL 不再與 RC 振盪器時脈鎖定。因此,建議不要將 OSCCAL 調整到高於 8 MHz 的頻率,以將 PLL 保持在正確的工作範圍內。

內部 PLL 在以下情況下啟用:

暫存器 PLLCSR 中的 PLLE 位元被置位。

CKSEL 熔絲被編程為「0001」。

CKSEL 熔絲被編程為「0011」。

當 PLL 鎖定時,PLLCSR 位元 PLOCK 被置位。在掉電和待機睡眠模式下,內部 RC 振盪器和 PLL 均關閉。

ATtiny15 相容模式下的內部 PLL

由於 ATtiny25/45/85 是 ATtiny15 使用者的遷移設備,因此有一個 ATtiny15 相容模式用於向後相容。透過將 CKSEL 熔絲編程為「15」來選擇 ATtiny0011 相容模式。

在 ATtiny15 相容模式下,內部 RC 振盪器的頻率校準至 6.4 MHz,PLL 的倍增係數設定為 4x。看 圖6-3。透過這些調整,時脈系統與 ATtiny15 相容,最終的快速外設時脈頻率為 25.6 MHz(與 ATtiny15 相同)。

圖 6-3。 ATtiny15 相容模式下的 PCK 時脈系統。 計時系統

時鐘源

此元件具有以下時鐘源選項,可透過快閃記憶體熔絲位進行選擇,如下所示。來自所選來源的時脈被輸入到 AVR 時脈產生器,並路由到適當的模組。

表 6-1。 設備時鐘選項選擇

設備時鐘選項 CKSEL[3:0](1)
外部時鐘 (看 第 26 頁) 0000
高頻 PLL 時鐘 (看 第 26 頁) 0001
校準內部振盪器 (看 第 27 頁) 0010(2)
校準內部振盪器 (看 第 27 頁) 0011(3)
內部 128 kHz 振盪器 (看 第 28 頁) 0100
低頻晶體振盪器 (看 第 29 頁) 0110
晶體振盪器/陶瓷諧振器 (看 第 29 頁) 1000 – 1111
預訂的 0101, 0111

對於所有熔絲,「1」表示未編程,「0」表示已編程。

設備出廠時已選擇此選項。

這將選擇 ATtiny15 相容模式,其中系統時脈被四分頻,從而產生 1.6 MHz 時脈頻率。有關更多信息,請參閱 第 27 頁上的“校準內部振盪器”.

以下部分給出了每個時鐘選項的各種選擇。當CPU從掉電狀態喚醒時,所選時脈來源用於為啟動計時,確保指令執行開始前振盪器穩定運作。當CPU從重設開始時,有一個額外的延遲,允許電源在開始正常操作之前達到穩定的水平。看門狗振盪器用於對啟動時間的即時部分進行計時。每次逾時使用的 WDT 振盪器週期數如下所示 表6-2.

表 6-2。 看門狗振盪器週期數

打字超時 循環次數
4毫秒 512
64毫秒 8K (8,192)

外部時鐘

若要從外部時脈來源驅動元件,應如下所示驅動 CLKI 圖6-4。要在外部時脈上運行裝置,CKSEL 熔絲必須編程為「00」。

圖 6-4。 外部時脈驅動配置

圖6.4

選擇此時脈來源後,啟動時間由 SUT 熔絲決定,如下所示 表6-3.

表 6-3。 外部時脈選擇的啟動時間

待測[1:0] 掉電啟動時間 復位的額外延遲 推薦使用方式
00 6 CK 14CK 啟用 BOD
01 6 CK 14CK + 4 毫秒 功率快速上升
10 6 CK 14CK + 64 毫秒 緩慢上升的力量
11 預訂的

在應用外部時脈時,需要避免所施加的時脈頻率突然變化,以確保MCU穩定運作。一個時脈週期到下一時脈週期的頻率變化超過 2% 可能會導致不可預測的行為。需要確保MCU在時脈頻率變化期間保持重設狀態。

請注意,系統時鐘預售可用於實現內部時脈頻率的運行時更改,同時仍確保穩定運作。參考 第 31 頁上的“系統時鐘預分頻器” 了解詳情。

高頻 PLL 時鐘

有一個內部 PLL,提供標稱 64 MHz 時脈速率,鎖定到 RC 振盪器,以供外部設定時器/計數器 1 和系統時脈來源使用。當選擇作為系統時鐘來源時,透過將 CKSEL 熔絲編程為“0001”,它被除以四,如下所示 表6-4.

表 6-4。 高頻 PLL 時脈工作模式

CKSEL[3:0] 標稱頻率
0001 16兆赫

選擇此時脈來源後,啟動時間由 SUT 熔絲決定,如下所示 表6-5.

表 6-5。 高頻 PLL 時脈的啟動時間

待測[1:0] 斷電啟動時間 上電重設的額外延遲 (VCC = 5.0V) 推薦用法
00 14CK + 1K (1024) CK + 4 毫秒 4毫秒 啟用 BOD

表 6-5。高頻 PLL 時脈的啟動時間

待測[1:0] 斷電啟動時間 上電重設的額外延遲 (VCC = 5.0V) 推薦用法
01 14CK + 16K (16384) CK + 4 毫秒 4毫秒 功率快速上升
10 14CK + 1K (1024) CK + 64 毫秒 4毫秒 緩慢上升的力量
11 14CK + 16K (16384) CK + 64 毫秒 4毫秒 緩慢上升的力量

校準內部振盪器

預設情況下,內部 RC 振盪器提供約 8.0 MHz 時脈。雖然卷tag該時鐘取決於溫度和溫度,使用者可以非常準確地校準該時鐘。看 “校準內部RC振盪器精度 第 164 頁 和 第 192 頁上的“內部振盪器速度” 了解更多詳情。此裝置出廠時已編程 CKDIV8 保險絲。看 第 31 頁上的“系統時鐘預分頻器” 了解更多詳情。

透過對 CKSEL 熔絲進行編程,可以選擇此時鐘作為系統時鐘,如下所示 第 6-6 頁表

27。如果選擇,它將無需外部組件即可運行。重設期間,硬體將預先編程的校準值載入到 OSCCAL 暫存器中,從而自動校準 RC 振盪器。此校準的精度顯示為工廠校準 第21頁的表2-164.

透過從 SW 變更 OSCCAL 暫存器,請參閱 第 31 頁上的“OSCCAL – 振盪器校準暫存器”,可以獲得比使用工廠校準更高的校準精度。此校準的精度顯示為使用者校準 第21頁的表2-164.

當此振盪器用作晶片時鐘時,看門狗振盪器仍將用於看門狗定時器和重設逾時。有關預編程校準值的更多信息,請參閱部分 「卡利- 第 150 頁.

也可以透過將 CKSEL 熔絲寫入「6.4」來設定內部振盪器以提供 0011 MHz 時鐘,如下所示 表6-6 以下。此設定稱為 ATtiny15 相容模式,旨在提供 6.4 MHz 的校準時脈來源,如 ATtiny15 中一樣。在 ATtiny15 相容模式下,PLL 使用以 6.4 MHz 運作的內部振盪器為定時器/計數器 25.6 產生 1 MHz 週邊時脈訊號(請參見 “8位元定時器/計數器1 ATtiny15 模式」(第 95 頁))。請注意,在此操作模式下,6.4 MHz 時脈訊號始終除以四,從而提供 1.6 MHz 系統時脈。

表 6-6。內部校準 RC 振盪器工作模式

CKSEL[3:0] 標稱頻率
0010(1) 8.0兆赫
0011(2) 6.4兆赫

設備出廠時已選擇此選項。

此設定將選擇 ATtiny15 相容模式,其中系統時脈除以四,從而產生 1.6 MHz 時脈頻率。

當選擇校準的 8 MHz 內部振盪器作為時脈源時,啟動時間由 SUT 熔絲決定,如下所示 表6-7 以下。

表 6-7。 內部校準 RC 振盪器時鐘的啟動時間

待測[1:0] 掉電啟動時間 復位的額外延遲 (VCC = 5.0V) 推薦使用方式
00 6 CK 14CK(1) 啟用 BOD
01 6 CK 14CK + 4 毫秒 功率快速上升
10(2) 6 CK 14CK + 64 毫秒 緩慢上升的力量
11 預訂的

1. 如果對 RSTDISBL 熔絲進行編程,則該啟動時間將增加至 14CK + 4 ms,以確保可以進入編程模式。
2. 設備出廠時已選擇此選項。

在 ATtiny15 相容模式下,啟動時間由 SUT 熔絲決定,如下所示 表6-8 以下。

表 6-8。 內部校準 RC 振盪器時鐘的啟動時間(ATtiny15 模式)

待測[1:0] 掉電啟動時間 復位的額外延遲 (VCC = 5.0V) 推薦使用方式
00 6 CK 14CK + 64 毫秒
01 6 CK 14CK + 64 毫秒
10 6 CK 14CK + 4 毫秒
11 1 CK 14CK(1)

注意:如果對 RSTDISBL 熔絲進行編程,則該啟動時間將增加至 14CK + 4 ms,以確保可以進入編程模式。

總之,有關 ATtiny15 相容模式的更多資訊可以在各部分中找到 “連接埠 B (PB5:PB0)” 開啟 第 2 頁在第 15 頁上的“ATtiny24 相容模式下的內部 PLL”“ATtiny8 模式下的 1 位元計時器/計數器 15”開啟 第 95 頁「debugWIRE 的限制」(第 140 頁)第 150 頁上的“校準位元組” 並在表中 “時鐘預分頻器 選擇」(第 33 頁).

內部 128 kHz 振盪器

128 kHz 內部振盪器是低功耗振盪器,提供 128 kHz 時脈。頻率為 3V、25°C 時的標稱頻率。透過將 CKSEL 熔絲編程為“0100”,可以選擇該時鐘作為系統時鐘。

選擇此時脈來源後,啟動時間由 SUT 熔絲決定,如下所示 表6-9.

表 6-9。 128 kHz 內部振盪器的啟動時間

待測[1:0] 掉電啟動時間 復位的額外延遲 推薦使用方式
00 6 CK 14CK(1) 啟用 BOD
01 6 CK 14CK + 4 毫秒 功率快速上升
10 6 CK 14CK + 64 毫秒 緩慢上升的力量
11 預訂的

注意:如果對 RSTDISBL 熔絲進行編程,則該啟動時間將增加至 14CK + 4 ms,以確保可以進入編程模式。

低頻晶體振盪器

要使用 32.768 kHz 手錶晶體作為裝置的時脈源,必須透過將 CKSEL 熔絲設定為「0110」來選擇低頻晶體振盪器。晶體應如圖所示連接 圖6-5。若要找到適合 32.768 kHz 晶體的負載電容,請查閱製造商的資料表。

選擇此振盪器後,啟動時間由 SUT 熔絲決定,如下所示 表6-10.

表 6-10。低頻晶體振盪器時鐘選擇的啟動時間

待測[1:0] 斷電啟動時間 復位的額外延遲 (VCC = 5.0V) 推薦用法
00 1K (1024) CK(1) 4毫秒 快速上升功率或 BOD 啟用
01 1K (1024) CK(1) 64毫秒 緩慢上升的力量
10 32K (32768) CK 64毫秒 啟動時頻率穩定
11 預訂的

注意:僅當啟動時的頻率穩定性不重要時才應使用這些選項。

低頻晶體振盪器提供內部負載電容,請參閱 表6-11 在每個 TOSC 引腳。

表 6-11。 低頻晶振電容

裝置 32 kHz 振盪器。類型 帽 (Xtal1/Tosc1) 帽 (Xtal2/Tosc2)
AT小25/45/85 系統振盪器。 16皮法 6皮法

晶體振盪器/陶瓷諧振器

XTAL1 和 XTAL2 分別是反相電路的輸入和輸出 amplifier可以配置為用作片上振盪器,如圖所示 圖6-5。可以使用石英晶體或陶瓷諧振器。

對於晶體和諧振器,C1 和 C2 應始終相等。電容器的最佳值取決於所使用的晶體或諧振器、雜散電容的量以及環境的電磁雜訊。選擇與晶體一起使用的電容器的一些初步指南在 表6-12 以下。對於陶瓷諧振器,應使用製造商給出的電容器值。

表 6-12。 晶體振盪器工作模式

CKSEL[3:1] 頻率範圍(MHz) 與晶體一起使用的電容器 C1 和 C2 的建議範圍 (pF)
100(1) 0.4 – 0.9
101 0.9 – 3.0 12 – 22
110 3.0 – 8.0 12 – 22
111 8.0 – 12 – 22

注意:此選項不應與晶體一起使用,只能與陶瓷諧振器一起使用。

該振盪器可以在三種不同的模式下運行,每種模式都針對特定的頻率範圍進行了最佳化。工作模式由熔絲 CKSEL[3:1] 選擇,如下所示 表6-12.

CKSEL0 熔絲與 SUT[1:0] 熔絲一起選擇啟動時間,如下所示 表6-13.

表 6-13。 晶體振盪器時鐘選擇的啟動時間

CKSEL0 待測[1:0] 掉電啟動時間 復位的額外延遲 推薦使用方式
0 00 258 CK(1) 14CK + 4 毫秒 陶瓷諧振器,功率快速上升
0 01 258 CK(1) 14CK + 64 毫秒 陶瓷諧振器,功率緩慢上升
0 10 1K (1024) CK(2) 14CK 陶瓷諧振器,啟用 BOD
0 11 1K (1024)CK(2) 14CK + 4 毫秒 陶瓷諧振器,功率快速上升
1 00 1K (1024)CK(2) 14CK + 64 毫秒 陶瓷諧振器,功率緩慢上升
1 01 16K (16384) CK 14CK 晶體振盪器,BOD 啟用
1 10 16K (16384) CK 14CK + 4 毫秒 晶振,功率快速上升
1 11 16K (16384) CK 14CK + 64 毫秒 晶振,功率緩慢上升

筆記

只有當運作頻率不接近裝置的最大頻率,且啟動​​時的頻率穩定性對應用不重要時,才應使用這些選項。這些選項不適用於晶體。

這些選項旨在與陶瓷諧振器一起使用,並確保啟動時的頻率穩定性。當工作頻率不接近裝置的最大頻率,且啟動​​時的頻率穩定性對應用並不重要時,它們也可以與晶體一起使用。

預設時鐘來源

此裝置出廠時 CKSEL =「0010」、SUT =「10」且已編程 CKDIV8。因此,預設時脈源設定是內部 RC 振盪器,運作頻率為 8 MHz,啟動時間最長,初始系統時脈預分頻為 8,產生 1.0 MHz 系統時脈。此預設設定可確保所有使用者都可以使用系統內或高容量進行所需的時鐘來源設定tag電子程式設計師。

系統時鐘預分頻器

ATtiny25/45/85系統時鐘可以透過設定進行分頻 第 32 頁上的“CLKPR – 時脈預分頻暫存器”。當處理能力要求較低時,此功能可用於降低功耗。這可以與所有時脈來源選項一起使用,並且它將影響CPU和所有同步週邊裝置的時脈頻率。 clkI/O、clkADC、clkCPU 和 clkFLASH 除以一個因子,如下圖所示 第6頁的表15-33.

切換時間

在預分頻器設定之間切換時,系統時鐘預分頻器可確保時脈系統中不會出現毛刺,且中間頻率不會高於與先前設定相對應的時脈頻率,也不高於與新設定相對應的時脈頻率。

實現預分頻器的漣波計數器以未分頻時脈的頻率運行,該頻率可能比CPU的時脈頻率更快。因此,無法確定預分頻器的狀態 - 即使它是可讀的,並且無法準確預測從一個時鐘分頻切換到另一個時鐘分頻所需的確切時間。

從寫入 CLKPS 值開始,新時脈頻率生效前需要經過 T1 + T2 和 T1 + 2*T2 之間的時間。在此間隔內,產生 2 個有效時脈沿。這裡,T1是前一個時鐘週期,T2是與新的預分頻器設定相對應的週期。

時脈輸出緩衝器

此元件可以在 CLKO 引腳上輸出系統時鐘(當不用作 XTAL2 引腳時)。若要啟用輸出,必須對 CKOUT 熔絲進行程式設計。當晶片時脈用於驅動系統上的其他電路時,此模式適用。請注意,復位期間不會輸出時鐘,並且在對熔絲進行編程時,I/O 引腳的正常操作將被覆蓋。當時脈在 CLKO 上輸出時,可以選擇內部 RC 振盪器、WDT 振盪器、PLL 和外部時脈 (CLKI)。晶體振盪器(XTAL1、XTAL2)不能用於 CLKO 上的時鐘輸出。如果使用系統時鐘預分頻器,則輸出分頻後的系統時鐘。

註冊說明

OSCCAL-振盪器校準暫存器

位元 7 6 5 4 3 2 1 0
0x31 校準7 校準6 校準5 校準4 校準3 校準2 校準1 校準0 OSCCAL
讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫

位元 7:0 – CAL[7:0]:振盪器校準值

振盪器校準暫存器用於調整校準的內部 RC 振盪器,以消除振盪器頻率的製程變化。在晶片重設期間,預先編程的校準值會自動寫入此暫存器,從而給出如中指定的工廠校準頻率 第21頁的表2-164。應用軟體可以寫入此暫存器來改變振盪器頻率。振盪器可以校準到指定的頻率 第21頁的表2-164。無法保證超出該範圍的校準。

請注意,此振盪器用於對 EEPROM 和快閃記憶體寫入存取進行計時,這些寫入時間將相應受到影響。若寫入 EEPROM 或 Flash,請勿校準至超過 8.8 MHz。否則,EEPROM 或Flash 寫入可能會失敗。

CAL7 位元決定振盪器的操作範圍。將該位元設為 0 給出最低頻率範圍,將該位元設為 1 給出最高頻率範圍。兩個頻率範圍重疊,換句話說,OSCCAL = 0x7F 的設定給出的頻率高於 OSCCAL = 0x80 的頻率。

CAL[6:0] 位元用於在選定範圍內調整頻率。設定 0x00 給出該範圍內的最低頻率,設定 0x7F 給出該範圍內的最高頻率。

為確保MCU穩定工作,校準值應改小。一個週期到下一週期的頻率變化超過 2% 可能會導致不可預測的行為。每次校準的 OSCCAL 變化不應超過 0x20。需要確保MCU在時脈頻率變化期間保持重設狀態

表 6-14。內部 RC 振盪器頻率範圍

OSCCAL值 相對於標稱頻率的典型最低頻率 相對於標稱頻率的典型最高頻率
0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR-時脈預分頻暫存器

位元 7 6 5 4 3 2 1 0
0x26 時鐘 時脈3 時脈2 時脈1 時脈0 時脈響應
讀/寫 讀/寫 R R R 讀/寫 讀/寫 讀/寫 讀/寫

初始值 0 0 0 0 參見位元描述

位元 7 – CLKPCE:時脈預分頻器變更啟用

必須將 CLKPCE 位元寫入邏輯 1 才能變更 CLKPS 位元。只有當 CLKPR 中的其他位元同時寫入零時,CLKPCE 位元才會更新。 CLKPCE 在寫入後四個週期或寫入 CLKPS 位元時由硬體清除。在該超時時間內重寫 CLKPCE 位元既不會延長逾時週期,也不會清除 CLKPCE 位元。

位 6:4 – Res:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 3:0 – CLKPS[3:0]:時鐘預分頻器選擇位元 3 – 0

這些位元定義所選時鐘源和內部系統時鐘之間的分頻係數。這些位元可以在運行時寫入,以改變時脈頻率以滿足應用程式的要求。由於分頻器對 MCU 的主時脈輸入進行分頻,因此使用分頻因子時所有同步外設的速度都會降低。除法係數如下 表6-15.

為了避免時脈頻率的意外更改,必須遵循特殊的寫入程序來更改 CLKPS 位元:

將時脈預分頻器變更啟用 (CLKPCE) 位元寫入 1,並將 CLKPR 中的所有其他位元寫入 0。

在四個週期內,將所需值寫入 CLKPS,同時將零寫入 CLKPCE。

更改預分頻器設定時必須停用中斷,以確保寫入過程不會中斷。

CKDIV8 熔絲決定 CLKPS 位的初始值。如果 CKDIV8 未編程,CLKPS 位元將重設為「0000」。如果對 CKDIV8 進行編程,則 CLKPS 位元將重設為“0011”,從而在啟動時提供 8 的分頻係數。如果所選時脈來源的頻率高於裝置目前工作條件下的最大頻率,則應使用此功能。請注意,無論 CKDIVXNUMX 熔絲設定如何,都可以將任何值寫入 CLKPS 位元。應用軟體必須確保有足夠的分頻係數

如果所選時脈來源的頻率高於裝置在目前工作條件下的最大頻率,則選擇該時脈來源。此裝置出廠時已編程 CKDIV8 保險絲。

表 6-15。 時鐘預分頻器選擇

時脈3 時脈2 時脈1 時脈0 時鐘分頻係數
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 預訂的
1 0 1 0 預訂的
1 0 1 1 預訂的
1 1 0 0 預訂的
1 1 0 1 預訂的
1 1 1 0 預訂的
1 1 1 1 預訂的

注意:預分頻器在 ATtiny15 相容模式下被停用,寫入 CLKPR 或編程 CKDIV8 熔絲都不會對系統時脈(始終為 1.6 MHz)產生任何影響。

電源管理和睡眠模式

高效能和業界領先的程式碼效率使 AVR 微控制器成為低功耗應用的理想選擇。此外,睡眠模式使應用程式能夠關閉 MCU 中未使用的模組,從而節省功耗。 AVR 提供各種睡眠模式,讓用戶可以根據應用程式的要求自訂功耗。

睡眠模式

第6頁的圖1-23 介紹了不同的時鐘系統及其在 ATtiny25/45/85 中的分佈。此圖有助於選擇合適的睡眠模式。 表7-1 顯示不同的睡眠模式及其喚醒來源。

表 7-1。不同睡眠模式下的活動時鐘域與喚醒來源

活動時脈域 振盪器 喚醒來源
睡眠模式 時鐘CPU 時鐘快閃記憶體 時鐘IO 時鐘ADC 時鐘PCK 主時鐘源使能 INT0 和引腳變化 SPM/EEPROM

準備好

 

USI 啟動條件

類比數位轉換器 其他輸入/輸出 看門狗 打斷
閒置的 X X X X X X X X X X
ADC 降噪 X X X(1) X X X X
掉電 X(1) X X

注意:對於INT0,僅電平中斷。

要進入三種睡眠模式中的任何一種,必須將 MCUCR 中的 SE 位元寫入邏輯 1,並且必須執行 SLEEP 指令。 MCUCR 暫存器中的 SM[0:XNUMX] 位元選擇 SLEEP 指令將啟動哪種睡眠模式(空閒、ADC 降噪或掉電)。看 表7-2 進行總結。

如果在 MCU 處於睡眠模式時發生允許的中斷,則 MCU 會被喚醒。然後,除啟動時間外,MCU 還暫停四個週期,執行中斷例程,並從 SLEEP 之後的指令恢復執行。登記冊的內容 File 當裝置從睡眠狀態喚醒時,SRAM 和 SRAM 不會改變。如果在睡眠模式期間發生復位,MCU 將喚醒並從復位向量執行。

注意:如果使用電平觸發中斷來喚醒,則更改後的電平必須保持一段時間才能喚醒 MCU(並讓 MCU 進入中斷服務程序)。看 第 49 頁上的“外部中斷” 了解詳情。

空閒模式

當 SM[1:0] 位元寫入 00 時,SLEEP 指令使 MCU 進入空閒模式,停止 CPU,但允許模擬比較器、ADC、USI、定時器/計數器、看門狗和中斷系統繼續運作。這種睡眠模式基本上停止 clkCPU 和 clkFLASH,同時允許其他時鐘運作。

空閒模式使 MCU 能夠從外部觸發中斷以及定時器溢位等內部中斷中喚醒。如果不需要從類比比較器中斷喚醒,可以透過設定 ACD 位元來關閉類比比較器的電源。 第 120 頁上的“ACSR – 模擬比較器控制和狀態暫存器”。這將減少空閒模式下的功耗。如果啟用了 ADC,則進入此模式時會自動開始轉換。

ADC 降噪模式

當 SM[1:0] 位元寫入 01 時,SLEEP 指令使 MCU 進入 ADC 降噪模式,停止 CPU,但允許 ADC、外部中斷和看門狗繼續運作(如果啟用)。此睡眠模式會暫停 clkI/O、clkCPU 和 clkFLASH,同時允許其他時鐘運作。

這改善了 ADC 的雜訊環境,從而實現更高解析度的測量。如果啟用了 ADC,則進入此模式時會自動開始轉換。除了 ADC 轉換完成中斷外,只有外部重設、看門狗重設、欠壓重設、SPM/EEPROM 就緒中斷、INT0 上的外部電平中斷或引腳電平變化中斷可以將 MCU 從 ADC 降噪喚醒模式。

掉電模式

當 SM[1:0] 位元寫入 10 時,SLEEP 指令使 MCU 進入掉電模式。在此模式下,振盪器停止,而外部中斷、USI 啟動條件偵測和看門狗繼續運作(如果啟用)。只有外部重設、看門狗重設、欠壓重設、USI 啟動條件中斷、INT0 上的外部電平中斷或引腳電平變化中斷才能喚醒 MCU。此睡眠模式會停止所有產生的時鐘,僅允許非同步模組運作。

軟體 BOD 禁用

當欠壓檢測器 (BOD) 透過 BODLEVEL 熔絲啟用時(請參閱 第20頁的表4-148),BOD正在積極監控供應量tage 在睡眠期間。在某些裝置中,可以透過軟體在掉電睡眠模式下停用 BOD 來節省電量。睡眠模式功耗將與 BOD 被保險絲全域停用時處於相同水準。

如果透過軟體停用 BOD,則進入睡眠模式後 BOD 功能會立即關閉。從睡眠狀態喚醒後,BOD 會自動再次啟用。這可以確保在 VCC 電平在睡眠期間下降的情況下安全運作。

當 BOD 被停用時,從睡眠模式喚醒的時間將與從 RESET 喚醒的時間相同。使用者必須手動配置喚醒時間,以便帶隙基準有時間啟動並且 BOD 在 MCU 繼續執行程式碼之前正常工作。請參閱表中的 SUT[1:0] 和 CKSEL[3:0] 熔絲位 第 149 頁上的“熔絲低位元組”

BOD 停用由 MCU 控制暫存器的 BODS(BOD 睡眠)位元控制,請參閱 “MCUCR——MCU 控制 註冊」(第 37 頁)。將該位元寫入 1 將關閉掉電時的 BOD,而寫入 0 則保持 BOD 處於活動狀態。預設設為零,即 BOD 啟動。

寫入 BODS 位元由定時序列和啟用位元控制,請參見 “MCUCR——MCU 控制暫存器—— 第 37 頁.

限制

BOD 停用功能僅在以下裝置中實現:

ATtiny25,修訂版 E 與更新版本

ATtiny45,修訂版 D 與更新版本

ATtiny85,修訂版 C 和更新版本

修訂版本標示在設備包裝上,可位於以下位置:

封裝 8P3 和 8S2 的底部

封裝頂面20M1

功率降低寄存器

功耗降低暫存器 (PRR),請參閱 第 38 頁上的“PRR – 功耗降低暫存器”,提供了一種透過停止各個外設時脈來降低功耗的方法。週邊裝置的目前狀態被凍結,並且無法讀取或寫入 I/O 暫存器。停止時鐘時週邊裝置使用的資源將保持佔用狀態,因此在大多數情況下,應在停止時鐘之前停用週邊裝置。透過清除 PRR 中的位元來喚醒模組,使模組處於與關閉前相同的狀態。

模組關斷可用於空閒模式和活動模式,以顯著降低整體功耗。在所有其他睡眠模式下,時鐘已經停止。看 第 177 頁上的“I/O 模組的電源電流” 對於前任amp萊斯。

最大限度地減少功耗

當嘗試最大限度地降低 AVR 控制系統的功耗時,需要考慮幾個問題。一般來說,應盡可能使用睡眠模式,並且應選擇睡眠模式以使盡可能少的設備功能在運作。應停用所有不需要的功能。特別是,在嘗試實現盡可能最低的功耗時,可能需要特別考慮以下模組。

類比數位轉換器

如果啟用,ADC 將在所有睡眠模式下啟用。為了節省電量,在進入任何睡眠模式之前應停用 ADC。當 ADC 關閉並再次開啟時,下一次轉換將是擴展轉換。參考 第 122 頁上的“類比數位轉換器” 有關 ADC 操作的詳細資訊。

類比比較器

進入空閒模式時,如果不使用類比比較器,則應停用該類比比較器。當進入 ADC 降噪模式時,類比比較器應停用。在其他睡眠模式下,模擬比較器會自動停用。但是,如果類比比較器設定為使用內部電壓tage 參考作為輸入,類比比較器應在所有睡眠模式下停用。否則,內部卷tage 參考將會啟用,與睡眠模式無關。參考 第 119 頁上的“類比比較器” 有關如何配置模擬比較器的詳細資訊。

欠壓檢測器

如果應用中不需要欠壓檢測器,則應關閉此模組。如果欠壓偵測器由 BODLEVEL 保險絲啟用,則它將在所有睡眠模式下啟用,因此始終消耗功率。在更深的睡眠模式下,這將顯著增加總電流消耗。看 “欠壓檢測 第 41 頁 和 第 35 頁上的“軟體 BOD 停用” 有關如何配置欠壓檢測器的詳細資訊。

內部卷tag參考資料

內部卷tag當欠電壓偵測、類比比較器或 ADC 需要時,參考電壓將會啟用。如果按照上述部​​分所述停用這些模組,則內部卷tag參考電壓將被停用,並且不會消耗功率。再次開啟時,使用者必須在使用輸出之前允許參考啟動。如果參考在睡眠模式下保持開啟,則可以立即使用輸出。參考 「內部卷tag第 42 頁的“e 參考” 有關啟動時間的詳細資訊。

看門狗定時器

如果應用中不需要看門狗定時器,則應關閉該模組。如果看門狗定時器被使能,它將在所有睡眠模式下被使能,因此總是消耗功率。在更深的睡眠模式下,這將顯著增加總電流消耗。參考 第 42 頁上的“看門狗定時器” 有關如何配置看門狗定時器的詳細資訊。

端口引腳

進入睡眠模式時,所有連接埠引腳應配置為使用最小功率。最重要的是確保沒有引腳驅動電阻負載。在睡眠模式下,I/O 時脈 (clkI/O) 和 ADC 時脈 (clkADC) 皆停止,裝置的輸入緩衝區將會停用。這確保了不消耗電力

不需要時透過輸入邏輯。在某些情況下,需要輸入邏輯來偵測喚醒條件,並且

然後它將被啟用。請參閱 部分 第 57 頁上的“數位輸入啟用和睡眠模式” 有關啟用哪些引腳的詳細資訊。如果輸入緩衝器已啟用且輸入訊號保持浮動或類比訊號電平接近 VCC/2,則輸入緩衝器將使用過多的功率。

對於類比輸入引腳,應始終停用數位輸入緩衝器。即使在活動模式下,輸入引腳上接近 VCC/2 的類比訊號電平也會產生大量電流。可以透過寫入數位輸入停用暫存器 (DIDR0) 來停用數位輸入緩衝器。參考 第 0 頁上的“DIDR0 – 數位輸入停用暫存器 121” 了解詳情。

註冊說明

MCUCR-MCU 控制暫存器

MCU 控制暫存器包含用於電源管理的控制位元。

位元 7 6 5 4 3 2 1 0
0x35 生化指標 聚氨酯分散體 SE SM1 SM0 博德斯 ISC01 ISC00 微控制器控制寄存器
讀/寫 R 讀/寫 讀/寫 讀/寫 讀/寫 R 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

位元 7 – BODS:BOD 睡眠

BOD 停用功能僅在某些裝置上可用。看 第 36 頁的“限制”.

為了在睡眠期間禁用 BOD(請參閱 第7頁的表1-34) BODS 位元必須寫入邏輯 1。這是由定時序列和 MCUCR 中的啟用位元 BODSE 控制的。首先,BODS 和 BODSE 都必須設定為 1。其次,在四個時鐘週期內,BODS 必須設定為 1,BODSE 必須設定為 0。 BODS 位元在設定後三個時鐘週期內有效。必須在 BODS 處於活動狀態時執行睡眠指令,才能關閉實際睡眠模式的 BOD。 BODS 位元在三個時鐘週期後自動清零。

在尚未實現休眠 BOD 的裝置中,該位元未被使用,並且始終讀取為零。

位元 5 – SE:睡眠使能

當執行 SLEEP 指令時,必須將 SE 位元寫入邏輯 1,以使 MCU 進入睡眠模式。為了避免 MCU 進入睡眠模式(除非是程式設計師的目的),建議在執行 SLEEP 指令之前將睡眠啟用(SE)位元寫入 1,並在喚醒後立即將其清除。

位元 4:3 – SM[1:0]:休眠模式選擇位元 1 和 0

這些位元在三種可用的睡眠模式之間進行選擇,如下所示 表7-2.

表 7-2。 睡眠模式選擇

SM1 SM0 睡眠模式
0 0 閒置的
0 1 ADC 降噪
1 0 掉電
1 1 預訂的

位元 2 – BODSE:BOD 休眠使能

BOD 停用功能僅在某些裝置上可用。看 第 36 頁的“限制”.

BODSE 位元允許設定 BODS 控制位,如 BODS 位元描述中所述。 BOD 禁用由定時序列控制。

該位元在未實現軟體 BOD 停用的裝置中未使用,並且在這些裝置中讀為零。

PRR-功率降低暫存器

功耗降低暫存器提供了一種透過禁用外設時脈訊號來降低功耗的方法。

位元 7 6 5 4 3 2 1 0
0x20 PRTIM1 PRTIM0 普魯士 PRADC PRR
讀/寫 R R R R 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

位 7:4 – Res:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 3 – PRTIM1:節能定時器/計數器 1

向該位元寫入邏輯 1 將關閉定時器/計數器 1 模組。當定時器/計數器 XNUMX 啟用時,操作將像關機前一樣繼續。

位元 2 – PRTIM0:節能定時器/計數器 0

向該位元寫入邏輯 0 將關閉定時器/計數器 0 模組。當定時器/計數器 XNUMX 啟用時,操作將像關機前一樣繼續。

位元 1 – PRUSI:功率降低 USI

向該位元寫入邏輯 1 可透過停止模組時鐘來關閉 USI。當再次喚醒USI時,應重新初始化USI以確保正常運作。

位元 0 – PRADC:功耗降低 ADC

向該位元寫入邏輯 1 將關閉 ADC。關閉前必須禁用 ADC。請注意,ADC 時鐘也被類比比較器的某些部分使用,這意味著當該位元為高電位時,類比比較器不能使用。

系統控制和復位

重置 AVR

在重設期間,所有 I/O 暫存器均設定為初始值,程式從重設向量開始執行。放置在重設向量處的指令必須是重設處理程式的 RJMP(相對跳轉)指令。如果程式從不啟用中斷來源,則不會使用中斷向量,並且可以將常規程式碼放置在這些位置。電路圖在 圖8-1 顯示復位邏輯。復位電路的電氣參數在 第 165 頁上的“系統和重設特性”.

圖 8-1 重設邏輯 重設邏輯

當重設來源啟動時,AVR 的 I/O 連接埠立即重設至初始狀態。這不需要運行任何時鐘來源。

所有重設來源都變成非活動狀態後,將呼叫延遲計數器,延長內部重設時間。這使得功率在正常操作開始之前達到穩定的水平。延遲計數器的超時週期由使用者透過 SUT 和 CKSEL 熔絲定義。延遲週期的不同選擇見 “鐘 來源」第 25 頁.

重置來源

ATtiny25/45/85 有四個重設來源:

上電復位。當電源電壓降低時,MCU 會重設tage 低於上電重置閾值 (VPOT)。

外部復位。當 RESET 接腳上的低電位持續時間超過最小脈衝長度時,MCU 重設。

看門狗復位。當看門狗定時器週期到期且看門狗使能時,MCU 重設。

欠壓復位。當電源電壓降低時,MCU 會重設tage VCC 低於欠壓復歸閾值 (VBOT),且欠壓檢測器啟用。

上電複位

上電重設 (POR) 脈衝由片內偵測電路產生。檢測水平定義為 「系統- 第 165 頁上的“溫度和重設特性”。只要 VCC 低於檢測電平,POR 就會被啟動。 POR 電路可用於觸發啟動復位,以及偵測電源電壓故障tage.

上電重設 (POR) 電路可確保元件在上電後重設。達到上電復位閾值 voltage 呼叫延遲計數器,該計數器確定 VCC 上升後裝置保持重設狀態的時間。當 VCC 降至偵測電平以下時,RESET 訊號會再次激活,沒有任何延遲。

圖 8-2。 MCU 啟動、重設與 VCC 相連

內部重設

圖 8-3。 MCU啟動、RESET外部擴展

外部重置

如果啟用,外部重設由 RESET 引腳上的低電平產生。復位脈衝長於最小脈衝寬度(參見 第 165 頁上的“系統和重設特性”)將產生復位,即使時鐘沒有運作。較短的脈衝不能保證產生重設。當施加的訊號達到復位閾值時tage – VRST – 在其上升沿,延遲計數器在逾時期限到期後啟動 MCU。

圖 8-4。 操作期間外部重設 圖8.4

欠壓檢測

ATtiny25/45/85 具有片上欠壓檢測 (BOD) 電路,透過將 VCC 電平與固定觸發電平進行比較來監控工作期間的 VCC 電平。 BOD 的觸發電平可以透過 BODLEVEL 保險絲進行選擇。觸發電平具有遲滯,以確保無尖峰欠壓檢測。檢測電平的遲滯應解釋為 VBOT+ = VBOT + VHYST/2 和 VBOT- = VBOT – VHYST/2。

當 BOD 啟用時,VCC 降低至低於觸發電平(VBOT-in 圖8-5),欠壓復位立即啟動。當 VCC 增加到觸發電平以上(VBOT+ 中 圖8-5),延遲計數器在逾時週期 tTOUT 到期後啟動 MCU。

BOD 電路只會偵測到 VCC 電壓下降tage 保持低於觸發水平的時間長於 tBOD 中給出的值 第 165 頁上的“系統和重設特性”. 圖8.5

看門狗復位

當看門狗超時時,它將產生一個 CK 週期持續時間的短重置脈衝。在此脈衝的下降沿,延遲定時器開始對超時週期 tTOUT 進行計數。參考 第 42 頁上的“看門狗定時器” 有關看門狗定時器操作的詳細資訊。

卷tage 參考啟用訊號與啟動時間

卷tag該參考有一個啟動時間,可能會影響它的使用方式。啟動時間給出為 第 165 頁上的“系統和重設特性”。為了節省電力,參考電壓並不總是打開。在下列情況下參考將會開啟:

當 BOD 啟用時(透過編程 BODLEVEL[2:0] 熔絲位)。

當帶隙基準連接到類比比較器時(透過設定 ACSR 中的 ACBG 位元)。

當 ADC 使能時。

因此,當 BOD 未啟用時,在設定 ACBG 位元或啟用 ADC 後,使用者必須始終允許參考電壓在使用類比比較器或 ADC 的輸出之前啟動。為了降低掉電模式下的功耗,使用者可以避免上述三種情況,以確保在進入掉電模式之前參考關閉。

看門狗定時器

看門狗定時器由運作頻率為 128 kHz 的片上振盪器提供時脈。透過控制看門狗定時器預分頻器,可以調整看門狗重設間隔,如下所示 第8頁的表3-46。 WDR – 看門狗重設 – 指令重設看門狗定時器。當看門狗定時器被停用以及發生晶片重設時,看門狗定時器也會被重設。可以選擇十個不同的時脈週期來決定重設週期。如果重設週期到期而沒有再次看門狗重位,則 ATtiny25/45/85 重設並從重設向量執行。有關看門狗復位的時序詳細信息,請參閱 第8頁的表3-46.

看門狗定時器還可以配置為產生中斷而不是重設。當使用看門狗從掉電狀態喚醒時,這非常有幫助。

為了防止無意中停用看門狗或無意中更改超時週期,熔絲 WDTON 選擇了兩種不同的安全級別,如下所示 表8-1 參考 「改變Con-的計時序列 第 43 頁上的“看門狗定時器的配置” 了解詳情。

表 8-1。 WDT 配置作為 WDTON 熔絲設定的函數

威頓 安全等級 WDT 初始狀態 如何禁用 WDT 如何更改超時
未編程 1 殘障人士 定時序列 無限制
程式 2 啟用 始終啟用 定時序列

圖 8-7。看門狗定時器 看門狗

更改看門狗定時器配置的時序

兩個安全等級之間更改配置的順序略有不同。每個等級都有單獨的程序描述。

安全等級 1:在此模式下,看門狗定時器最初會停用,但可以透過將 WDE 位元寫入 XNUMX 來啟用,沒有任何限制。停用已啟用的看門狗計時器時需要定時序列。若要停用已啟用的看門狗計時器,必須遵循以下步驟:

在同一操作中,向 WDCE 和 WDE 寫入邏輯 1。無論 WDE 位元的先前值為何,都必須將邏輯 1 寫入 WDE。

在接下來的四個時鐘週期內,在相同的操作中,根據需要寫入 WDE 和 WDP 位,但將 WDCE 位清除。

安全等級 2:在此模式下,看門狗定時器始終啟用,且 WDE 位元將始終讀取為 XNUMX。更改看門狗超時週期時需要一個定時序列。若要更改看門狗超時,必須遵循以下步驟:

在同一操作中,將邏輯 1 寫入 WDCE 和 WDE。儘管 WDE 始終被置位,但必須將 WDE 寫入 1 才能啟動定時序列。

在接下來的四個時鐘週期內,在相同的操作中,根據需要寫入 WDP 位,但將 WDCE 位清除。寫入 WDE 位元的值無關緊要。

代碼示例ample

以下代碼例如amp檔案顯示了用於關閉 WDT 的一個組件和一個 C 函數。前任amp檔案假定中斷是受控制的(例如,透過全域停用中斷),以便在執行這些函數期間不會發生中斷。

彙編程式碼Example(1)
看門狗定時器關閉:

西德

;清除 MCUSR 中的 WDRF

ldi r16, (0<

輸出 MCUSR,r16

;將邏輯 1 寫入 WDCE 和 WDE

;保留舊的預分頻器設定以防止看門狗意外復位

在 r16 中,WDTCR

奧裡 r16, (1<

輸出 WDTCR,r16

;關閉看門狗定時器

ldi r16, (0<

輸出 WDTCR,r16

雷特

C程式碼Example(1)
無效WDT_關閉(無效)

{

_WDR();

/* 清除 MCUSR 中的 WDRF */ MCUSR = 0x00

/* 將邏輯 1 寫入 WDCE 和 WDE */ WDTCR |= (1<

/* 關閉 WDT */ WDTCR = 0x00;

}

註:1.參見 “代碼Examp第 6 頁.

註冊說明

MCUSR-MCU 狀態暫存器

MCU 狀態暫存器提供有關哪個重設來源導致 MCU 重設的資訊。

位元 7 6 5 4 3 2 1 0
0x34 WDRF 鮑爾夫 外部射頻 聚合酶連鎖反應因子 微控制器控制系統
讀/寫 R R R R 讀/寫 讀/寫 讀/寫 讀/寫

初始值 0 0 0 0 參見位元描述

位 7:4 – Res:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 3 – WDRF:看門狗重設標誌

如果發生看門狗復位,則該位被置位。此位元透過上電重設或向標誌寫入邏輯零來重設。

位 2 – BORF:欠壓復位標誌

如果發生欠壓復位,則該位被置位。此位元透過上電重設或向標誌寫入邏輯零來重設。

位元 1 – EXTRF:外部重設標誌

如果發生外部重設,則該位元被置位。此位元透過上電重設或向標誌寫入邏輯零來重設。

位元 0 – PORF:上電重設標誌

如果發生上電復位,則該位元被置位。僅透過向標誌寫入邏輯零來重置該位元。

為了利用重設標誌來識別重設條件,使用者應在程式中儘早讀取並重設 MCUSR。如果在另一次重設發生之前暫存器被清除,則可以透過檢查重設標誌來找到重設來源。

WDTCR-看門狗定時器控制暫存器

位元 7 6 5 4 3 2 1 0
0x21 WDIF WDIE WDP3 WDCE 西德 WDP2 WDP1 WDP0 看門狗定時器控制寄存器
讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 0 0 X 0 0 0

位元 7 – WDIF:看門狗超時中斷標誌

當看門狗定時器發生逾時且看門狗定時器配置為中斷時,此位元被置位。當執行對應的中斷處理向量時,WDIF 由硬體清零。或者,透過向標誌寫入邏輯 1 來清除 WDIF。當 SREG 和 WDIE 中的 I 位元被置位時,執行看門狗逾時中斷。

位元 6 – WDIE:看門狗超時中斷啟用

當該位元寫入 1 時,WDE 被清零,並且狀態暫存器中的 I 位元被置位,看門狗超時中斷被使能。在此模式下,如果看門狗定時器發生逾時,則執行相應的中斷而不是重設。

如果設定了 WDE,則當逾時發生時,WDIE 將自動由硬體清除。這對於在使用中斷時保持看門狗重設的安全性很有用。 WDIE 位元清零後,下次逾時將產生重設。為了避免看門狗復位,必須在每次中斷後設定 WDIE。

表 8-2。 看門狗定時器配置

西德 WDIE 看門狗定時器狀態 超時時採取的行動
0 0 已停止 沒有任何
0 1 跑步 打斷
1 0 跑步 重置
1 1 跑步 打斷

位元 4 – WDCE:看門狗更改啟用

當 WDE 位元寫入邏輯 0 時,必須設定該位元。否則,看門狗將不會被禁用。一旦寫入,硬體將在四個時脈週期後清除該位元。有關看門狗停用過程,請參閱 WDE 位元的說明。變更預分頻器位元時也必須設定該位元。看 “定時序列 第 43 頁上的“更改看門狗定時器的配置”.

位 3 – WDE:看門狗使能

當 WDE 寫入邏輯 1 時,看門狗計時器被啟用,如果 WDE 被寫入邏輯 0,則看門狗計時器功能被停用。只有當 WDCE 位元為邏輯電平 1 時,WDE 才能被清除。若要停用已啟用的看門狗計時器,必須遵循以下步驟:

在同一操作中,向 WDCE 和 WDE 寫入邏輯 1。即使在停用操作開始之前將其設為 1,也必須將邏輯 1 寫入 WDE。

在接下來的四個時脈週期內,將邏輯 0 寫入 WDE。這會禁用看門狗。

在安全等級 2 中,即使使用上述演算法,也無法停用看門狗計時器。看 第 43 頁上的“更改看門狗定時器配置的時序”.

在安全等級 1 中,WDE 被 MCUSR 中的 WDRF 覆蓋。看 第 44 頁上的“MCUSR – MCU 狀態暫存器” WDRF 的描述。這意味著當 WDRF 設定時,WDE 總是被設定。要清除 WDE,必須在按照上述步驟停用看門狗之前清除 WDRF。此功能可確保在導致故障的情況下進行多次重置,並在故障後安全啟動。

注意:如果應用程式中不使用看門狗計時器,則在裝置初始化時執行看門狗停用過程非常重要。如果看門狗被意外啟用,例如amp如果出現失控指針或掉電情況,裝置將被重位,進而導致新的看門狗重設。為了避免這種情況,應用軟體應始終在初始化例程中清除WDRF標誌和WDE控制位。

位元 5、2:0 – WDP[3:0]:看門狗定時器預分頻器 3、2、1 和 0

當看門狗定時器啟用時,WDP[3:0] 位元決定看門狗計時器的預分頻。不同的預分頻值及其對應的超時週期顯示在 表8-3.

表 8-3。看門狗定時器預分頻選擇

WDP3 WDP2 WDP1 WDP0 WDT 振盪器週期數 VCC = 5.0V 時的典型逾時
0 0 0 0 2K (2048) 週期 16毫秒
0 0 0 1 4K (4096) 週期 32毫秒
0 0 1 0 8K (8192) 週期 64毫秒
0 0 1 1 16K (16384) 週期 0.125秒
0 1 0 0 32K (32764) 週期 0.25秒
0 1 0 1 64K (65536) 週期 0.5秒
0 1 1 0 128K (131072) 週期 1.0秒
0 1 1 1 256K (262144) 週期 2.0秒
1 0 0 0 512K (524288) 週期 4.0秒
1 0 0 1 1024K (1048576) 週期 8.0秒

表 8-3。 看門狗定時器預分頻選擇(續)

WDP3 WDP2 WDP1 WDP0 WDT 振盪器週期數 VCC = 5.0V 時的典型逾時
1 0 1 0 預訂的(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

注意: 1. 如果選擇,將使用 0b1010 以下的有效設定之一。

中斷

本節描述 ATtiny25/45/85 中執行的中斷處理的細節。有關 AVR 中斷處理的一般說明,請參閱 第 12 頁上的“重設和中斷處理”.

ATtiny25/45/85 中的中斷向量

ATtiny25/45/85的中斷向量描述於 表9-1以下。

表 9-1。 重設和中斷向量

向量編號 節目地址 來源 中斷定義
1 0x0000 重置 外部引腳、上電復位、欠壓復位、看門狗復位
2 0x0001 INT0 外部中斷請求0
3 0x0002 PCINT0 引腳變化中斷請求 0
4 0x0003 定時器1_COMPA 定時器/計數器 1 比較匹配 A
5 0x0004 定時器1_OVF 定時器/計數器1溢出
6 0x0005 定時器0_OVF 定時器/計數器0溢出
7 0x0006 EE_RDY EEPROM就緒
8 0x0007 ANA_COMP 類比比較器
9 0x0008 類比數位轉換器 ADC 轉換完成
10 0x0009 TIMER1_COMPB 定時器/計數器 1 比較匹配 B
11 0x000A 定時器0_COMPA 定時器/計數器 0 比較匹配 A
12 0x000B TIMER0_COMPB 定時器/計數器 0 比較匹配 B
13 0x000C 看門狗定時器 看門狗超時
14 0x000D USI_START 環宇啟動
15 0x000E USI_OVF USI溢出

如果程式從不啟用中斷來源,則不會使用中斷向量,並且可以將常規程式碼放置在這些位置。

ATtiny25/45/85 中中斷向量位址的典型和通用設定如程式 ex 所示amp下面。

彙編程式碼Example
.org 0x0000 ;設定下一個地址 陳述
復位 ;地址 0x0000
rjmp INT0_ISR ;地址 0x0001
rjmp PCINT0_ISR ;地址 0x0002
rjmp TIM1_COMPA_ISR ;地址 0x0003
rjmp TIM1_OVF_ISR ;地址 0x0004
rjmp TIM0_OVF_ISR ;地址 0x0005
rjmp EE_RDY_ISR ;地址 0x0006
rjmp ANA_COMP_ISR ;地址 0x0007
rjmp ADC_ISR ;地址 0x0008
rjmp TIM1_COMPB_ISR ;地址 0x0009
rjmp TIM0_COMPA_ISR ;地址 0x000A
rjmp TIM0_COMPB_ISR ;位址 0x000B
rjmp WDT_ISR ;位址 0x000C
rjmp USI_START_ISR ;位址 0x000D
rjmp USI_OVF_ISR ;位址 0x000E
重置: ;主程式啟動
;位址 0x000F

註:參見 “代碼Examp第 6 頁.

外部中斷

外部中斷由 INT0 引腳或任意 PCINT[5:0] 引腳觸發。請注意,如果啟用,即使 INT0 或 PCINT[5:0] 引腳配置為輸出,中斷也會觸發。此功能提供了一種產生軟體中斷的方法。引腳變更中斷 如果任何啟用的 PCINT[5:0] 引腳切換,PCI 將觸發。 PCMSK 暫存器控制哪些引腳有助於引腳變更中斷。 PCINT[5:0] 上的引腳變化中斷是非同步偵測的。這意味著這些中斷還可用於將裝置從空閒模式以外的睡眠模式喚醒。

INT0 中斷可由下降沿、上升沿或低電平觸發。這是按照 MCU 控制暫存器 – MCUCR 規範中指示的進行設定的。當 INT0 中斷啟用並配置為電平觸發時,只要引腳保持低電平,中斷就會觸發。請注意,識別 INT0 上的下降沿或上升沿中斷需要存在 I/O 時鐘,如 “時鐘系統及其分佈” 第 23 頁.

低電平中斷

非同步偵測到 INT0 上的低電平中斷。這意味著該中斷還可用於將裝置從空閒模式以外的睡眠模式中喚醒。除空閒模式外,所有睡眠模式下 I/O 時鐘均停止。

請注意,如果使用電平觸發中斷來從掉電喚醒,則所需的電平必須保持足夠長的時間,以便 MCU 完成喚醒以觸發電平中斷。如果該電平在啟動時間結束之前消失,MCU 仍將被喚醒,但不會產生中斷。啟動時間由 SUT 和 CKSEL 保險絲定義,如中所述 第 23 頁上的“系統時鐘和時鐘選項”.

如果在裝置喚醒之前中斷引腳上的低電平被移除,則程式執行將不會轉移到中斷服務程序,而是從 SLEEP 命令後面的指令繼續執行。

引腳變化中斷時序

前任amp引腳變更中斷的時序檔案顯示在 圖9-1.

註冊說明

MCUCR-MCU 控制暫存器

外部中斷控制暫存器 A 包含用於中斷偵測控制的控制位元。

位元 7 6 5 4 3 2 1 0
0x35 生化指標 聚氨酯分散體 SE SM1 SM0 博德斯 ISC01 ISC00 微控制器控制寄存器
讀/寫 R 讀/寫 讀/寫 讀/寫 讀/寫 R 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

位元 1:0 – ISC0[1:0]:中斷偵測控制 0 位元 1 和位元 0

如果設定了 SREG I 標誌和相應的中斷屏蔽,則外部中斷 0 由外部引腳 INT0 啟動。啟動中斷的外部 INT0 引腳上的電平和邊緣定義在 表9-2。 INT0 引腳上的值為 samp在檢測邊緣之前引導。如果選擇邊緣或切換中斷,則持續時間長於一個時脈週期的脈衝將產生中斷。較短的脈衝不能保證產生中斷。如果選擇低電平中斷,則必須保持低電平,直到目前執行的指令完成才能產生中斷。

表 9-2。 中斷0檢測控制

ISC01 ISC00 描述
0 0 INT0低電平產生中斷請求。
0 1 INT0 上的任何邏輯變更都會產生中斷請求。
1 0 INT0 的下降沿產生中斷請求。
1 1 INT0 的上升沿產生中斷請求。

GIMSK – 通用中斷屏蔽暫存器

位元 7 6 5 4 3 2 1 0
0x3B INT0 PCIE 吉姆斯克
讀/寫 R 讀/寫 讀/寫 R R R R R
初始值 0 0 0 0 0 0 0 0

位 7、4:0 – 保留:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 6 – INT0:外部中斷請求 0 啟用

當 INT0 位元被置位(0)並且狀態暫存器(SREG)中的 I 位元被置位(1)時,外部接腳中斷被啟用。 MCU 控制暫存器 (MCUCR) 中的中斷偵測控制 0 位元 01/00(ISC0 和 ISC0)定義是否在 INT0 引腳的上升沿和/或下降沿或偵測到電平時啟動外部中斷。即使 INT0 配置為輸出,引腳上的活動也會引起中斷請求。外部中斷請求 XNUMX 的對應中斷從 INTXNUMX 中斷向量執行。

位元 5 – PCIE:引腳變化中斷啟用

當 PCIE 位元被設定(5)且狀態暫存器(SREG)中的 I 位元被設定(0)時,引腳會改變中斷被啟用。任何使能的 PCINT[5:0] 引腳上的任何變更都會導致中斷。引腳變更中斷請求的相應中斷從 PCI 中斷向量執行。 PCINT[0:XNUMX] 引腳由 PCMSKXNUMX 暫存器單獨啟用。

GIFR-通用中斷標誌暫存器

位元 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
讀/寫 R 讀/寫 讀/寫 R R R R R
初始值 0 0 0 0 0 0 0 0

位 7、4:0 – 保留:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 6 – INTF0:外部中斷標誌 0

當 INT0 接腳上的邊緣或邏輯變化觸發中斷請求時,INTF0 置位(0)。如果 SREG 中的 I 位元和 GIMSK 中的 INT0 位元被置位(XNUMX),MCU 將跳到對應的中斷向量。執行中斷例程時該標誌會被清除。或者,可以透過向該標誌寫入邏輯 XNUMX 來清除該標誌。當 INTXNUMX 配置為電平中斷時,該標誌始終被清除。

位元 5 – PCIF:引腳變化中斷標誌

當任何 PCINT[5:0] 引腳上的邏輯變化觸發中斷請求時,PCIF 被置位(XNUMX)。如果SREG中的I位元和GIMSK中的PCIE位元被置位(XNUMX),MCU將跳到對應的中斷向量。執行中斷例程時該標誌會被清除。或者,可以透過向該標誌寫入邏輯 XNUMX 來清除該標誌。

PCMSK – 引腳更改遮罩暫存器

位元 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 相變相移鍵控
讀/寫 R R 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

位 7:6 – Res:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 5:0 – PCINT[5:0]:引腳更改啟用遮罩 5:0

每個 PCINT[5:0] 位元選擇是否在對應的 I/O 引腳上啟用引腳電平變化中斷。如果 PCINT[5:0] 被置位且 GIMSK 中的 PCIE 位元被置位,則在對應的 I/O 接腳上啟用引腳變更中斷。如果 PCINT[5:0] 被清除,則對應 I/O 接腳上的接腳電平變更中斷將被停用。

輸入/輸出埠

介紹

當用作通用數位 I/O 連接埠時,所有 AVR 連接埠都具有真正的讀取-修改-寫入功能。這意味著可以使用 SBI 和 CBI 指令更改一個連接埠引腳的方向,而不會無意中更改任何其他引腳的方向。這同樣適用於更改驅動值(如果配置為輸出)或啟用/停用上拉電阻(如果配置為輸入)。每個輸出緩衝器都具有對稱驅動特性,具有高灌電流和拉電流能力。引腳驅動器足夠強大,可以直接驅動 LED 顯示器。所有連接埠引腳都有可單獨選擇的上拉電阻,並具有電源電壓tage 不變的電阻。所有 I/O 接腳都有連接至 VCC 和接地的保護二極體,如 圖10-1。參考 第 161 頁上的“電氣特性” 取得完整的參數列表。

圖 10-1。 I/O 腳位等效原理圖

圖10

本節中的所有暫存器和位元引用均以通用形式編寫。小寫“x”代表連接埠的編號字母,小寫“n”代表位數。然而,當在程式中使用暫存器或位元定義時,必須使用精確的形式。對於前ample,PORTB3 表示位號。 3 在連接埠 B 中,此處通常記錄為 PORTxn。實體 I/O 暫存器和位元位置列於 上的“寄存器說明” 第 64 頁.

為每個連接埠分配了三個 I/O 記憶體位址位置,其中一個用於資料暫存器 - PORTx、資料方向暫存器 - DDRx 和連接埠輸入引腳 - PINx。連接埠輸入引腳 I/O 位置是唯讀的,而資料暫存器和資料方向暫存器是讀取/寫入的。然而,向 PINx 暫存器中的一位寫入邏輯 1,將導致資料暫存器中對應位的切換。此外,MCUCR 中的上拉停用 – PUD 位元設定後,將停用所有連接埠中所有引腳的上拉功能。

使用 I/O 連接埠作為通用數位 I/O 的描述見 第 53 頁上的“作為通用數位 I/O 的連接埠”。大多數連接埠引腳與裝置上的周邊功能的備用功能重複使用。每個備用功能如何干擾連接埠引腳的描述見 第 57 頁上的“備用連接埠功能”。有關備用功能的完整說明,請參閱各個模組部分。

請注意,啟用某些連接埠引腳的備用功能不會影響連接埠中其他引腳作為通用數位 I/O 的使用。

作為通用數位 I/O 的端口

這些連接埠是具有可選內部上拉電阻的雙向 I/O 連接埠。 圖10-2 顯示了一個 I/O 連接埠引腳的功能描述,此處通常稱為 Pxn。

圖 10-2。通用數位輸入/輸出(1)

圖10

配置引腳

每個連接埠引腳由三個暫存器位元組成:DDxn、PORTxn 和 PINxn。如圖所示 上的“寄存器說明” 第 64 頁,DDxn 位元在 DDRx I/O 位址處訪問,PORTxn 位元在 PORTx I/O 位址處訪問,PINxn 位元在 PINx I/O 位址處存取。

DDRx 暫存器中的 DDxn 位元選擇該引腳的方向。如果 DDxn 被寫入邏輯 1,則 Pxn 將被配置為輸出引腳。如果 DDxn 被寫入邏輯零,則 Pxn 將被配置為輸入引腳。

當此引腳配置為輸入引腳時,如果 PORTxn 被寫入邏輯 1,則上拉電阻被啟動。若要關閉上拉電阻,必須將 PORTxn 寫入邏輯零,或必須將該引腳配置為輸出引腳。當重設條件變為活動狀態時,即使沒有時脈運行,連接埠引腳也會處於三態。

如果在引腳配置為輸出引腳時將 PORTxn 寫入邏輯 1,則連接埠引腳將被驅動為高電平(1)。如果在引腳配置為輸出引腳時將 PORTxn 寫入邏輯零,則連接埠引腳將被驅動為低電平(零)。

切換引腳

將邏輯 1 寫入 PINxn 會切換 PORTxn 的值,與 DDRxn 的值無關。請注意,SBI 指令可用於切換連接埠中的一位。

輸入輸出切換

當在三態({DDxn,PORTxn} = 0b00)和輸出高電平({DDxn,PORTxn} = 0b11)之間切換時,中間狀態啟用啟用{DDxn,PORTxn} = 0b01)或輸出低電平({DDxn, PORTxn} = 0b10) 必定發生。通常,上拉使能狀態是完全可以接受的,因為高阻抗環境不會注意到強高驅動器和上拉之間的差異。如果不是這種情況,可以設定 MCUCR 暫存器中的 PUD 位元以停用所有連接埠中的所有上拉電阻。

在帶上拉的輸入和輸出低電平之間切換也會產生相同的問題。使用者必須使用三態({DDxn,PORTxn} = 0b00)或輸出高態({DDxn,PORTxn} = 0b10)作為中間步驟。

表10-1 總結了引腳值的控制訊號。

表 10-1。 連接埠引腳配置

DDxn 端口xn 聚氨酯分散體

(在 MCUCR 中)

輸入/輸出 引體向上 評論
0 0 X 輸入 三態(高阻態)
0 1 0 輸入 是的 如果有外部情況,Pxn 將提供電流。拉低。
0 1 1 輸入 三態(高阻態)
1 0 X 輸出 輸出低電平(灌電流)
1 1 X 輸出 輸出高電平(源)

讀取引腳值

與資料方向位 DDxn 的設定無關,可以透過 PINxn 暫存器位元讀取連接埠引腳。如圖所示 圖10-2、PINxn暫存器位元和前面的鎖存器構成同步器。如果物理引腳在內部時脈邊緣附近改變值,則需要避免亞穩態,但它也會引入延遲。 圖10-3 顯示了讀取外部施加的引腳值時的同步時序圖。最大和最小傳播延遲分別表示為 tpd,max 和 tpd,min。

考慮在系統時鐘的第一個下降沿之後不久開始的時脈週期。當時脈為低電位時鎖存器關閉,當時脈為高電位時鎖存器變為透明,如「SYNC LATCH」訊號的陰影區域所示。當系統時脈變低時,訊號值被鎖存。它在隨後的正時脈沿被記錄到 PINxn 暫存器。如兩個箭頭 tpd,max 和 tpd,min 所示,引腳上的單一訊號轉換將延遲 1/XNUMX 到 XNUMX/XNUMX 系統時脈週期,具體取決於斷言時間。

當讀回軟體分配的引腳值時,必須插入 nop 指令,如 圖10-4。 out 指令在時鐘的上升沿設定「SYNC LATCH」訊號。在這種情況下,通過同步器的延遲tpd是一個系統時脈週期。

以下代碼例如amp檔案顯示如何將連接埠B 引腳0 和1 設定為高,2 和3 為低,並將連接埠引腳4 到5 定義為輸入,並為連接埠引腳4 分配上拉電阻。會再次讀回,但如前所述,包含 nop 指令以便能夠讀回最近指派給某些引腳的值。

彙編程式碼Example(1)

;定義上拉電阻並將輸出設為高電平

;定義連接埠引腳的方向

ldi        r16,(1<<PB4)|(1<<PB1)|(1<<PB0)

ldi        r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

輸出埠B,r16

出DDRB,r17

;插入nop進行同步

;讀取連接埠引腳

在 r16,PINB 中

注意:對於彙編程序,使用兩個臨時暫存器來最小化從引腳0、1 和4 上設定上拉電阻到正確設定方向位(將位元2 和3 定義為低並重新定義位元0 和1)的時間。

C程式碼Example
無符號字元 i;

/* 定義上拉電阻並將輸出設為高電位 */

/* 定義連接埠引腳方向 */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* 插入nop進行同步*/

_NOP();

/* 讀取連接埠引腳 */ i = PINB;

數位輸入使能和睡眠模式

如圖所示 圖10-2,數位輸入訊號可以是clamp在施密特觸發器的輸入端接地。圖中表示為 SLEEP 的訊號由 MCU 睡眠控制器在掉電模式下設置,以避免在某些輸入訊號懸空或類比訊號電平接近 VCC/2 時產生高功耗。

對於啟用為外部中斷引腳的連接埠引腳,SLEEP 被覆蓋。如果未啟用外部中斷請求,則這些引腳的 SLEEP 也處於活動狀態。 SLEEP 也被各種其他替代功能所覆蓋,如中所述 第 57 頁上的“備用連接埠功能”.

如果配置為「上升沿、下降沿或引腳上的任何邏輯變化中斷」的非同步外部中斷引腳上出現邏輯高電平(「1」),而外部中斷未使能,則相應的外部中斷標誌將從上述睡眠模式恢復時設置,如 clamp在這些睡眠模式下的運作會產生所要求的邏輯變化。

未連接的引腳

如果某些引腳未使用,建議確保這些引腳具有定義的電平。儘管如上所述,大多數數位輸入在深度睡眠模式下被停用,但仍應避免浮動輸入,以減少數位輸入啟用的所有其他模式(重設、活動模式和空閒模式)中的電流消耗。

確保未使用引腳的定義電平的最簡單方法是啟用內部上拉。在這種情況下,復位期間上拉將被停用。如果復位期間的低功耗很重要,建議使用外部上拉或下拉。不建議將未使用的引腳直接連接到 VCC 或 GND,因為如果引腳意外配置為輸出,可能會導致電流過大。

備用連接埠功能

大多數連接埠引腳除了通用數位 I/O 之外還具有替代功能。 圖10-5 顯示了連接埠引腳如何從簡化的控制訊號 圖10-2 可以被替代函數覆蓋。覆蓋訊號可能不存在於所有連接埠引腳中,但此圖作為適用於 AVR 微控制器系列中所有連接埠引腳的通用描述。

表 10-2。替代功能的覆蓋訊號的一般描述

訊號名稱 姓名 描述
普奧埃 上拉覆蓋使能 如果設定該訊號,則上拉啟用由 PUOV 訊號控制。如果該訊號被清除,則上拉使能

{DDxn、PORTxn、PUD} = 0b010。

聚氧乙烯 上拉覆蓋值 如果 PUOE 置位,則當 PUOV 置位/清除時,上拉將啟用/停用,無論 DDxn、PORTxn 和 PUD 暫存器位元的設定為何。
DDOE 資料方向覆蓋啟用 如果設定該訊號,則輸出驅動器啟用由 DDOV 訊號控制。如果清除該訊號,則透過 DDxn 暫存器位元啟用輸出磁碟機。
DDOV 資料方向覆蓋值 如果 DDOE 置位,則當 DDOV 置位/清零時,輸出磁碟機將啟用/停用,無論 DDxn 暫存器位元的設定為何。
聚乙烯醇 連接埠值覆蓋啟用 如果設定了該訊號並啟用了輸出驅動器,則連接埠值由 PVOV 訊號控制。如果 PVOE 清零,且輸出磁碟機啟用,則連接埠值由 PORTxn 暫存器位元控制。
PVOV 連接埠值覆蓋值 如果設定了 PVOE,則無論 PORTxn 暫存器位元如何設置,連接埠值都會設定為 PVOV。
聚四氟乙烯 連接埠切換覆蓋啟用 如果 PTOE 被置位,則 PORTxn 暫存器位元會反轉。
迪奧 數位輸入使能覆蓋使能 如果該位置位,則數位輸入啟用由 DIEOV 訊號控制。如果該訊號被清除,則數位輸入啟用由 MCU 狀態(正常模式、睡眠模式)決定。
迪奧夫 數位輸入啟用覆蓋值 如果設定了 DIEOE,則當設定/清除 DIEOV 時,將啟用/停用數位輸入,無論 MCU 狀態為何(正常模式、睡眠模式)。
DI 數字輸入 這是替代功能的數位輸入。在圖中,訊號連接到施密特觸發器的輸出,但位於同步器之前。除非數位輸入用作時鐘來源,否則具有備用功能的模組將使用自己的同步器。
一體機 模擬量輸入/輸出 這是與備用功能的類比輸入/輸出。訊號直接連接到焊盤,並且可以雙向使用。

以下小節簡要描述了每個連接埠的備用功能,並將優先訊號與備用功能相關聯。有關更多詳細信息,請參閱備用功能說明。

連接埠 B 的替代功能

具有備用功能的連接埠 B 引腳如圖所示 表10-3.

表 10-3。 埠 B 接腳交替功能

連接埠引腳 交替功能
PB5

RESET:復位引腳

dW:debugWIRE I/O ADC0:ADC 輸入通道 0

PCINT5:引腳變更中斷,來源 5

PB4 XTAL2:晶體振盪器輸出 CLKO:系統時鐘輸出 ADC2:ADC 輸入通道 2

OC1B:定時器/計數器 1 比較匹配 B 輸出 PCINT4:引腳電平變化中斷 0,來源 4

PB3 XTAL1:晶體振盪器輸入 CLKI:外部時脈輸入 ADC3:ADC 輸入通道 3

OC1B:互補定時器/計數器 1 比較匹配 B 輸出 PCINT3:引腳電平變化中斷 0,來源 3

PB2 SCK:串行時脈輸入 ADC1:ADC 輸入通道 1

T0:定時器/計數器 0 時脈來源 USCK:USI 時脈(三線模式) SCL:USI 時脈(兩線模式) INT0:外部中斷 0 輸入 PCINT2:接腳電平變更中斷 0,來源 2

PB1 MISO:SPI 主資料輸入/從資料輸出AIN1:類比比較器,負輸入OC0B:定時器/計數器0 比較匹配B 輸出OC1A:定時器/計數器1 比較匹配A 輸出DO:USI 資料輸出(三線模式) PCINT1 :引腳電平變化中斷0、來源 1
PB0 MOSI:: SPI 主資料輸出/從資料輸入 AIN0: 類比比較器,正輸入

OC0A:定時器/計數器 0 比較匹配 A 輸出

OC1A:互補定時器/計數器 1 比較匹配 A 輸出 DI:USI 資料輸入(三線模式)

SDA:USI 資料輸入(兩線模式) AREF:外部模擬參考 PCINT0:引腳電平變化中斷 0,來源 0

連接埠 B,位元 5 – RESET/dW/ADC0/PCINT5

重設:外部重設輸入低電平有效,並透過取消編程(“1”)RSTDISBL 保險絲來啟用。當此引腳用作 RESET 引腳時,上拉被激活,輸出驅動器和數位輸入被停用。

dW:當對 debugWIRE 啟用 (DWEN) 熔絲進行編程且鎖定位未編程時,目標元件內的 debugWIRE 系統將被啟動。 RESET 連接埠接腳配置為線與(漏極開路)雙向 I/O 接腳,並啟用上拉,並成為目標與模擬器之間的通訊閘道。

ADC0:類比數位轉換器,通道 0。

PCINT5:引腳變更中斷來源 5。

埠 B,位元 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4

XTAL2:晶片時脈振盪器接腳 2。當用作時鐘引腳時,此引腳不能用作 I/O 引腳。當使用內部可校準 RC 振盪器或外部時脈作為晶片時脈源時,PB4 作為普通 I/O 接腳。

CLKO:劃分後的系統時鐘可以在PB4腳位輸出。如果對 CKOUT 熔絲進行編程,則無論 PORTB4 和 DDB4 設定如何,都會輸出分頻系統時脈。復位時也會輸出。

ADC2:類比數位轉換器,通道 2。

OC1B:輸出比較匹配輸出:當配置為輸出(DDB4 置位)時,PB1 接腳可用作定時器/計數器 4 比較匹配 B 的外部輸出。 OC1B 接腳也是 PWM 模式定時器功能的輸出腳位。

PCINT4:引腳變更中斷來源 4。

連接埠 B,位元 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3

XTAL1:晶片時脈振盪器接腳 1。當用作時鐘引腳時,此引腳不能用作 I/O 引腳。

CLKI:來自外部時脈來源的時脈輸入,請參閱 第 26 頁上的“外部時鐘”.

ADC3:類比數位轉換器,通道 3。

OC1B:反相輸出比較匹配輸出:當配置為輸出(DDB3 置位)時,PB1 引腳可用作定時器/計數器 3 比較匹配 B 的外部輸出。 OC1B 接腳也是 PWM 模式定時器功能的反相輸出腳位。

PCINT3:引腳變更中斷來源 3。

連接埠 B,位元 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2

SCK:SPI 通道的主時脈輸出、從時脈輸入接腳。當 SPI 作為從機啟用時,無論 DDB2 的設定為何,該引腳都會配置為輸入。當 SPI 作為主機啟用時,此接腳的資料方向由 DDPB2 控制。當該引腳被 SPI 強制為輸入時,上拉仍然可以由 PORTB2 位元控制。

ADC1:類比數位轉換器,通道 1。

T0:定時器/計數器0計數器來源。

USCK:三線模式通用序列介面時脈。

SCL:USI 兩線模式的兩線模式串列時脈。

INT0:外部中斷來源0。

PCINT2:引腳變更中斷來源 2。

連接埠 B,位元 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1

MISO:SPI 通道的主資料輸入、從資料輸出引腳。當 SPI 作為主設備啟用時,無論 DDB1 的設定為何,該引腳都會配置為輸入。當 SPI 作為從機啟用時,此引腳的資料方向由 DDB1 控制。當該引腳被 SPI 強制為輸入時,上拉仍然可以由 PORTB1 位元控制。

AIN1:模擬比較器負輸入。將連接埠接腳配置為輸入並關閉內部上拉電阻,以避免數位連接埠功能幹擾類比比較器的功能。

OC0B:輸出比較匹配輸出。 PB1 接腳可用作定時器/計數器 0 比較符合 B 的外部輸出。 OC1B 接腳也是 PWM 模式定時器功能的輸出腳位。

OC1A:輸出比較匹配輸出:當配置為輸出(DDB1 置位)時,PB1 引腳可用作定時器/計數器 1 比較匹配 B 的外部輸出。 OC1A 接腳也是 PWM 模式定時器功能的輸出腳位。

DO:三線模式通用序列介面資料輸出。三線模式 資料輸出覆蓋 PORTB1 值,並且當資料方向位 DDB1 置位(1)時將其驅動至連接埠。如果方向已輸入且 PORTB1 已設定(XNUMX),則 PORTBXNUMX 仍啟用。

PCINT1:引腳變更中斷來源 1。

連接埠 B,位元 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0

MOSI:SPI 通道的 SPI 主資料輸出、從資料輸入。當 SPI 作為從機啟用時,無論 DDB0 的設定如何,該引腳都會配置為輸入。當 SPI 作為主機啟用時,此接腳的資料方向由 DDB0 控制。當該引腳被 SPI 強制為輸入時,上拉仍然可以由 PORTB0 位元控制。

AIN0:模擬比較器正輸入。將連接埠接腳配置為輸入並關閉內部上拉電阻,以避免數位連接埠功能幹擾類比比較器的功能。

OC0A:輸出比較匹配輸出。當配置為輸出(DDB0 置位(0))時,PB0 引腳可用作定時器/計數器 0 比較匹配 A 的外部輸出。 OCXNUMXA 接腳也是 PWM 模式定時器功能的輸出腳位。

OC1A:反相輸出比較匹配輸出:當配置為輸出(DDB0 置位)時,PB1 引腳可用作定時器/計數器 0 比較匹配 B 的外部輸出。 OC1A 接腳也是 PWM 模式定時器功能的反相輸出腳位。

SDA:兩線模式串列介面資料。

AREF:ADC 的外部模擬參考。當引腳用作外部參考或內部電壓時,PB0 上的上拉和輸出驅動器被禁用tage 使用 AREF 接腳處的外部電容器進行參考。

DI:USI 三線模式下的資料輸入。 USI 三線模式不會覆蓋正常連接埠功能,因此引腳必須配置為 DI 功能的輸入。

PCINT0:引腳變更中斷來源 0。

表10-4 和 表10-5 將 B 埠的備用功能與中所示的優先訊號連結起來 圖10-5 第 58 頁.

表 10-4。 PB[5:3] 中替代功能的重寫訊號

訊號名稱 PB5/重設/ADC0/PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
普奧埃

RSTDISBL(1) • 德溫(1)

0 0
聚氧乙烯 1 0 0
DDOE RSTDISBL(1) • 德溫(1) 0 0
DDOV 調試有線傳輸 0 0
聚乙烯醇 0 OC1B 啟用

OC1B 啟用

PVOV 0 OC1B OC1B
聚四氟乙烯 0 0 0
迪奧

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
迪奧夫 ADC0D ADC2D ADC3D
DI PCINT5 輸入 PCINT4 輸入 PCINT3 輸入
一體機 重設輸入、ADC0 輸入 ADC2 輸入 ADC3 輸入

注意:當保險絲為“0”(已編程)時。

表 10-5。 PB[2:0] 中替代功能的重寫訊號

訊號名稱 PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

PCINT0

普奧埃 USI_TWO_WIRE 0 USI_TWO_WIRE
聚氧乙烯 0 0 0
DDOE USI_TWO_WIRE 0 USI_TWO_WIRE
DDOV (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

聚乙烯醇 USI_TWO_WIRE • DDB2 OC0B 使能 + OC1A 使能 + USI_THREE_WIRE

OC0A 啟用 + OC1A 啟用 + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

聚四氟乙烯 美國國際貿易委員會 0 0
迪奧 PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
迪奧夫 ADC1D AIN1D AIN0D
DI T0/USCK/SCL/INT0/

PCINT2 輸入

PCINT1 輸入 DI/SDA/PCINT0 輸入
一體機 ADC1 輸入 類比比較器負輸入 類比比較器正輸入

註冊說明

MCUCR-MCU 控制暫存器

位元 7 6 5 4 3 2 1 0
0x35 生化指標 聚氨酯分散體 SE SM1 SM0 博德斯 ISC01 ISC00 微控制器控制寄存器
讀/寫 R 讀/寫 讀/寫 讀/寫 讀/寫 R 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

位元 6 – PUD:上拉禁用

當該位元寫入 0 時,即使 DDxn 和 PORTxn 暫存器配置為啟用上拉({DDxn, PORTxn} = 01bXNUMX),I/O 連接埠中的上拉也會被停用。看 第 54 頁上的“配置引腳” 有關此功能的更多詳細資訊。

PORTB——連接埠 B 資料暫存器

位元 7 6 5 4 3 2 1 0
0x18 端口B5 端口B4 端口B3 端口B2 端口B1 端口B0 端口B
讀/寫 R R 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

DDRB – 連接埠 B 資料方向暫存器

位元 7 6 5 4 3 2 1 0
0x17 數據庫5 數據庫4 數據庫3 數據庫2 數據庫1 數據庫0 DDRB
讀/寫 R R 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 0 0 0 0 0 0

PINB – 連接埠 B 輸入引腳位址

位元 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
讀/寫 R R 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫 讀/寫
初始值 0 0 不適用 不適用 不適用 不適用 不適用 不適用

帶 PWM 的 8 位元定時器/計數器 0

特徵

兩個獨立的輸出比較單元

雙緩衝輸出比較暫存器

比較匹配時清除計時器(自動重新加載)

無毛邊相位校正脈寬調變器 (PWM)

可變 PWM 週期

頻率發生器

三個獨立的中斷源(TOV0、OCF0A 和 OCF0B)

超過view

定時器/計數器0是通用8位元定時器/計數器模組,具有兩個獨立的輸出比較單元,並支援PWM。它允許精確的程式執行計時(事件管理)和波形產生。

8 位元定時器/計數器的簡化框圖如圖所示 圖11-1。有關 I/O 引腳的實際佈局,請參閱 第 25 頁的“引腳排列 ATtiny45/85/2”。 CPU 可存取的 I/O 暫存器,包括 I/O 位元和 I/O 接腳,以粗體顯示。裝置特定的 I/O 暫存器和位元位置列於 第 77 頁的“暫存器說明”.

定時器/計數器(TCNT0)和輸出比較暫存器(OCR0A 和 OCR0B)是 8 位元暫存器。中斷請求(圖中縮寫為Int.Req.)訊號皆在定時器中斷標誌暫存器(TIFR)中可見。所有中斷均透過定時器中斷屏蔽暫存器 (TIMSK) 單獨屏蔽。 TIFR和TIMSK未在圖中示出。

定時器/計數器可以透過預分頻器或 T0 引腳上的外部時鐘來源在內部提供時鐘。時脈選擇邏輯塊控制定時器/計數器使用哪個時脈來源和邊緣來遞增(或遞減)其值。當未選擇時鐘來源時,定時器/計數器處於非活動狀態。時脈選擇邏輯的輸出稱為定時器時脈 (clkT0)。

雙緩衝輸出比較暫存器(OCR0A 和 OCR0B)始終與定時器/計數器值進行比較。波形產生器可以使用比較結果在輸出比較引腳(OC0A 和 OC0B)上產生 PWM 或可變頻率輸出。 請參閱第 69 頁的「輸出比較單元」。 了解詳情。比較匹配事件也會設定比較標誌(OCF0A 或 OCF0B),可用於產生輸出比較中斷請求。

定義

本節中的許多暫存器和位元引用都是以通用形式編寫的。小寫「n」取代定時器/計數器編號,在本例中為 0。程式中,必須使用精確的形式,即TCNT0 用於存取定時器/計數器0 的計數器值等。

中的定義 表11-1 在整個文件中也廣泛使用。

表 11-1。 定義

持續的 描述
底部 當計數器變成 0x00 時,計數器到達底部
最大限度 當計數器變成 0xFF(十進位 255)時,計數器達到最大值
頂部 當計數器等於計數序列中的最高值時,計數器到達 TOP。 TOP 值可以指定為固定值 0xFF (MAX) 或儲存在 OCR0A 暫存器中的值。分配取決於操作模式

定時器/計數器預分頻器和時鐘源

定時器/計數器可以由內部或外部時鐘來源提供時鐘。時脈來源由時脈選擇邏輯選擇,時脈選擇邏輯由定時器/計數器 0 控制暫存器 (TCCR0B) 中的時脈選擇 (c) 位元控制。

帶預分頻器的內部時鐘源

定時器/計數器0 可以直接由系統時鐘提供時鐘(透過設定CS0[2:0] = 1)。這提供了最快的操作,最大定時器/計數器時脈頻率等於系統時脈頻率(fCLK_I/O)。或者,預分頻器的四個抽頭之一可以用作時鐘來源。預分頻時鐘的頻率為

預分頻器復位

預分頻器是自由運作的,即它的運作獨立於定時器/計數器0 的時鐘選擇邏輯。由於預分頻器不受定時器/計數器時鐘選擇的影響,因此預分頻器的狀態將對使用預分頻時鐘的情況產生影響。一位前任amp預分頻偽像是當定時器/計數器被使能並由預分頻器計時 (6 > CS0[2:0] > 1)。從定時器啟用到第一次計數發生的系統時脈週期數可以是 1 到 N+1 個系統時脈週期,其中 N 等於預分頻器除數(8、64、256 或 1024)。

可以使用預分頻器重設來使定時器/計數器與程式執行同步。

外部時鐘源

應用到 T0 引腳的外部時脈來源可用作定時器/計數器時鐘 (clkT0)。 T0引腳是samp由引腳同步邏輯在每個系統時鐘週期引導一次。同步的(sampled)信號然後被傳遞

透過邊緣檢測器。 圖11-2 顯示了 T0 同步和邊緣偵測器邏輯的功能等效框圖。暫存器在內部系統時脈 (clkI/O) 的正邊緣計時。鎖存器在內部系統時脈的高電平期間是透明的。

邊緣偵測器為其偵測到的每個正邊緣 (CS0[0:2] = 0) 或負邊緣 (CS7[0:2] = 0) 產生一個 clkT6 脈衝。

使用任何脈寬調變 (PWM) 模式時,OCR0x 暫存器是雙緩衝的。對於正常和清除比較定時器 (CTC) 操作模式,雙緩衝被停用。雙重緩衝將 OCR0x 比較暫存器的更新同步到計數序列的頂部或底部。同步可防止奇數長度、非對稱 PWM 脈衝的出現,從而使輸出無毛邊。

OCR0x 暫存器存取可能看起來很複雜,但事實並非如此。當雙緩衝啟用時,CPU 可以存取 OCR0x 緩衝暫存器,如果雙緩衝被停用,CPU 將直接存取 OCR0x。

強制輸出比較

在非 PWM 波形產生模式下,可以透過強制輸出比較(FOC0x)位元寫入 0 來強制比較器的匹配輸出。強制比較匹配不會設定OCF0x 標誌或重新加載/清除定時器,但OC0x 引腳將被更新,就像發生了真正的比較匹配一樣(COM1x[0:0] 位元設定定義OCXNUMXx 引腳是否被設定、清除或切換)。

透過 TCNT0 寫入進行比較匹配阻塞

所有對 TCNT0 暫存器的 CPU 寫入操作都將阻止下一個定時器時脈週期中發生的任何比較匹配,即使定時器已停止。此功能可讓 OCR0x 初始化為與 TCNT0 相同的值,而無需在定時器/計數器時脈啟用時觸發中斷。

使用輸出比較單元

由於在任何操作模式下寫入 TCNT0 都會阻塞一個定時器時脈週期內的所有比較匹配,因此在使用輸出比較單元時變更 TCNT0 時存在風險,無論定時器/計數器是否正在運作。如果寫入 TCNT0 的值等於 OCR0x 值,則將錯過比較匹配,從而導致產生不正確的波形。同樣,當計數器遞減計數時,不要將 TCNT0 的值寫入 BOTTOM。

應在將連接埠引腳的資料方向暫存器設定為輸出之前執行 OC0x 的設定。設定 OC0x 值最簡單的方法是在正常模式下使用強制輸出比較 (FOC0x) 選通位元。即使在波形產生模式之間更改,OC0x 暫存器也會保留其值。

請注意,COM0x[1:0] 位元不與比較值一起雙重緩衝。更改 COM0x[1:0] 位元將立即生效。

比較匹配輸出單元

比較輸出模式(COM0x[1:0])位元有兩個功能。波形產生器使用 COM0x[1:0] 位元來定義下一個比較匹配時的輸出比較(OC0x)狀態。此外,COM0x[1:0] 位元控制 OC0x 引腳輸出來源。 圖11-6 顯示了受 COM0x[1:0] 位元設定影響的邏輯的簡化原理圖。圖中的I/O暫存器、I/O位元和I/O引腳以粗體顯示。僅顯示了通用 I/O 連接埠控制暫存器(DDR 和 PORT)中受 COM0x[1:0] 位元影響的部分。當提及 OC0x 狀態時,參考的是內部 OC0x 暫存器,而不是 OC0x 接腳。如果發生系統重設,OC0x 暫存器將重設為「0」。

當 OC0A/OC0B 連接到 I/O 接腳時,COM0A[1:0]/COM0B[1:0] 位元的功能取決於 WGM0[2:0] 位元的設定。 表11-2 顯示了當 WGM0[1:0] 位元設定為正常或 CTC 模式(非 PWM)時 COM0x[2:0] 位元的功能。

表 11-2。 比較輸出模式,非 PWM 模式

COM0A1 COM0B1 COM0A0 COM0B0 描述
0 0 連接埠工作正常,OC0A/OC0B 斷開。
0 1 在比較匹配上切換 OC0A/OC0B
1 0 比較匹配時清除 OC0A/OC0B
1 1 將 OC0A/OC0B 設定為比較匹配

表11-3 顯示了當 WGM0[1:0] 位元設定為快速 PWM 模式時 COM0x[2:0] 位元的功能。

表 11-3。 比較輸出模式、快速 PWM 模式(1)

COM0A1 COM0B1 COM0A0 COM0B0 描述
0 0 連接埠工作正常,OC0A/OC0B 斷開。
0 1 預訂的
1 0 比較配對時清零 OC0A/OC0B,將 OC0A/OC0B 設定為 BOTTOM(非反相模式)
1 1 在比較匹配時設定 OC0A/OC0B,在底部清除 OC0A/OC0B(反相模式)

註:當 OCR0A 或 OCR0B 等於 TOP 且 COM0A1/COM0B1 置位時,會出現特殊情況。在這種情況下,比較匹配被忽略,但設定或清除是在底部完成的。看 第 73 頁上的“快速 PWM 模式” 了解更多詳情。

表11-4 顯示了當 WGM0[1:0] 位元設定為相位校正 PWM 模式時 COM0x[2:0] 位元的功能。

表 11-4。 比較輸出模式、相位校正 PWM 模式(1)

COM0A1 COM0B1 COM0A0 COM0B0 描述
0 0 連接埠工作正常,OC0A/OC0B 斷開。
0 1 預訂的
1 0 向上計數時,比較匹配時清除 OC0A/OC0B。遞減計數時,將 OC0A/OC0B 設定為比較匹配。
1 1 向上計數時,將 OC0A/OC0B 設定為比較匹配。遞減計數時,比較匹配時清除 OC0A/OC0B。

註: 1. 當 OCR0A 或 OCR0B 等於 TOP 且 COM0A1/COM0B1 置位時,會出現特殊情況。在這種情況下,比較匹配被忽略,但設定或清除是在 TOP 完成的。看 第 74 頁上的“相位校正 PWM 模式” 了解更多詳情。

位 3:2 – Res:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 1:0 – WGM0[1:0]:波形產生模式

與 TCCR02B 暫存器中的 WGM0 位元結合,這些位元控制計數器的計數順序、最大 (TOP) 計數器值的來源以及要使用的波形產生類型,請參見 表11-5。定時器/計數器單元支援的操作模式有:正常模式(計數器)、比較匹配清零定時器(CTC)模式和兩種類型的脈寬調變(PWM)模式(請參見 《運作模式》 第 71 頁).

表 11-5。 波形生成模式 位元 描述

模式 工作小組02 工作小組01 工作小組00 定時器/計數器操作模式 頂部 OCRx 更新於 TOV 標誌設定為開啟
0 0 0 0 普通的 0xFF 即時 最大限度(1)
1 0 0 1 脈寬調變、相位校正 0xFF 頂部 底部(2)
2 0 1 0 CTC OCRA 即時 最大限度(1)
3 0 1 1 快速脈寬調製 0xFF 底部(2) 最大限度(1)
4 1 0 0 預訂的
5 1 0 1 脈寬調變、相位校正 OCRA 頂部 底部(2)
6 1 1 0 預訂的
7 1 1 1 快速脈寬調製 OCRA 底部(2) 頂部

位元 7 – FOC0A:強制輸出比較 A

僅當 WGM 位元指定非 PWM 模式時,FOC0A 位元才有效。

然而,為了確保與未來裝置的兼容性,在 PWM 模式下寫入 TCCR0B 時,必須將此位元設為零。當 FOC0A 位元寫入邏輯 0 時,會在波形產生單元上強制立即進行比較匹配。 OC0A 輸出會根據其 COM1A[0:0] 位元設定而變化。請注意,FOC0A 位元是作為選通脈衝實現的。因此,COM1A[0:XNUMX] 位元中的值決定了強制比較的效果。

FOC0A 選通脈衝不會產生任何中斷,也不會在使用 OCR0A 作為 TOP 的 CTC 模式下清除定時器。 FOC0A 位元始終讀為零。

位元 6 – FOC0B:強制輸出比較 B

只有當 WGM 位元指定非 PWM 模式時,FOC0B 位元才有效。

然而,為了確保與未來裝置的兼容性,在 PWM 模式下寫入 TCCR0B 時,必須將此位元設為零。當 FOC0B 位元寫入邏輯 0 時,會在波形產生單元上強制立即進行比較匹配。 OC0B 輸出會根據其 COM1B[0:0] 位元設定而變化。請注意,FOC0B 位元是作為選通脈衝實現的。因此,COM1B[0:XNUMX] 位元中的值決定了強制比較的效果。

FOC0B 選通脈衝不會產生任何中斷,也不會在使用 OCR0B 作為 TOP 的 CTC 模式下清除定時器。

FOC0B 位元始終讀為零。

位 5:4 – Res:保留位

這些位元是 ATtiny25/45/85 中的保留位,並且總是讀為零。

位元 3 – WGM02:波形產生模式

請參閱中的描述 第 0 頁上的“TCCR77A——定時器/計數器控制暫存器 A”.

位元 2:0 – CS0[2:0]:時脈選擇

三個時鐘選擇位元選擇定時器/計數器使用的時鐘來源。

表 11-6。 時鐘選擇位元描述

CS02 CS01 CS00 描述
0 0 0 無時鐘來源(定時器/計數器停止)
0 0 1 clkI/O/(無預分頻)
0 1 0 clkI/O/8(來自預分頻器)
0 1 1 clkI/O/64(來自預分頻器)
1 0 0 clkI/O/256(來自預分頻器)
1 0 1 clkI/O/1024(來自預分頻器)
1 1 0 T0 接腳上的外部時脈來源。時脈在下降沿。
1 1 1 T0 接腳上的外部時脈來源。時脈在上升沿。

如果外部引腳模式用於定時器/計數器 0,則 T0 引腳上的轉換將為計數器提供時鐘,即使該引腳配置為輸出也是如此。此功能允許軟體控制計數。

計數器和比較單位

定時器/計數器 1 的一般操作以非同步模式進行描述,而同步模式下的操作僅在兩種模式之間存在差異時才提及。 圖12-2 顯示定時器/計數器 1 同步暫存器框圖以及暫存器之間的同步延遲。請注意,圖中未顯示所有時鐘門控細節。定時器/計數器 1 暫存器的值在影響計數器操作之前會經過內部同步暫存器,這會導致輸入同步延遲。暫存器 TCCR1、GTCCR、OCR1A、OCR1B 和 OCR1C 可以在寫入暫存器後立即讀回。由於輸入和輸出同步,定時器/計數器 1 (TCNT1) 暫存器和標誌(OCF1A、OCF1B 和 TOV1)的回讀值會延遲。

定時器/計數器 1 具有高解析度和高精度使用以及較低的預分頻機會。它還可以支援兩個精確、高速、8 位元脈衝寬度調製器,使用高達 64 MHz 的時脈速度(或低速模式下的 32 MHz)。在此模式下,定時器/計數器 1 和輸出比較暫存器用作雙獨立 PWM,具有不重疊的同相和反相輸出。參考 第 86 頁 有關此功能的詳細說明。同樣,高預分頻機會使該單元可用於低速功能或不頻繁操作的精確時間功能。

圖 12-2。定時器/計數器 1 同步暫存器框圖。

定時器/計數器 1 和預分頻器允許從任何時脈源運行 CPU,同時預分頻器在非同步模式下以快速 64 MHz(或在低速模式下為 32 MHz)PCK 時脈運作。

請注意,系統時脈頻率必須低於 PCK 頻率的三分之一。當系統時脈為高電位時,非同步定時器/計數器1的同步機制至少需要PCK的兩個邊緣。如果系統時脈的頻率太高,則有資料或控制值遺失的風險。

下列 圖12-3 顯示定時器/計數器 1 的框圖。

表 12-1。 PWM 模式下的比較模式選擇

串口1x1 串口1x0 對輸出比較引腳的影響
0 0 OC1x 未連線。 OC1x 未連線。
0 1 OC1x 在比較匹配時清零。當 TCNT1 = $00 時設定。 OC1x 設定為比較匹配。當 TCNT1 = $00 時清零。
1 0 OC1x 在比較匹配時清零。當 TCNT1 = $00 時置位。 OC1x 未連線。
1 1 OC1x 設定為比較匹配。當 TCNT1= $00 時清零。 OC1x 未連線。

ADC 特性

表 21-8。 ADC 特性,單端通道。 TA = -40°C 至 +85°C

象徵 範圍 狀態 最小 典型值 最大限度 單位
解決 10 位元
絕對精度(包括 INL、DNL 以及量化、增益和偏移誤差) VREF = 4V,VCC = 4V,

ADC 時鐘 = 200 kHz

2 最低有效位
VREF = 4V,VCC = 4V,

ADC 時脈 = 1 MHz

3 最低有效位
VREF = 4V,VCC = 4V,

ADC 時鐘 = 200 kHz

降噪模式

1.5 最低有效位
VREF = 4V,VCC = 4V,

ADC 時脈 = 1 MHz

降噪模式

2.5 最低有效位
積分非線性 (INL)(偏移和增益校準後的精度) VREF = 4V,VCC = 4V,

ADC 時鐘 = 200 kHz

1 最低有效位
微分非線性 (DNL) VREF = 4V,VCC = 4V,

ADC 時鐘 = 200 kHz

0.5 最低有效位
增益誤差 VREF = 4V,VCC = 4V,

ADC 時鐘 = 200 kHz

2.5 最低有效位
偏移誤差 VREF = 4V,VCC = 4V,

ADC 時鐘 = 200 kHz

1.5 最低有效位
轉換時間 自由運行轉換 14 280 微秒
時鐘頻率 50 1000 千赫
車架號 輸入音量tage 接地 參考電壓 V
輸入帶寬 38.4 千赫
阿瑞夫 外部參考卷tage 2.0 電壓控制電路 V
釀酒 內部卷tag參考資料 1.0 1.1 1.2 V
內部 2.56V 參考電壓 (1) VCC>3.0V 2.3 2.56 2.8 V
參考文獻 32 千歐
類比輸入電阻 100 兆歐姆
類比數位轉換器輸出 0 1023 最低有效位

注意: 1. 數值僅供參考。

表 21-9。 ADC 特性,差分通道(單極模式)。 TA = -40°C 至 +85°C

象徵 範圍 狀態 最小 典型值 最大限度 單位
解決 增益 = 1x 10 位元
增益 = 20x 10 位元
絕對精度(包括INL、DNL和

量化、增益和偏移誤差)

增益 = 1x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

10.0 最低有效位
增益 = 20x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

20.0 最低有效位
積分非線性 (INL)(偏移和增益校準後的精度) 增益 = 1x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

4.0 最低有效位
增益 = 20x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

10.0 最低有效位
增益誤差 增益 = 1x 10.0 最低有效位
增益 = 20x 15.0 最低有效位
偏移誤差 增益 = 1x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

3.0 最低有效位
增益 = 20x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

4.0 最低有效位
轉換時間 自由運行轉換 70 280 微秒
時鐘頻率 50 200 千赫
車架號 輸入音量tage 接地 電壓控制電路 V
VDIFF 輸入差分電壓tage VREF/增益 V
輸入帶寬 4 千赫
阿瑞夫 外部參考卷tage 2.0 VCC – 1.0 V
釀酒 內部卷tag參考資料 1.0 1.1 1.2 V
內部 2.56V 參考電壓 (1) VCC>3.0V 2.3 2.56 2.8 V
參考文獻 參考輸入電阻 32 千歐
類比輸入電阻 100 兆歐姆
ADC 轉換輸出 0 1023 最低有效位

注意:數值僅供參考。

表 21-10。 ADC 特性,差分通道(雙極模式)。 TA = -40°C 至 +85°C

象徵 範圍 狀態 最小 典型值 最大限度 單位
解決 增益 = 1x 10 位元
增益 = 20x 10 位元
絕對精度(包括INL、DNL和

量化、增益和偏移誤差)

增益 = 1x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

8.0 最低有效位
增益 = 20x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

8.0 最低有效位
積分非線性 (INL)(偏移和增益校準後的精度) 增益 = 1x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

4.0 最低有效位
增益 = 20x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

5.0 最低有效位
增益誤差 增益 = 1x 4.0 最低有效位
增益 = 20x 5.0 最低有效位
偏移誤差 增益 = 1x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

3.0 最低有效位
增益 = 20x

VREF = 4V,VCC = 5V

ADC 時鐘 = 50 – 200 kHz

4.0 最低有效位
轉換時間 自由運行轉換 70 280 微秒
時鐘頻率 50 200 千赫
車架號 輸入音量tage 接地 電壓控制電路 V
VDIFF 輸入差分電壓tage VREF/增益 V
輸入帶寬 4 千赫
阿瑞夫 外部參考卷tage 2.0 VCC – 1.0 V
釀酒 內部卷tag參考資料 1.0 1.1 1.2 V
內部 2.56V 參考電壓 (1) VCC>3.0V 2.3 2.56 2.8 V
參考文獻 參考輸入電阻 32 千歐
類比輸入電阻 100 兆歐姆
ADC 轉換輸出 -512 511 最低有效位

指令集總結

助記符 操作數 描述 手術 旗幟 #時鐘
算術和邏輯指令
添加 路、路 添加兩個寄存器 路 ← 路 + Rr Z、C、N、V、H 1
類比數位轉換器 路、路 加進位兩個寄存器 Rd ← Rd + Rr + C Z、C、N、V、H 1
阿迪威 讀值,K 立即新增至 Word Rdh:Rdl ← Rdh:Rdl + K Z、C、N、V、S 2
子系統 路、路 兩個寄存器相減 路 ← 路 – Rr Z、C、N、V、H 1
蘇比 路、K 從寄存器中減去常數 路 ← 路 – K Z、C、N、V、H 1
小型計算機公司 路、路 兩個寄存器進位相減 Rd ← Rd – Rr – C Z、C、N、V、H 1
SBCI 路、K 從寄存器中減去進位常數。 路 ← 路 – K – C Z、C、N、V、H 1
SBW 讀值,K 從 Word 中減去立即數 Rdh:Rdl ← Rdh:Rdl – K Z、C、N、V、S 2
路、路 邏輯與寄存器 Rd ← Rd ∙ Rr Z、N、V 1
安迪 路、K 寄存器和常數的邏輯與 路 ← 路 ∙ K Z、N、V 1
OR 路、路 邏輯或寄存器 Rd ← Rd v Rr Z、N、V 1
奧瑞 路、K 寄存器和常數的邏輯或 路 ← 路 v K Z、N、V 1
提高採收率 路、路 異或寄存器 Rd ← Rd ⊕ Rr Z、N、V 1
通訊 Rd 一個的補語 路 ← 0xFF – 路 Z、C、N、V 1
NEG Rd 補碼 路 ← 0x00 - 路 Z、C、N、V、H 1
丁苯橡膠 路,K 設置寄存器中的位 路 ← 路 v K Z、N、V 1
社區商業銀行 路,K 清除寄存器中的位 Rd ← Rd ∙ (0xFF – K) Z、N、V 1
有限公司 Rd 增量 路 ← 路 + 1 Z、N、V 1
十二月 Rd 減量 路 ← 路 - 1 Z、N、V 1
尖沙咀 Rd 測試零或負數 路 ← 路 ∙ 路 Z、N、V 1
CLR Rd 清除寄存器 路 ← 路 ⊕ 路 Z、N、V 1
塞內爾 Rd 設置寄存器 路← 0xFF 沒有任何 1
分行說明
RJMP k 相對跳躍 PC ← PC + k + 1 沒有任何 2
國際JMP 間接跳到(Z) 電腦←Z 沒有任何 2
回呼 k 相關子程序調用 PC ← PC + k + 1 沒有任何 3
我打電話 間接呼叫 (Z) 電腦←Z 沒有任何 3
視網膜色素變性 子程序返回 電腦←堆疊 沒有任何 4
可再生能源 中斷返回 電腦←堆疊 I 4
CPSE 路,Rr 比較,如果相等則跳過 如果 (Rd = Rr) PC ← PC + 2 或 3 沒有任何 1/2/3
CP 路,Rr 比較 路 – 路 Z、N、V、C、H 1
中國共產黨 路,Rr 與進位比較 Rd – Rr – C Z、N、V、C、H 1
消費者物價指數 路,K 比較寄存器與立即數 路 – K Z、N、V、C、H 1
SBRC RR, b 如果寄存器中的位已清除則跳過 如果 (Rr(b)=0) PC ← PC + 2 或 3 沒有任何 1/2/3
丁苯橡膠 RR, b 如果寄存器中的位已設置則跳過 如果 (Rr(b)=1) PC ← PC + 2 或 3 沒有任何 1/2/3
SBIC公司 乙、乙 如果 I/O 寄存器中的位已清除,則跳過 如果 (P(b)=0) PC ← PC + 2 或 3 沒有任何 1/2/3
建築工業信息系統 乙、乙 如果 I/O 寄存器中的位已設置則跳過 如果 (P(b)=1) PC ← PC + 2 或 3 沒有任何 1/2/3
BRBS s、k 如果狀態標誌設置則轉移 如果 (SREG(s) = 1) 則 PC←PC+k + 1 沒有任何 1/2
BRBC s、k 如果狀態標誌清除則轉移 如果 (SREG(s) = 0) 則 PC←PC+k + 1 沒有任何 1/2
請求請求 k 如果相等則轉移 如果 (Z = 1) 則 PC ← PC + k + 1 沒有任何 1/2
伯爾尼 k 如果不等於則轉移 如果 (Z = 0) 則 PC ← PC + k + 1 沒有任何 1/2
BRCS k 如果進位設置則轉移 如果 (C = 1) 則 PC ← PC + k + 1 沒有任何 1/2
BRCC k 如果進位清零則轉移 如果 (C = 0) 則 PC ← PC + k + 1 沒有任何 1/2
BRSH k 如果相同或更高則轉移 如果 (C = 0) 則 PC ← PC + k + 1 沒有任何 1/2
BRLO k 如果較低則轉移 如果 (C = 1) 則 PC ← PC + k + 1 沒有任何 1/2
BRMI k 如果減則轉移 如果 (N = 1) 則 PC ← PC + k + 1 沒有任何 1/2
BRPL k 如果加上則分支 如果 (N = 0) 則 PC ← PC + k + 1 沒有任何 1/2
BRGE k 如果大於或等於則轉移,帶符號 如果 (N ⊕ V= 0) 則 PC ← PC + k + 1 沒有任何 1/2
BRLT k 如果小於零則轉移,有符號 如果 (N ⊕ V= 1) 則 PC ← PC + k + 1 沒有任何 1/2
BRHS k 如果半進位標誌設置則轉移 如果 (H = 1) 則 PC ← PC + k + 1 沒有任何 1/2
BRHC k 如果半進位標誌清除則轉移 如果 (H = 0) 則 PC ← PC + k + 1 沒有任何 1/2
BRTS k 如果 T 標誌設置則轉移 如果 (T = 1) 則 PC ← PC + k + 1 沒有任何 1/2
BRTC k 如果 T 標誌清除則轉移 如果 (T = 0) 則 PC ← PC + k + 1 沒有任何 1/2
BRVS k 如果設置了溢出標誌則轉移 如果 (V = 1) 則 PC ← PC + k + 1 沒有任何 1/2
BRVC k 如果清除溢出標誌則轉移 如果 (V = 0) 則 PC ← PC + k + 1 沒有任何 1/2
布里乾酪 k 如果中斷啟用則轉移 如果 ( I = 1) 則 PC ← PC + k + 1 沒有任何 1/2
k 如果中斷被禁用則轉移 如果 ( I = 0) 則 PC ← PC + k + 1 沒有任何 1/2
位和位測試指令
SBI P,b 設置 I/O 寄存器中的位 I/O(P,b) ← 1 沒有任何 2
工業商業銀行 P,b 清除 I/O 寄存器中的位 I/O(P,b) ← 0 沒有任何 2
LSL Rd 邏輯左移 Rd(n+1) ← Rd(n), Rd(0) ← 0 Z、C、N、V 1
液體矽橡膠 Rd 邏輯右移 Rd(n) ← Rd(n+1), Rd(7) ← 0 Z、C、N、V 1
ROLE Rd 通過進位向左旋轉 Rd(0)←C,Rd(n+1)←Rd(n),C←Rd(7) Z、C、N、V 1
相對報酬率 Rd 右轉進位 Rd(7)←C,Rd(n)←Rd(n+1),C←Rd(0) Z、C、N、V 1
自動語音識別 Rd 算術右移 Rd(n) ← Rd(n+1), n=0..6 Z、C、N、V 1
助記符 操作數 描述 手術 旗幟 #時鐘
交換 Rd 交換小口 Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) 沒有任何 1
貝斯特 s 標誌集 SREG ← 1 SREG 1
BCLR s 清除標誌 SREG ← 0 SREG 1
空白時間 RR, b 從寄存器到 T 的位存儲 T ← Rr(b) T 1
BLD 路、b 從 T 到寄存器的位加載 Rd(b) ← T 沒有任何 1
美國證券交易委員會 套裝攜帶 C←1 C 1
CLC 清除攜帶 C←0 C 1
特殊需求 設置負標誌 N←1 N 1
CLN 清除負標誌 N←0 N 1
經濟特區 設置零標誌 Z←1 Z 1
CLZ 清除零標誌 Z←0 Z 1
SEI 全局中斷使能 我←1 I 1
命令列介面 全局中斷禁用 我←0 I 1
SES 設置簽名測試標誌 S←1 S 1
CLS 清除簽名測試標誌 S←0 S 1
塞維夫 設定二進制補碼溢出。 V←1 V 1
CLV 清除二進制補碼溢出 V←0 V 1
在 SREG 中設置 T T ← 1 T 1
交聯層析法 清除 SREG 中的 T T ← 0 T 1
SEH 在 SREG 中設置半進位標誌 H←1 H 1
CLH 清除 SREG 中的半進位標誌 H←0 H 1
數據傳輸說明
MOV 路、路 在寄存器之間移動 路←Rr 沒有任何 1
MOVW 路、路 複製暫存器字 Rd+1:Rd ← Rr+1:Rr 沒有任何 1
LDI 路、K 立即加載 路←K 沒有任何 1
LD 路,X 間接載入 路 ← (X) 沒有任何 2
LD 路、X+ 加載間接和後置公司。 Rd ← (X), X ← X + 1 沒有任何 2
LD 路,-X 負載間接和十二月前。 X ← X – 1,路 ← (X) 沒有任何 2
LD 路,Y 間接載入 路 ← (Y) 沒有任何 2
LD 路、Y+ 加載間接和後置公司。 Rd ← (Y), Y ← Y + 1 沒有任何 2
LD 路,-Y 負載間接和十二月前。 Y ← Y – 1,Rd ← (Y) 沒有任何 2
LDD RD,Y+q 帶位移的間接載重 Rd ← (Y + q) 沒有任何 2
LD 路、Z 間接載入 路 ← (Z) 沒有任何 2
LD 路、Z+ 加載間接和後置公司。 Rd ← (Z),Z ← Z+1 沒有任何 2
LD 路,-Z 負載間接和十二月前。 Z ← Z – 1,Rd ← (Z) 沒有任何 2
LDD 路、Z+q 帶位移的間接載重 Rd ← (Z + q) 沒有任何 2
摩門教徒 路,k 直接從 SRAM 加載 路 ← (k) 沒有任何 2
ST X、Rr 間接儲存 (X) ← RR 沒有任何 2
ST X+,Rr 儲存間接和後期公司。 (X) ← Rr, X ← X + 1 沒有任何 2
ST – X,Rr 儲存間接和十二月前。 X ← X – 1, (X) ← Rr 沒有任何 2
ST 是,Rr 間接儲存 (Y) ← RR 沒有任何 2
ST Y+、Rr 儲存間接和後期公司。 (Y)←Rr,Y←Y+1 沒有任何 2
ST – Y,Rr 儲存間接和十二月前。 Y ← Y – 1,(Y) ← Rr 沒有任何 2
性病 Y+q,Rr 間接儲存位移 (Y + q) ← Rr 沒有任何 2
ST Z、Rr 間接儲存 (Z) ← RR 沒有任何 2
ST Z+、Rr 儲存間接和後期公司。 (Z)←Rr,Z←Z+1 沒有任何 2
ST -Z,Rr 儲存間接和十二月前。 Z ← Z – 1,(Z) ← Rr 沒有任何 2
性病 Z+q,Rr 間接儲存位移 (Z + q) ← Rr 沒有任何 2
超導系統 k、Rr 直接儲存到 SRAM (k) ← Rr 沒有任何 2
LPM 加載程序存儲器 R0←(Z) 沒有任何 3
LPM 路、Z 加載程序存儲器 路 ← (Z) 沒有任何 3
LPM 路、Z+ 載入程式記憶體和Post-Inc Rd ← (Z),Z ← Z+1 沒有任何 3
SPM 儲存程式記憶體 (z) ← R1:R0 沒有任何
IN 路、P 在港口 路←P 沒有任何 1
出去 磷、磷 出港 P←Rr 沒有任何 1
Rr 將暫存器壓入堆疊 堆疊←Rr 沒有任何 2
流行音樂 Rd 從堆疊中彈出暫存器 路←堆疊 沒有任何 2
單晶片控制指令
諾普 無操作 沒有任何 1
睡覺 睡覺 (睡眠功能具體說明見) 沒有任何 1
寬動態範圍 看門狗復位 (請參閱WDR/定時器的具體說明) 沒有任何 1
休息 休息
速度(兆赫茲) (1) 供應量tag電子 (V) 溫度範圍 包裹 (2) 訂購代號 (3)
10 1.8 – 5.5 工業的

(-40°C 至 +85°C) (4)

8P3 ATtiny45V-10PU
8S2 ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR
8X ATtiny45V-10XU ATtiny45V-10XUR
20M1 ATtiny45V-10MU ATtiny45V-10MUR
20 2.7 – 5.5 工業的

(-40°C 至 +85°C) (4)

8P3 ATtiny45-20PU
8S2 ATtiny45-20SU ATtiny45-20SUR

ATtiny45-20SH ATtiny45-20SHR

8X ATtiny45-20XU ATtiny45-20XUR
20M1 ATtiny45-20MU ATtiny45-20MUR

註: 1. 對於速度與供應量tage,參見章節 21.3 「速度」(第 163 頁).

所有封裝均無鉛、無鹵化物且完全綠色,並符合歐洲有害物質限制指令 (RoHS)。

程式碼指標

H:NiPdAu 鉛表面處理

U:霧錫

R:捲帶式

這些裝置也可以以晶圓形式提供。請聯絡您當地的 Atmel 銷售辦事處,以了解詳細的訂購資訊和最低數量。

勘誤

勘誤 ATtiny25

本節的修訂字母是指 ATtiny25 設備的修訂版本。

版本 D – F

沒有已知的勘誤。

版本 B – C

低電源電壓下 EEPROM 讀取可能會失敗tage/低時脈頻率

低電源電壓下 EEPROM 讀取可能會失敗tage/低時脈頻率

嘗試以低時脈頻率和/或低電源電壓讀取 EEPROMtage 可能會導致無效資料。

問題修復/解決方法

當時脈頻率低於 1MHz 且電源電壓低於 XNUMXMHz 時,請勿使用 EEPROM。tage低於2V。如果工作頻率無法提高到 1MHz 以上,則電源電壓tage應大於2V。同樣,如果供應量tage 不能升至2V 以上,則工作頻率應大於1MHz。

已知該特性與溫度有關,但尚未對其進行表徵。僅針對室溫給了指導原則。

版本A

不是amp引領。

勘誤 ATtiny45

本節的修訂字母是指 ATtiny45 設備的修訂版本。

修訂版 F – G

無已知勘誤表

版本 D – E

低電源電壓下 EEPROM 讀取可能會失敗tage/低時脈頻率

低電源電壓下 EEPROM 讀取可能會失敗tage/低時脈頻率

嘗試以低時脈頻率和/或低電源電壓讀取 EEPROMtage 可能會導致無效資料。

問題修復/解決方法

當時脈頻率低於 1MHz 且電源電壓低於 XNUMXMHz 時,請勿使用 EEPROM。tage低於2V。如果工作頻率無法提高到 1MHz 以上,則電源電壓tage應大於2V。同樣,如果供應量tage 不能升至2V 以上,則工作頻率應大於1MHz。

已知該特性與溫度相關,但尚未對其進行表徵。僅針對室溫給了指導原則。

版本 B – C

PLL未鎖定

從應用程式程式碼讀取 EEPROM 在鎖定位元模式 3 下不起作用

低電源電壓下 EEPROM 讀取可能會失敗tage/低時脈頻率

OC1B-XOC1B 上的定時器計數器 1 PWM 輸出產生無法正常運作

PLL未鎖定

當頻率低於 6.0 MHz 時,PLL 將不會鎖定

問題修復/解決方法

使用 PLL 時,運作頻率為 6.0 MHz 或更高。

從應用程式程式碼讀取 EEPROM 在鎖定位元模式 3 下不起作用

當記憶體鎖定位元 LB2 和 LB1 編程為模式 3 時,應用程式代碼無法讀取 EEPROM。

問題修復/解決方法

當應用程式代碼需要從 EEPROM 讀取資料時,請勿設定鎖定位保護模式 3。

低電源電壓下 EEPROM 讀取可能會失敗tage/低時脈頻率

嘗試以低時脈頻率和/或低電源電壓讀取 EEPROMtage 可能會導致無效資料。

問題修復/解決方法

當時脈頻率低於 1MHz 且電源電壓低於 XNUMXMHz 時,請勿使用 EEPROM。tage低於2V。如果工作頻率無法提高到 1MHz 以上,則電源電壓tage應大於2V。同樣,如果供應量tage 不能升至2V 以上,則工作頻率應大於1MHz。

已知該特性與溫度有關,但尚未對其進行表徵。僅針對室溫給了指導原則。

OC1B 上的定時器計數器 1 PWM 輸出產生 – XOC1B 無法正常運作

定時器計數器 1 PWM 輸出 OC1B-XOC1B 無法正常運作。只有當控制位元 COM1B1 和 COM1B0 分別與 COM1A1 和 COM1A0 處於相同模式時,OC1B-XOC1B 輸出才能正常運作。

問題修復/解決方法

唯一的解決方法是對 COM1A[1:0] 和 COM1B[1:0] 控制位使用相同的控制設置,請參閱資料表中的表 14-4。 Tiny45 rev D 的問題已解決。

版本A

掉電功率過高

單步執行中斷時 DebugWIRE 失去通信

PLL未鎖定

從應用程式程式碼讀取 EEPROM 在鎖定位元模式 3 下不起作用

低電源電壓下 EEPROM 讀取可能會失敗tage/低時脈頻率

掉電功率過高

三種情況會導致掉電功耗過高。這些都是:

外部時脈由熔絲選擇,但 I/O 連接埠仍啟用為輸出。

在進入斷電狀態之前讀取 EEPROM。

VCC 為 4.5 伏特或更高。

免責聲明:本文檔中的資訊與 Atmel 產品相關。本文檔或與 Atmel 產品銷售相關的任何智慧財產權均未以禁止反言或其他方式授予任何明示或暗示的許可。除非 ATMEL 上的 ATMEL 銷售條款與條件另有規定 WEB網站、ATMEL 不承擔任何責任,並否認與其產品相關的任何明示、暗示或法定保證,包括但不限於適銷性、特定用途適用性或不侵權的暗示保證。在任何情況下,ATMEL 均不對因使用或無法使用而引起的任何直接、間接、後果性、懲罰性、特殊或附帶損害(包括但不限於損失和利潤損害、業務中斷或資訊遺失)承擔責任即使ATMEL 已被告知發生此類損害的可能性,仍需遵守本文件。

Atmel 不對本文檔內容的準確性或完整性做出任何陳述或保證,並保留隨時更改規格和產品描述的權利,恕不另行通知。 Atmel 不承諾更新此處包含的資訊。除非另有明確規定,Atmel 產品不適合且不得用於汽車應用。 Atmel 產品無意、授權或保證用作支持或維持生命的應用中的組件。

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *