新聞中心

AVR熔絲位的配置

作者: 時(shí)間:2016-11-17 來(lái)源:網(wǎng)絡(luò) 收藏
這篇文章具有一定價(jià)值,留作下次配置時(shí)參考之用。
對(duì)AVR熔絲位的配置是比較細(xì)致的工作,用戶(hù)往往忽視其重要性,或感到不易掌握。下面給出對(duì)AVR熔絲位的配置操作時(shí)的一些要點(diǎn)和需要注意的相關(guān)事項(xiàng)。有關(guān)ATmega128熔絲位的具體定義和功能請(qǐng)查看本書(shū)相關(guān)章節(jié),在附錄中將給出一個(gè)完整的匯總表。
(1)在AVR的器件手冊(cè)中,對(duì)熔絲位使用已編程(Programmed)和未編程(Unprogrammed)定義熔絲位的狀態(tài),“Unprogrammed”表示熔絲狀態(tài)為“1”(禁止);“Programmed”表示熔絲狀態(tài)為“0”(允許)。因此,配置熔絲位的過(guò)程實(shí)際上是“配置熔絲位成為未編程狀態(tài)“1”或成為已編程狀態(tài)“0””。
(2)在使用通過(guò)選擇打鉤“√”方式確定熔絲位狀態(tài)值的編程工具軟件時(shí),請(qǐng)首先仔細(xì)閱讀軟件的使用說(shuō)明,弄清楚“√”表示設(shè)置熔絲位狀態(tài)為“0”還是為“1”。
(3)使用CVAVR中的編程下載程序時(shí)應(yīng)特別注意,由于CVAVR編程下載界面初始打開(kāi)時(shí),大部分熔絲位的初始狀態(tài)定義為“1”,因此不要使用其編程菜單選項(xiàng)中的“all”選項(xiàng)。此時(shí)的“all”選項(xiàng)會(huì)以熔絲位的初始狀態(tài)定義來(lái)配置芯片的熔絲位,而實(shí)際上其往往并不是用戶(hù)所需要的配置結(jié)果。如果要使用“all”選項(xiàng),應(yīng)先使用“read->fuse bits”讀取芯片中熔絲位實(shí)際狀態(tài)后,再使用“all” 選項(xiàng)。
(4)新的AVR芯片在使用前,應(yīng)首先查看它熔絲位的配置情況,再根據(jù)實(shí)際需要,進(jìn)行熔絲位的配置,并將各個(gè)熔絲位的狀態(tài)記錄備案。
(5)AVR芯片加密以后僅僅是不能讀取芯片內(nèi)部Flash和E2PROM中的數(shù)據(jù),熔絲位的狀態(tài)仍然可以讀取但不能修改配置。芯片擦除命令是將Flash和E2PROM中的數(shù)據(jù)清除,并同時(shí)將兩位鎖定位狀態(tài)配置成“11”,處于無(wú)鎖定狀態(tài)。但芯片擦除命令并不改變其它熔絲位的狀態(tài)。
(6)正確的操作程序是:在芯片無(wú)鎖定狀態(tài)下,下載運(yùn)行代碼和數(shù)據(jù),配置相關(guān)的熔絲位,最后配置芯片的鎖定位。芯片被鎖定后,如果發(fā)現(xiàn)熔絲位配置不對(duì),必須使用芯片擦除命令,清除芯片中的數(shù)據(jù),并解除鎖定。然后重新下載運(yùn)行代碼和數(shù)據(jù),修改配置相關(guān)的熔絲位,最后再次配置芯片的鎖定位。
(7)使用ISP串行方式下載編程時(shí),應(yīng)配置SPIEN熔絲位為“0”。芯片出廠時(shí)SPIEN位的狀態(tài)默認(rèn)為“0”,表示允許ISP串行方式下載數(shù)據(jù)。只有該位處于編程狀態(tài)“0”,才可以通過(guò)AVR的SPI口進(jìn)行ISP下載,如果該位被配置為未編程“1”后,ISP串行方式下載數(shù)據(jù)立即被禁止,此時(shí)只能通過(guò)并行方式或JTAG編程方式才能將SPIEN的狀態(tài)重新設(shè)置為“0”,開(kāi)放ISP。通常情況下,應(yīng)保持SPIEN的狀態(tài)為“0”,允許ISP編程不會(huì)影響其引腳的I/O功能,只要在硬件電路設(shè)計(jì)時(shí),注意ISP接口與其并接的器件進(jìn)行必要的隔離,如使用串接電阻或斷路跳線等。
(8)當(dāng)你的系統(tǒng)中,不使用JTAG接口下載編程或?qū)崟r(shí)在線仿真調(diào)試,且JTAG接口的引腳需要作為I/O口使用時(shí),必須設(shè)置熔絲位JTAGEN的狀態(tài)為“1”。芯片出廠時(shí)JTAGEN的狀態(tài)默認(rèn)為“0”,表示允許JTAG接口,JTAG的外部引腳不能作為I/O口使用。當(dāng)JTAGEN的狀態(tài)設(shè)置為“1”后,JTAG接口立即被禁止,此時(shí)只能通過(guò)并行方式或ISP編程方式才能將JTAG重新設(shè)置為“0”,開(kāi)放JTAG。
(9)一般情況下不要設(shè)置熔絲位把RESET引腳定義成I/O使用(如設(shè)置ATmega8熔絲位RSTDISBL的狀態(tài)為“0”),這樣會(huì)造成ISP的下載編程無(wú)法進(jìn)行,因?yàn)樵谶M(jìn)入ISP方式編程時(shí)前,需要將RESET引腳拉低,使芯片先進(jìn)入復(fù)位狀態(tài)。
(10)使用內(nèi)部有RC振蕩器的AVR芯片時(shí),要特別注意熔絲位CKSEL的配置。一般情況下,芯片出廠時(shí)CKSEL位的狀態(tài)默認(rèn)為使用內(nèi)部1MHz的RC振蕩器作為系統(tǒng)的時(shí)鐘源。如果你使用了外部振蕩器作為系統(tǒng)的時(shí)鐘源時(shí),不要忘記首先正確配置CKSEL熔絲位,否則你整個(gè)系統(tǒng)的定時(shí)都會(huì)出現(xiàn)問(wèn)題。而當(dāng)在你的設(shè)計(jì)中沒(méi)有使用外部振蕩器(或某鐘特定的振蕩源)作為系統(tǒng)的時(shí)鐘源時(shí),千萬(wàn)不要誤操作或錯(cuò)誤的把CKSEL熔絲位配置成使用外部振蕩器(或其它不同類(lèi)型的振蕩源)。一旦這種情況產(chǎn)生,使用ISP編程方式則無(wú)法對(duì)芯片操作了(因?yàn)镮SP方式需要芯片的系統(tǒng)時(shí)鐘工作并產(chǎn)生定時(shí)控制信號(hào)),芯片看上去“壞了”。此時(shí)只有使用取下芯片使用并行編程方式,或使用JTAG方式(如果JTAG為允許時(shí)且目標(biāo)板上留有JTAG接口)來(lái)解救了。另一種解救的方式是:嘗試在芯片的晶體引腳上臨時(shí)人為的疊加上不同類(lèi)型的振蕩時(shí)鐘信號(hào),一旦ISP可以對(duì)芯片操作,立即將CKSEL配置成使用內(nèi)部1MHz的RC振蕩器作為系統(tǒng)的時(shí)鐘源,然后再根據(jù)實(shí)際情況重新正確配置CKSEL。
(11)使用支持IAP的AVR芯片時(shí),如果你不使用BOOTLOADER功能,注意不要把熔絲位BOOTRST設(shè)置為“0”狀態(tài),它會(huì)使芯片在上電時(shí)不是從Flash的0x0000處開(kāi)始執(zhí)行程序。芯片出廠時(shí)BOOTRST位的狀態(tài)默認(rèn)為“1”。關(guān)于BOOTRST的配置以及BOOTLOADER程序的設(shè)計(jì)與IAP的應(yīng)用請(qǐng)參考本章相關(guān)內(nèi)容。
二、mega8熔絲位:1:未編程(不選中)0:編程(選中)
***************************************
熔絲位 說(shuō)明 缺省設(shè)置
***************************************
RSTDISBL: 復(fù)位或I/O功能選擇 1 1:復(fù)位功能;0:I/O功能(PC6)
WDTON: 看門(mén)狗開(kāi)關(guān) 1 1:看門(mén)狗打開(kāi)(通過(guò)WDTCR允許);0:看門(mén)狗禁止
SPIEN: SPI下載允許 0 1:SPI下載禁止;0:SPI下載允許(注:當(dāng)使用SPI編程時(shí),該項(xiàng)不可用)
EEAVE: 燒錄時(shí)EEPROM數(shù)據(jù)保留 1 1:不保留;0:保留
BODEN: BOD功能控制 1 1:BOD功能禁止;0:BOD功能允許
BODLEVEL: BOD電平選擇 1 1:2.7V電平;0:4.0V電平
BOOTRST: 復(fù)位入口選擇 1 1:程序從0x0000地址開(kāi)始執(zhí)行;0:程序從引導(dǎo)區(qū)確定的入口地址開(kāi)始執(zhí)行
***************************************
BOOTSZ1/0: 引導(dǎo)程序大小及入口 00
00:1024Word/0xc00;
01:512Word/0xe00;
10:256Word/0xf00;
11:128Word/0xf80
***************************************
BLB02/01: 程序區(qū)指令位選擇 11
11:SPM和LPM指令都允許執(zhí)行
10:SPM指令禁止寫(xiě)程序區(qū)
01:引導(dǎo)區(qū)LPM指令禁止讀取程序區(qū)內(nèi)容;如果中斷向量定義在引導(dǎo)區(qū),則禁止該中斷在程序區(qū)執(zhí)行。
00:SPM指令禁止寫(xiě)程序區(qū);引導(dǎo)區(qū)LPM指令禁止讀取程序區(qū)內(nèi)容;如果中斷向量定義在引導(dǎo)區(qū),則禁止該中斷在程序區(qū)執(zhí)行。
***************************************
BLB12/11: 引導(dǎo)區(qū)指令位選擇 11
11:SPM和LPM指令都允許執(zhí)行
10:SPM指令禁止寫(xiě)引導(dǎo)區(qū)
01:程序區(qū)LPM指令禁止讀取引導(dǎo)區(qū)內(nèi)容;如果中斷向量定義在程序區(qū),則禁止該中斷在引導(dǎo)區(qū)執(zhí)行。
00:SPM指令禁止寫(xiě)引導(dǎo)區(qū);程序區(qū)LPM指令禁止讀取引導(dǎo)區(qū)內(nèi)容;如果中斷向量定義在程序區(qū),則禁止該中斷在引導(dǎo)區(qū)執(zhí)行。
***************************************
LB2/1: 程序區(qū)加密位選擇 11
11:未加密
10:程序和EEPROM編程功能禁止,熔絲位鎖定
00:程序和EEPROM編程及校驗(yàn)功能禁止,熔絲位鎖定
(注:先編程其他熔絲位,再編程加密位)
***************************************
CKSEL3/0: 時(shí)鐘源選擇 0001
CKOPT: 晶振選擇 1
SUT1/0: 復(fù)位啟動(dòng)時(shí)間選擇 10
***************************************
CKSEL3/0=0000:外部時(shí)鐘,CKOPT=0:允許芯片內(nèi)部XTAL1管腳對(duì)GND接一個(gè)36PF電容;CKOPT=1:禁止該電容
----------------
CKSEL3/0=0001-0100:已經(jīng)校準(zhǔn)的內(nèi)部RC振蕩,CKOPT總為1
0001:1.0M
0010:2.0M
0011:4.0M
0100:8.0M
----------------
CKSEL3/0=0101-1000:外部RC振蕩,CKOPT=0:允許芯片內(nèi)部XTAL1管腳對(duì)GND接一個(gè)36PF電容;CKOPT=1:禁止該電容
0101:<0.9M
0110:0.9-3.0M
0111:3.0-8.0M
1000:8.0-12.0M
----------------
CKSEL3/0=1001:外部低頻晶振,CKOPT=0:允許芯片內(nèi)部XTAL1/XTAL2管腳對(duì)GND各接一個(gè)36PF電容;CKOPT=1:禁止該電容
----------------
CKSEL3/0=1010-1111:外部晶振,陶瓷振蕩子,CKOPT=0:高幅度振蕩輸出;CKOPT=1:低幅度振蕩輸出
101X:0.4-0.9M
110X:0.9-3.0M
111X:3.0-8.0M
***************************************
SUT1/0: 復(fù)位啟動(dòng)時(shí)間選擇
當(dāng)選擇不同晶振時(shí),SUT有所不同。
三、時(shí)鐘選擇一覽表
時(shí)鐘源 啟動(dòng)延時(shí) 熔絲
外部時(shí)鐘 6 CK + 0 ms CKSEL="0000" SUT="00"
外部時(shí)鐘 6 CK + 4.1 ms CKSEL="0000" SUT="01"
外部時(shí)鐘 6 CK + 65 ms CKSEL="0000" SUT="10"
內(nèi)部RC振蕩1MHZ 6 CK + 0 ms CKSEL="0001" SUT="00"
內(nèi)部RC振蕩1MHZ 6 CK + 4.1 ms CKSEL="0001" SUT="01"
內(nèi)部RC振蕩1MHZ 6 CK + 65 ms CKSEL="0001" SUT="10"
內(nèi)部RC振蕩2MHZ 6 CK + 0 ms CKSEL="0010" SUT="00"
內(nèi)部RC振蕩2MHZ 6 CK + 4.1 ms CKSEL="0010" SUT="01"
內(nèi)部RC振蕩2MHZ 6 CK + 65 ms CKSEL="0010" SUT="10"
內(nèi)部RC振蕩4MHZ 6 CK + 0 ms CKSEL="0011" SUT="00"
內(nèi)部RC振蕩4MHZ 6 CK + 4.1 ms CKSEL="0011" SUT="01"
內(nèi)部RC振蕩4MHZ 6 CK + 65 ms CKSEL="0011" SUT="10"
內(nèi)部RC振蕩8MHZ 6 CK + 0 ms CKSEL="0100" SUT="00"
內(nèi)部RC振蕩8MHZ 6 CK + 4.1 ms CKSEL="0100" SUT="01"
內(nèi)部RC振蕩8MHZ 6 CK + 65 ms CKSEL="0100" SUT="10"
外部RC振蕩≤0.9MHZ 18 CK + 0 ms CKSEL="0101" SUT="00"
外部RC振蕩≤0.9MHZ 18 CK + 4.1 ms CKSEL="0101" SUT="01"
外部RC振蕩≤0.9MHZ 18 CK + 65 ms CKSEL="0101" SUT="10"
外部RC振蕩≤0.9MHZ 6 CK + 4.1 ms CKSEL="0101" SUT="11"
外部RC振蕩0.9-3.0MHZ 18 CK + 0 ms CKSEL="0110" SUT="00"
外部RC振蕩0.9-3.0MHZ 18 CK + 4.1 ms CKSEL="0110" SUT="01"
外部RC振蕩0.9-3.0MHZ 18 CK + 65 ms CKSEL="0110" SUT="10"
外部RC振蕩0.9-3.0MHZ 6 CK + 4.1 ms CKSEL="0110" SUT="11"
外部RC振蕩3.0-8.0MHZ 18 CK + 0 ms CKSEL="0111" SUT="00"
外部RC振蕩3.0-8.0MHZ 18 CK + 4.1 ms CKSEL="0111" SUT="01"
外部RC振蕩3.0-8.0MHZ 18 CK + 65 ms CKSEL="0111" SUT="10"
外部RC振蕩3.0-8.0MHZ 6 CK + 4.1 ms CKSEL="0111" SUT="11"
外部RC振蕩8.0-12.0MHZ 18 CK + 0 ms CKSEL="1000" SUT="00"
外部RC振蕩8.0-12.0MHZ 18 CK + 4.1 ms CKSEL="1000" SUT="01"
外部RC振蕩8.0-12.0MHZ 18 CK + 65 ms CKSEL="1000" SUT="10"
外部RC振蕩8.0-12.0MHZ 6 CK + 4.1 ms CKSEL="1000" SUT="11"
低頻晶振(32.768KHZ) 1K CK + 4.1 ms CKSEL="1001" SUT="00"
低頻晶振(32.768KHZ) 1K CK + 65 ms CKSEL="1001" SUT="01"
低頻晶振(32.768KHZ) 32K CK + 65 ms CKSEL="1001" SUT="10"
低頻石英/陶瓷振蕩器(0.4-0.9M) 258 CK + 4.1 ms CKSEL="1010" SUT="00"
低石英/陶瓷振蕩器(0.4-0.9M) 258 CK + 65 ms CKSEL="1010" SUT="01"
低石英/陶瓷振蕩器(0.4-0.9M) 1K CK + 0 ms CKSEL="1010" SUT="10"
低石英/陶瓷振蕩器(0.4-0.9M) 1K CK + 4.1 ms CKSEL="1010" SUT="11"
低石英/陶瓷振蕩器(0.4-0.9M) 1K CK + 65 ms CKSEL="1011" SUT="00"
低石英/陶瓷振蕩器(0.4-0.9M) 16K CK + 0 ms CKSEL="1011" SUT="01"
低石英/陶瓷振蕩器(0.4-0.9M) 16K CK + 4.1ms CKSEL="1011" SUT="10"
低石英/陶瓷振蕩器(0.4-0.9M) 16K CK + 65ms CKSEL="1011" SUT="11"
中石英/陶瓷振蕩器(0.9-3.0M) 258 CK + 4.1 ms CKSEL="1100" SUT="00"
中石英/陶瓷振蕩器(0.9-3.0M) 258 CK + 65 ms CKSEL="1100" SUT="01"
中石英/陶瓷振蕩器(0.9-3.0M) 1K CK + 0 ms CKSEL="1100" SUT="10"
中石英/陶這篇文章具有一定價(jià)值,留作下次配置時(shí)參考之用。
對(duì)AVR熔絲位的配置是比較細(xì)致的工作,用戶(hù)往往忽視其重要性,或感到不易掌握。下面給出對(duì)AVR熔絲位的配置操作時(shí)的一些要點(diǎn)和需要注意的相關(guān)事項(xiàng)。有關(guān)ATmega128熔絲位的具體定義和功能請(qǐng)查看本書(shū)相關(guān)章節(jié),在附錄中將給出一個(gè)完整的匯總表。
(1)在AVR的器件手冊(cè)中,對(duì)熔絲位使用已編程(Programmed)和未編程(Unprogrammed)定義熔絲位的狀態(tài),“Unprogrammed”表示熔絲狀態(tài)為“1”(禁止);“Programmed”表示熔絲狀態(tài)為“0”(允許)。因此,配置熔絲位的過(guò)程實(shí)際上是“配置熔絲位成為未編程狀態(tài)“1”或成為已編程狀態(tài)“0””。
(2)在使用通過(guò)選擇打鉤“√”方式確定熔絲位狀態(tài)值的編程工具軟件時(shí),請(qǐng)首先仔細(xì)閱讀軟件的使用說(shuō)明,弄清楚“√”表示設(shè)置熔絲位狀態(tài)為“0”還是為“1”。
(3)使用CVAVR中的編程下載程序時(shí)應(yīng)特別注意,由于CVAVR編程下載界面初始打開(kāi)時(shí),大部分熔絲位的初始狀態(tài)定義為“1”,因此不要使用其編程菜單選項(xiàng)中的“all”選項(xiàng)。此時(shí)的“all”選項(xiàng)會(huì)以熔絲位的初始狀態(tài)定義來(lái)配置芯片的熔絲位,而實(shí)際上其往往并不是用戶(hù)所需要的配置結(jié)果。如果要使用“all”選項(xiàng),應(yīng)先使用“read->fuse bits”讀取芯片中熔絲位實(shí)際狀態(tài)后,再使用“all” 選項(xiàng)。
(4)新的AVR芯片在使用前,應(yīng)首先查看它熔絲位的配置情況,再根據(jù)實(shí)際需要,進(jìn)行熔絲位的配置,并將各個(gè)熔絲位的狀態(tài)記錄備案。
(5)AVR芯片加密以后僅僅是不能讀取芯片內(nèi)部Flash和E2PROM中的數(shù)據(jù),熔絲位的狀態(tài)仍然可以讀取但不能修改配置。芯片擦除命令是將Flash和E2PROM中的數(shù)據(jù)清除,并同時(shí)將兩位鎖定位狀態(tài)配置成“11”,處于無(wú)鎖定狀態(tài)。但芯片擦除命令并不改變其它熔絲位的狀態(tài)。
(6)正確的操作程序是:在芯片無(wú)鎖定狀態(tài)下,下載運(yùn)行代碼和數(shù)據(jù),配置相關(guān)的熔絲位,最后配置芯片的鎖定位。芯片被鎖定后,如果發(fā)現(xiàn)熔絲位配置不對(duì),必須使用芯片擦除命令,清除芯片中的數(shù)據(jù),并解除鎖定。然后重新下載運(yùn)行代碼和數(shù)據(jù),修改配置相關(guān)的熔絲位,最后再次配置芯片的鎖定位。
(7)使用ISP串行方式下載編程時(shí),應(yīng)配置SPIEN熔絲位為“0”。芯片出廠時(shí)SPIEN位的狀態(tài)默認(rèn)為“0”,表示允許ISP串行方式下載數(shù)據(jù)。只有該位處于編程狀態(tài)“0”,才可以通過(guò)AVR的SPI口進(jìn)行ISP下載,如果該位被配置為未編程“1”后,ISP串行方式下載數(shù)據(jù)立即被禁止,此時(shí)只能通過(guò)并行方式或JTAG編程方式才能將SPIEN的狀態(tài)重新設(shè)置為“0”,開(kāi)放ISP。通常情況下,應(yīng)保持SPIEN的狀態(tài)為“0”,允許ISP編程不會(huì)影響其引腳的I/O功能,只要在硬件電路設(shè)計(jì)時(shí),注意ISP接口與其并接的器件進(jìn)行必要的隔離,如使用串接電阻或斷路跳線等。
(8)當(dāng)你的系統(tǒng)中,不使用JTAG接口下載編程或?qū)崟r(shí)在線仿真調(diào)試,且JTAG接口的引腳需要作為I/O口使用時(shí),必須設(shè)置熔絲位JTAGEN的狀態(tài)為“1”。芯片出廠時(shí)JTAGEN的狀態(tài)默認(rèn)為“0”,表示允許JTAG接口,JTAG的外部引腳不能作為I/O口使用。當(dāng)JTAGEN的狀態(tài)設(shè)置為“1”后,JTAG接口立即被禁止,此時(shí)只能通過(guò)并行方式或ISP編程方式才能將JTAG重新設(shè)置為“0”,開(kāi)放JTAG。
(9)一般情況下不要設(shè)置熔絲位把RESET引腳定義成I/O使用(如設(shè)置ATmega8熔絲位RSTDISBL的狀態(tài)為“0”),這樣會(huì)造成ISP的下載編程無(wú)法進(jìn)行,因?yàn)樵谶M(jìn)入ISP方式編程時(shí)前,需要將RESET引腳拉低,使芯片先進(jìn)入復(fù)位狀態(tài)。
(10)使用內(nèi)部有RC振蕩器的AVR芯片時(shí),要特別注意熔絲位CKSEL的配置。一般情況下,芯片出廠時(shí)CKSEL位的狀態(tài)默認(rèn)為使用內(nèi)部1MHz的RC振蕩器作為系統(tǒng)的時(shí)鐘源。如果你使用了外部振蕩器作為系統(tǒng)的時(shí)鐘源時(shí),不要忘記首先正確配置CKSEL熔絲位,否則你整個(gè)系統(tǒng)的定時(shí)都會(huì)出現(xiàn)問(wèn)題。而當(dāng)在你的設(shè)計(jì)中沒(méi)有使用外部振蕩器(或某鐘特定的振蕩源)作為系統(tǒng)的時(shí)鐘源時(shí),千萬(wàn)不要誤操作或錯(cuò)誤的把CKSEL熔絲位配置成使用外部振蕩器(或其它不同類(lèi)型的振蕩源)。一旦這種情況產(chǎn)生,使用ISP編程方式則無(wú)法對(duì)芯片操作了(因?yàn)镮SP方式需要芯片的系統(tǒng)時(shí)鐘工作并產(chǎn)生定時(shí)控制信號(hào)),芯片看上去“壞了”。此時(shí)只有使用取下芯片使用并行編程方式,或使用JTAG方式(如果JTAG為允許時(shí)且目標(biāo)板上留有JTAG接口)來(lái)解救了。另一種解救的方式是:嘗試在芯片的晶體引腳上臨時(shí)人為的疊加上不同類(lèi)型的振蕩時(shí)鐘信號(hào),一旦ISP可以對(duì)芯片操作,立即將CKSEL配置成使用內(nèi)部1MHz的RC振蕩器作為系統(tǒng)的時(shí)鐘源,然后再根據(jù)實(shí)際情況重新正確配置CKSEL。
(11)使用支持IAP的AVR芯片時(shí),如果你不使用BOOTLOADER功能,注意不要把熔絲位BOOTRST設(shè)置為“0”狀態(tài),它會(huì)使芯片在上電時(shí)不是從Flash的0x0000處開(kāi)始執(zhí)行程序。芯片出廠時(shí)BOOTRST位的狀態(tài)默認(rèn)為“1”。關(guān)于BOOTRST的配置以及BOOTLOADER程序的設(shè)計(jì)與IAP的應(yīng)用請(qǐng)參考本章相關(guān)內(nèi)容。
二、mega8熔絲位:1:未編程(不選中)0:編程(選中)
***************************************
熔絲位 說(shuō)明 缺省設(shè)置
***************************************
RSTDISBL: 復(fù)位或I/O功能選擇 1 1:復(fù)位功能;0:I/O功能(PC6)
WDTON: 看門(mén)狗開(kāi)關(guān) 1 1:看門(mén)狗打開(kāi)(通過(guò)WDTCR允許);0:看門(mén)狗禁止
SPIEN: SPI下載允許 0 1:SPI下載禁止;0:SPI下載允許(注:當(dāng)使用SPI編程時(shí),該項(xiàng)不可用)
EEAVE: 燒錄時(shí)EEPROM數(shù)據(jù)保留 1 1:不保留;0:保留
BODEN: BOD功能控制 1 1:BOD功能禁止;0:BOD功能允許
BODLEVEL: BOD電平選擇 1 1:2.7V電平;0:4.0V電平
BOOTRST: 復(fù)位入口選擇 1 1:程序從0x0000地址開(kāi)始執(zhí)行;0:程序從引導(dǎo)區(qū)確定的入口地址開(kāi)始執(zhí)行
***************************************
BOOTSZ1/0: 引導(dǎo)程序大小及入口 00
00:1024Word/0xc00;
01:512Word/0xe00;
10:256Word/0xf00;
11:128Word/0xf80
***************************************
BLB02/01: 程序區(qū)指令位選擇 11
11:SPM和LPM指令都允許執(zhí)行
10:SPM指令禁止寫(xiě)程序區(qū)
01:引導(dǎo)區(qū)LPM指令禁止讀取程序區(qū)內(nèi)容;如果中斷向量定義在引導(dǎo)區(qū),則禁止該中斷在程序區(qū)執(zhí)行。
00:SPM指令禁止寫(xiě)程序區(qū);引導(dǎo)區(qū)LPM指令禁止讀取程序區(qū)內(nèi)容;如果中斷向量定義在引導(dǎo)區(qū),則禁止該中斷在程序區(qū)執(zhí)行。
***************************************
BLB12/11: 引導(dǎo)區(qū)指令位選擇 11
11:SPM和LPM指令都允許執(zhí)行
10:SPM指令禁止寫(xiě)引導(dǎo)區(qū)
01:程序區(qū)LPM指令禁止讀取引導(dǎo)區(qū)內(nèi)容;如果中斷向量定義在程序區(qū),則禁止該中斷在引導(dǎo)區(qū)執(zhí)行。
00:SPM指令禁止寫(xiě)引導(dǎo)區(qū);程序區(qū)LPM指令禁止讀取引導(dǎo)區(qū)內(nèi)容;如果中斷向量定義在程序區(qū),則禁止該中斷在引導(dǎo)區(qū)執(zhí)行。
***************************************
LB2/1: 程序區(qū)加密位選擇 11
11:未加密
10:程序和EEPROM編程功能禁止,熔絲位鎖定
00:程序和EEPROM編程及校驗(yàn)功能禁止,熔絲位鎖定
(注:先編程其他熔絲位,再編程加密位)
***************************************
CKSEL3/0: 時(shí)鐘源選擇 0001
CKOPT: 晶振選擇 1
SUT1/0: 復(fù)位啟動(dòng)時(shí)間選擇 10
***************************************
CKSEL3/0=0000:外部時(shí)鐘,CKOPT=0:允許芯片內(nèi)部XTAL1管腳對(duì)GND接一個(gè)36PF電容;CKOPT=1:禁止該電容
----------------
CKSEL3/0=0001-0100:已經(jīng)校準(zhǔn)的內(nèi)部RC振蕩,CKOPT總為1
0001:1.0M
0010:2.0M
0011:4.0M
0100:8.0M
----------------
CKSEL3/0=0101-1000:外部RC振蕩,CKOPT=0:允許芯片內(nèi)部XTAL1管腳對(duì)GND接一個(gè)36PF電容;CKOPT=1:禁止該電容
0101:<0.9M
0110:0.9-3.0M
0111:3.0-8.0M
1000:8.0-12.0M
----------------
CKSEL3/0=1001:外部低頻晶振,CKOPT=0:允許芯片內(nèi)部XTAL1/XTAL2管腳對(duì)GND各接一個(gè)36PF電容;CKOPT=1:禁止該電容
----------------
CKSEL3/0=1010-1111:外部晶振,陶瓷振蕩子,CKOPT=0:高幅度振蕩輸出;CKOPT=1:低幅度振蕩輸出
101X:0.4-0.9M
110X:0.9-3.0M
111X:3.0-8.0M
***************************************
SUT1/0: 復(fù)位啟動(dòng)時(shí)間選擇
當(dāng)選擇不同晶振時(shí),SUT有所不同。
三、時(shí)鐘選擇一覽表
時(shí)鐘源 啟動(dòng)延時(shí) 熔絲
外部時(shí)鐘 6 CK + 0 ms CKSEL="0000" SUT="00"
外部時(shí)鐘 6 CK + 4.1 ms CKSEL="0000" SUT="01"
外部時(shí)鐘 6 CK + 65 ms CKSEL="0000" SUT="10"
內(nèi)部RC振蕩1MHZ 6 CK + 0 ms CKSEL="0001" SUT="00"
內(nèi)部RC振蕩1MHZ 6 CK + 4.1 ms CKSEL="0001" SUT="01"
內(nèi)部RC振蕩1MHZ 6 CK + 65 ms CKSEL="0001" SUT="10"
內(nèi)部RC振蕩2MHZ 6 CK + 0 ms CKSEL="0010" SUT="00"
內(nèi)部RC振蕩2MHZ 6 CK + 4.1 ms CKSEL="0010" SUT="01"
內(nèi)部RC振蕩2MHZ 6 CK + 65 ms CKSEL="0010" SUT="10"
內(nèi)部RC振蕩4MHZ 6 CK + 0 ms CKSEL="0011" SUT="00"
內(nèi)部RC振蕩4MHZ 6 CK + 4.1 ms CKSEL="0011" SUT="01"
內(nèi)部RC振蕩4MHZ 6 CK + 65 ms CKSEL="0011" SUT="10"
內(nèi)部RC振蕩8MHZ 6 CK + 0 ms CKSEL="0100" SUT="00"
內(nèi)部RC振蕩8MHZ 6 CK + 4.1 ms CKSEL="0100" SUT="01"
內(nèi)部RC振蕩8MHZ 6 CK + 65 ms CKSEL="0100" SUT="10"
外部RC振蕩≤0.9MHZ 18 CK + 0 ms CKSEL="0101" SUT="00"
外部RC振蕩≤0.9MHZ 18 CK + 4.1 ms CKSEL="0101" SUT="01"
外部RC振蕩≤0.9MHZ 18 CK + 65 ms CKSEL="0101" SUT="10"
外部RC振蕩≤0.9MHZ 6 CK + 4.1 ms CKSEL="0101" SUT="11"
外部RC振蕩0.9-3.0MHZ 18 CK + 0 ms CKSEL="0110" SUT="00"
外部RC振蕩0.9-3.0MHZ 18 CK + 4.1 ms CKSEL="0110" SUT="01"
外部RC振蕩0.9-3.0MHZ 18 CK + 65 ms CKSEL="0110" SUT="10"
外部RC振蕩0.9-3.0MHZ 6 CK + 4.1 ms CKSEL="0110" SUT="11"
外部RC振蕩3.0-8.0MHZ 18 CK + 0 ms CKSEL="0111" SUT="00"
外部RC振蕩3.0-8.0MHZ 18 CK + 4.1 ms CKSEL="0111" SUT="01"
外部RC振蕩3.0-8.0MHZ 18 CK + 65 ms CKSEL="0111" SUT="10"
外部RC振蕩3.0-8.0MHZ 6 CK + 4.1 ms CKSEL="0111" SUT="11"
外部RC振蕩8.0-12.0MHZ 18 CK + 0 ms CKSEL="1000" SUT="00"
外部RC振蕩8.0-12.0MHZ 18 CK + 4.1 ms CKSEL="1000" SUT="01"
外部RC振蕩8.0-12.0MHZ 18 CK + 65 ms CKSEL="1000" SUT="10"
外部RC振蕩8.0-12.0MHZ 6 CK + 4.1 ms CKSEL="1000" SUT="11"
低頻晶振(32.768KHZ) 1K CK + 4.1 ms CKSEL="1001" SUT="00"
低頻晶振(32.768KHZ) 1K CK + 65 ms CKSEL="1001" SUT="01"
低頻晶振(32.768KHZ) 32K CK + 65 ms CKSEL="1001" SUT="10"
低頻石英/陶瓷振蕩器(0.4-0.9M) 258 CK + 4.1 ms CKSEL="1010" SUT="00"
低石英/陶瓷振蕩器(0.4-0.9M) 258 CK + 65 ms CKSEL="1010" SUT="01"
低石英/陶瓷振蕩器(0.4-0.9M) 1K CK + 0 ms CKSEL="1010" SUT="10"
低石英/陶瓷振蕩器(0.4-0.9M) 1K CK + 4.1 ms CKSEL="1010" SUT="11"
低石英/陶瓷振蕩器(0.4-0.9M) 1K CK + 65 ms CKSEL="1011" SUT="00"
低石英/陶瓷振蕩器(0.4-0.9M) 16K CK + 0 ms CKSEL="1011" SUT="01"
低石英/陶瓷振蕩器(0.4-0.9M) 16K CK + 4.1ms CKSEL="1011" SUT="10"
低石英/陶瓷振蕩器(0.4-0.9M) 16K CK + 65ms CKSEL="1011" SUT="11"
中石英/陶瓷振蕩器(0.9-3.0M) 258 CK + 4.1 ms CKSEL="1100" SUT="00"
中石英/陶瓷振蕩器(0.9-3.0M) 258 CK + 65 ms CKSEL="1100" SUT="01"
中石英/陶瓷振蕩器(0.9-3.0M) 1K CK + 0 ms CKSEL="1100" SUT="10"
中石英/陶瓷振蕩器(0.9-3.0M) 1K CK + 4.1 ms CKSEL="1100" SUT="11"
中石英/陶瓷振蕩器(0.9-3.0M) 1K CK + 65 ms CKSEL="1101" SUT="00"
中石英/陶瓷振蕩器(0.9-3.0M) 16K CK + 0 ms CKSEL="1101" SUT="01"
中石英/陶瓷振蕩器(0.9-3.0M) 16K CK + 4.1ms CKSEL="1101" SUT="10"
中石英/陶瓷振蕩器(0.9-3.0M) 16K CK + 65ms CKSEL="1101" SUT="11"
高石英/陶瓷振蕩器(3.0-8.0M) 258 CK + 4.1 ms CKSEL="1110" SUT="00"
高石英/陶瓷振蕩器(3.0-8.0M) 258 CK + 65 ms CKSEL="1110" SUT="01"
高石英/陶瓷振蕩器(3.0-8.0M) 1K CK + 0 ms CKSEL="1110" SUT="10"
高石英/陶瓷振蕩器(3.0-8.0M) 1K CK + 4.1 ms CKSEL="1110" SUT="11"
高石英/陶瓷振蕩器(3.0-8.0M) 1K CK + 65 ms CKSEL="1111" SUT="00"
高石英/陶瓷振蕩器(3.0-8.0M) 16K CK + 0 ms CKSEL="1111" SUT="01"
高石英/陶瓷振蕩器(3.0-8.0M) 16K CK + 4.1ms CKSEL="1111" SUT="10"
高石英/陶瓷振蕩器(3.0-8.0M) 16K CK + 65ms CKSEL="1111" SUT="11"
注:1、出廠默認(rèn)設(shè)置
注意:CKOPT=1(未編程)時(shí),最大工作頻率為8MHZ
內(nèi)部RC振蕩1MHZ 6 CK + 4.1 ms CKSEL="0001" SUT="01" 瓷振蕩器(0.9-3.0M) 1K CK + 4.1 ms CKSEL="1100" SUT="11"
中石英/陶瓷振蕩器(0.9-3.0M) 1K CK + 65 ms CKSEL="1101" SUT="00"
中石英/陶瓷振蕩器(0.9-3.0M) 16K CK + 0 ms CKSEL="1101" SUT="01"
中石英/陶瓷振蕩器(0.9-3.0M) 16K CK + 4.1ms CKSEL="1101" SUT="10"
中石英/陶瓷振蕩器(0.9-3.0M) 16K CK + 65ms CKSEL="1101" SUT="11"
高石英/陶瓷振蕩器(3.0-8.0M) 258 CK + 4.1 ms CKSEL="1110" SUT="00"
高石英/陶瓷振蕩器(3.0-8.0M) 258 CK + 65 ms CKSEL="1110" SUT="01"
高石英/陶瓷振蕩器(3.0-8.0M) 1K CK + 0 ms CKSEL="1110" SUT="10"
高石英/陶瓷振蕩器(3.0-8.0M) 1K CK + 4.1 ms CKSEL="1110" SUT="11"
高石英/陶瓷振蕩器(3.0-8.0M) 1K CK + 65 ms CKSEL="1111" SUT="00"
高石英/陶瓷振蕩器(3.0-8.0M) 16K CK + 0 ms CKSEL="1111" SUT="01"
高石英/陶瓷振蕩器(3.0-8.0M) 16K CK + 4.1ms CKSEL="1111" SUT="10"
高石英/陶瓷振蕩器(3.0-8.0M) 16K CK + 65ms CKSEL="1111" SUT="11"
注:1、出廠默認(rèn)設(shè)置
注意:CKOPT=1(未編程)時(shí),最大工作頻率為8MHZ
內(nèi)部RC振蕩1MHZ 6 CK + 4.1 ms CKSEL="0001" SUT="01"


關(guān)鍵詞: AVR熔絲位配

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉