熔絲位簡要說明
熔絲位 | 功能 | 配置說明 | |
熔絲低位 | CKDIV8 | 時鐘8分頻 | 0:時鐘8分頻 |
1:時鐘不分頻 | |||
CKOUT | 時鐘輸出 | 0:系統時鐘輸出(PB0) | |
1:不輸出 | |||
SUT1 | 選擇啟動時間 | 根據時鐘源選擇的不同會有不同的設定,詳見下文。 | |
SUT0 | |||
CKSEL3 | 選擇時鐘源 | 1111-1000:低功率晶振 | |
0111-0110:滿振幅晶振 | |||
CKSEL2 | 0101-0100:低頻晶振 | ||
CKSEL1 | 0011:内部128K RC振蕩器 | ||
CKSEL0 | 0010:校準的内部RC振蕩器 | ||
0000:外部時鐘 | |||
熔絲高位 | RSTDISBL | 外部複用禁止 | 0:PC6為普通引腳 |
1:PC6為複位引腳 | |||
DWEN | 調試線使能 | 0:使能片上調試系統 | |
1:部使能片上調試系統 | |||
SPIEN | 使能串行程式和資料下載下傳 | 0:SPI程式設計使能 | |
1:SPI程式設計未使能 | |||
WDTON | 看門狗時間一直啟用 | 0:看門狗時間一直啟用 | |
1:看門狗時間通過軟體設定 | |||
EESAVE | 執行晶片擦除時EEPROM内容保留 | 0:晶片擦除時EEPROM不受影響 | |
1:晶片擦除時EEPROM清除 | |||
BODLEVEL2 | BOD觸發電平 | 111:BOD禁用 | |
110:Min=1.7,Typ=1.8,Max=2.0 (V) | |||
BODLEVEL1 | 101:Min=2.5,Typ=2.7,Max=2.9 (V) | ||
BODLEVEL0 | 100:Min=4.1,Typ=4.3,Max=4.5 (V) | ||
mega88/168熔絲擴充位 | BOOTSZ1 | 選擇boot區大小 | 00::1024字 |
01:512字 | |||
BOOTSZ0 | 10:256字 | ||
00:128字 | |||
BOOTRST | 選擇複位向量 | 0:Boot區複位位址 | |
1:0x000 | |||
加密位 | BLB12 | Boot鎖定位 | 11:SPM和LPM通路沒有限制 |
BLB11 | 10:禁止SPM指令 | ||
BLB02 | 01:禁止LPM指令 | ||
BLB01 | 11:SPM和LPM全禁止 | ||
LB2 | 鎖定位 | 11:記憶體鎖定不使能 | |
LB1 | 10、00:Flash和EEPROM程式設計禁止 |
一、熔絲低位
低熔絲位 | 位号 | 描述 | 預設值 |
CKDIV8 | 7 | 時鐘8分頻 | |
CKOUT | 6 | 時鐘輸出 | 1 |
SUT1 | 5 | 選擇啟動時間 | 1 |
SUT0 | 4 | ||
CKSEL3 | 3 | 選擇時鐘源 | |
CKSEL2 | 2 | ||
CKSEL1 | 1 | 1 | |
CKSEL0 |
1、第七位CKDIV8:決定CLKPS的初始值,CKDIV8為1,CLKPS将設定為0000(分頻因子1);CKDIV8為0,CLKPS将設定為0011(分頻因子8)。所選的時鐘源超出所允許的最大頻率,一定要程式設計這個熔絲位。CKDIV8設定了也可以更改CLKPS,若所選時鐘源超出所允許的最大頻率,通過程式配置必須選擇合适的分頻因子。
2、第六位CKOUT:CKOUT為0,系統時鐘可以從CLKO引腳輸出。這個模式用于晶片時鐘驅動其他系統。晶片複位狀态下時鐘也會輸出,CKOUT為0,I/O口(PB0)的正常操作被切換為時鐘輸出。當CLKO作為時鐘輸出時,系統時鐘可以為包括RC振蕩器在内的所有時鐘源。如果系統時鐘預分頻,輸出的是被分頻後的系統時鐘頻率。
3、低六位一塊寫,SUT1..0:選擇啟動時間,CKSEL3..0:選擇時鐘源
時鐘源選擇
器件時鐘選擇 | CKSEL3..0 |
低功率晶振 | 1111 - 1000 |
滿振幅晶振 | 0111 - 0110 |
低頻晶振 | 0101 - 0100 |
内部128K RC振蕩器 | 0011 |
校準的内部RC振蕩器 | 0010 |
外部時鐘 | 0000 |
保留 | 0001 |
- 低功率晶振工作模式 (後邊好多表格,直接抄過來,沒有帶截圖)
頻率範圍(MHz) | 電容C1、C2推薦範圍(pF) | CKSEL3..1 |
0.4 - 0.9 | -- | 100 |
0.9 - 3.0 | 12 - 22 | 101 |
3.0 - 8.0 | 12 - 22 | 110 |
8.0 - 16.0 | 12 - 22 | 111 |
低頻率晶振時鐘選項對應的啟動時間
振蕩源/電源狀态 | 掉電和節電模式下的啟動時間 | 複位時的額外延時(VCC=5.0V) | CKSEL0 | SUT1..0 |
陶瓷諧振器,電源快速上升 | 258CK | 14CK + 4.1ms | 00 | |
陶瓷諧振器,電源緩慢上升 | 258CK | 14CK + 65ms | 01 | |
陶瓷諧振器,BOD使能 | 1KCK | 14CK | 10 | |
陶瓷諧振器,電源快速上升 | 1KCK | 14CK + 4.1ms | 11 | |
陶瓷諧振器,電源緩慢上升 | 1KCK | 14CK + 65ms | 1 | 00 |
石英振蕩器,BOD使能 | 16KCK | 14CK | 1 | 01 |
石英振蕩器,電源快速上升 | 16KCK | 14CK + 4.1ms | 1 | 10 |
石英振蕩器,電源緩慢上升 | 16KCK | 14Ck + 65ms | 1 | 11 |
- 滿振幅晶振工作模式
頻率範圍(MHz) | 電容C1、C2推薦範圍(pF) | CKSEL3..1 |
0.4 - 20 | 12 - 22 | 011 |
滿振幅晶振時鐘選項對應的啟動時間
振蕩源/電源狀态 | 掉電和節電模式下的啟動時間 | 複位時的額外延時(VCC=5.0V) | CKSEL0 | SUT1..0 |
陶瓷諧振器,電源快速上升 | 258CK | 14CK + 4.1ms | 00 | |
陶瓷諧振器,電源緩慢上升 | 258CK | 14CK + 65ms | 01 | |
陶瓷諧振器,BOD使能 | 1KCK | 14CK | 10 | |
陶瓷諧振器,電源快速上升 | 1KCK | 14CK + 4.1ms | 11 | |
陶瓷諧振器,電源緩慢上升 | 1KCK | 14CK + 65ms | 1 | 00 |
石英振蕩器,BOD使能 | 16KCK | 14CK | 1 | 01 |
石英振蕩器,電源快速上升 | 16KCK | 14CK + 4.1ms | 1 | 10 |
石英振蕩器,電源緩慢上升 | 16KCK | 14Ck + 65ms | 1 | 11 |
- 低頻晶振:可以使用外部32.768kHz表用振蕩器作為低頻時鐘源。
低頻晶振時鐘選項對應的啟動時間
電源狀态 | 掉電和節電模式下的啟動時間 | 複位時的額外延時(VCC=5.0V) | CKSEL0 | SUT1..0 |
BOD使能 | 1KCK | 14CK | 00 | |
電源快速上升 | 1KCK | 14CK + 4.1ms | 01 | |
電源緩慢上升 | 1KCK | 14CK + 65ms | 10 | |
保留 | 11 | |||
BOD使能 | 32KCK | 14CK | 1 | 00 |
電源快速上升 | 32KCK | 14CK + 4.1ms | 1 | 01 |
電源緩慢上升 | 32KCK | 14CK + 65ms | 1 | 10 |
保留 | 1 | 11 |
- 校準的内部RC振蕩器工作模式
頻率範圍(MHz) | CKSEL3..0 |
7.3 - 8.1 | 0010 |
校準的内部RC振蕩器對應的啟動時間
電源狀态 | 掉電和節電模式下的啟動時間 | 複位時的額外延時(VCC=5.0V) | SUT1..0 |
BOD使能 | 6CK | 14CK | 00 |
電源快速上升 | 6CK | 14CK + 4.1ms | 01 |
電源緩慢上升 | 6CK | 14CK + 65ms | 10 |
保留 | 11 |
5)128kHz内部振蕩器工作模式
頻率範圍 | CKSEL3..0 |
128kHz | 0011 |
128kHz内部振蕩器對應的啟動時間
電源狀态 | 掉電和節電模式下的啟動時間 | 複位時的額外延時(VCC=5.0V) | SUT1..0 |
BOD使能 | 6CK | 14CK | 00 |
電源快速上升 | 6CK | 14CK + 4.1ms | 01 |
電源緩慢上升 | 6CK | 14CK + 65ms | 10 |
保留 | 11 |
6)石英振蕩器時鐘頻率
頻率範圍 | CKSEL3..0 |
0 - 20MHz | 0000 |
外部時鐘對應的啟動時間
電源狀态 | 掉電和節電模式下的啟動時間 | 複位時的額外延時(VCC=5.0V) | SUT1..0 |
BOD使能 | 6CK | 14CK | 00 |
電源快速上升 | 6CK | 14CK + 4.1ms | 01 |
電源緩慢上升 | 6CK | 14CK + 65ms | 10 |
保留 | 11 |
二、熔絲高位
高熔絲位 | 位号 | 描述 | 預設值 |
RSTDISBL | 7 | 外部複位禁用 | 1 |
DWEN | 6 | 調試線使能 | 1 |
SPIEN | 5 | 使能串行程式和資料下載下傳 | 0(SPI程式設計使能) |
WDTON | 4 | 看門狗時間一直啟用 | 1) |
EESAVE | 3 | 執行晶片擦除時EEPROM内容保留 | 1,EEPROM内容不保留 |
BODLEVEL2 | 2 | BOD觸發電平 | 1 |
BODLEVEL1 | 1 | 1 | |
BODLEVEL0 | 1 |
- 第七位RSTDISBL:設定PC6引腳的功能,RSTDISBL為0時,該引腳作為普通的I/O引腳,晶片内部的上電複位和欠壓複位作為系統的複位源。RSTDISBL為1時,複位電路将連接配接到該引腳,該引腳不能作為I/O使用。
- 第六位DWEN:如果通過熔絲位DWEN使能了片上調試系統,晶片進入休眠狀态時,主時鐘保持運作,是以總是消耗功率。在深度休眠模式,這個功耗将會在整個功耗中占很大比重。
當debugWIRE使能DWEN熔絲位為0并且鎖定位為1,目标裝置中的debugWIRE系統被激活。RESET端口引腳配置為上拉使能的線與(開漏)雙向I/O,成為目标與仿真器間的聯系通路。
一個程式DWEN使能使一些時鐘系統在所有休眠模式下都運作。這将增加器件在休眠時的功耗。是以在不使用debugWIRE時,DWEN熔絲位應該禁用(為1)。
3、第五位SPIEN:設定為0時,SPI使能。
在串行程式設計模式下SPIEN熔絲位不可通路。
4、第四位WDTON:如果WDTON為0,看門狗一直開啟,将迫使看門狗定時器進入系統複位模式。該熔絲位為0使系統複位模式位(WDE)和中斷模式位(WDIE)分别鎖定為1和0。為了進一步確定程式安全性,對看門狗設定的更改必須遵循定時順序。清除WDE和更改逾時配置的順序如下:
- 在同一個指令内對WDCE和WDE寫"1“。雖然WDE總是為置位狀态,也必須寫"1“以啟動時序。
- 在接下來的4個時鐘周期中必須在同一指令内對WDCE位寫”0”和為WDE和WDP寫合适的資料。
看門狗定時器配置
WDTON | WDE | WDIE | 狀态 | 逾時動作 |
1 | 停止 | 無 | ||
1 | 1 | 中斷模式 | 中斷 | |
1 | 1 | 系統複位模式 | 複位 | |
1 | 1 | 1 | 中斷和系統複位模式 | 中斷,然後進入系統複位模式 |
x | x | 系統複位模式 | 複位 |
- 第三位EESAVE:如果EESAVE 熔絲位為0,那麼在晶片擦除時EEPRPOM 不受影響。
當向EEPROM寫資料0xFF時可以跳過(高效程式設計),EESAVE熔絲位為0狀态下不能跳過。
- 低三位BODLEVEL2..0:BOD觸發電平
VBOT 可能低于某些器件的最小标稱工作電壓。對于有這種情形的器件,在産品測試時将做VCC = VBOT 的實驗。這保證了在晶片工作電壓VCC 降至微處理器已經無法正常工作之前,發生掉電複位。ATmega48V/88V/168V用BODLEVEL = 110與BODLEVEL = 101做檢測, ATmega48/88/168用BODLEVEL = 101與BODLEVEL = 100做檢測。
三、mega88/168的熔絲位擴充位
熔絲位擴充位 | 位号 | 描述 | 預設值 |
-- | 7 | -- | 1 |
-- | 6 | -- | 1 |
-- | 5 | -- | 1 |
-- | 4 | -- | 1 |
-- | 3 | -- | 1 |
BOOTSZ1 | 2 | 選擇boot區大小 | |
BOOTSZ0 | 1 | 選擇boot區大小 | |
BOOTRST | 選擇複位向量 | 1 |
- 第二位、第一位:BOOTSZ1 BOOTSZ0 選擇boot區大小
BOOTSZ1 | BOOTSZ0 | Boot區大小 | 頁數 | 應用Flash區 | Boot Loader Flash區 | 應用區結束位址 | Boot複位位址(Boot Loader起始位址) |
1 | 1 | 128字 | 4 | 0x000 - 0xF7F | 0xF80 - 0xFFF | 0xF7F | 0xF80 |
1 | 256字 | 8 | 0x000 - 0xEFF | 0xF00 - 0xFFF | 0xEFF | 0xF00 | |
1 | 512字 | 16 | 0x000 - 0xDFF | 0xE00 - 0xFFF | 0xDFF | 0xE00 | |
1024字 | 32 | 0x000 - 0xBFF | 0xC00 - 0xFFF | 0xBFF | 0xC00 |
- 第零位BOOTRST:決定複位向量
在ATmega88 與ATmega168 中,複位向量由BOOTRST 熔絲位決定,中斷向量的起始位址由MCUCR 寄存器的IVSEL決定。
ATmega88複位和中斷向量位置的确定
BOOTRST | IVSEL | 複位位址 | 中斷起始位址 |
1 | 0x000 | 0x001 | |
1 | 1 | 0x000 | Boot區複位位址 + 0x001 |
Boot區複位位址 | 0x001 | ||
1 | Boot區複位位址 | Boot區複位位址 + 0x001 |
四、加密位
加密位 | 位号 | 描述 | 預設值 |
-- | 7 | -- | 1 |
-- | 6 | -- | 1 |
BLB12 | 5 | Boot鎖定位 | 1 |
BLB11 | 4 | Boot鎖定位 | 1 |
BLB02 | 3 | Boot鎖定位 | 1 |
BLB01 | 2 | Boot鎖定位 | 1 |
LB2 | 1 | 鎖定位 | 1 |
LB1 | 鎖定位 | 1 |
鎖定位保護模式
記憶體鎖定位 | 保護類型 | ||
LB模式 | LB2 | LB1 | |
1 | 1 | 1 | 沒有記憶體鎖定特征使能 |
2 | 1 | 在并行和串行程式設計模式中Flash和EEPROM的進一步程式設計被禁止,熔絲位被鎖定。 | |
3 | 在并行和串行程式設計模式中Flash和EEPROM的進一步程式設計及驗證被禁止,鎖定位和熔絲位被鎖定。 |
ATmega88/168的鎖定位保護模式
BLB0模式 | BLB02 | BLB01 | |
1 | 1 | 1 | SPM和LPM對應用區的通路沒有限制 |
2 | 1 | 不允許SPM對應用區進行寫操作 | |
3 | 不允許SPM對應用區進行寫操作,也不允許運作于boot loader區的LPM從應用區讀取資料。若中斷向量位于boot loader區,那麼執行應用區代碼時中斷是禁止的。 | ||
4 | 1 | 不允許運作于boot loader區的LPM指令從應用區讀取資料。若中斷向量位于boot loader區,那麼執行應用區代碼時中斷是禁止的。 | |
BLB1模式 | BLB12 | BLB11 | |
1 | 1 | 1 | SPM和LPM對boot loader區的通路沒有限制 |
2 | 1 | 不允許SPM對boot loader區進行寫操作 | |
3 | 不允許SPM對boot loader區進行寫操作,也不允許運作于應用區的LPM指令從boot loader區讀取資料。若中斷向量位于應用區,那麼執行boot loader區代碼時中斷是禁止的。 | ||
4 | 1 | 不允許運作于應用區的LPM 指令從boot loader區讀取資料。若中斷向量位于應用區,那麼執行boot loader區代碼時中斷是禁止的。 |