使用說明熔絲位avr配置_第1頁
使用說明熔絲位avr配置_第2頁
使用說明熔絲位avr配置_第3頁
使用說明熔絲位avr配置_第4頁
使用說明熔絲位avr配置_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、關(guān)于正確配置 AVR 熔絲位對AVR 熔絲位的配置是比較細(xì)致的工作,用戶往往忽視其重要性,或感到不易掌握。下面給出對 AVR 熔絲位的配置操作時的一些要點(diǎn)和需要注意的相關(guān)事項(xiàng)。有關(guān) ATmega128熔絲位的具體功能請查看本書相關(guān)章節(jié),在附錄中將給出一個完整的匯總表。(1)在 AVR 的器件手冊中,對熔絲位使用已編程(Programmed)和未編程(Unprogrammed)定義熔絲位的狀態(tài),“Unprogrammed”表示熔絲狀態(tài)為“1”();“Programmed”表示熔絲狀態(tài)為“0”()。因此,配置熔絲位的過程實(shí)際上是“配置熔絲位成為未編程狀態(tài)“1”或成為已編程狀態(tài)“0”。(2)在使用通

2、過選擇打鉤“”方式確定熔絲位狀態(tài)值的編程工具時,請首先仔細(xì)閱讀的使用說明,弄清楚“”表示設(shè)置熔絲位狀態(tài)為“0”還是為“1”。(3)使用 CVAVR 中的編程應(yīng)特別注意,由于 CVAVR 編程界面初始打開時,大部分熔絲位的初始狀態(tài)定義為“1”,因此不要使用其編程菜單選項(xiàng)中的“all”選項(xiàng)。此時的“all”選項(xiàng)會以熔絲位的初始狀態(tài)定義來配置的熔絲位,而實(shí)際上其往往并不是用戶所需要的配置結(jié)果。如果要使用“all”選項(xiàng),應(yīng)先使用“中熔絲位實(shí)際狀態(tài)后,再使用“all” 選項(xiàng)。->fuse bits”(4)新的 AVR在使用前,應(yīng)首先查看它熔絲位的配置情況,再根據(jù)實(shí)際需要,進(jìn)行熔絲位的配置,并將各個

3、熔絲位的狀態(tài)備案。(5)AVR仍然可以加密以后僅僅是不能但不能修改配置。內(nèi)部 Flash 和 E2PROM 中的數(shù)據(jù),熔絲位的狀態(tài)擦除命令是將 Flash 和 E2PROM 中的數(shù)據(jù)清除,并同時將兩位鎖定位狀態(tài)配置成“11”,處于無鎖定狀態(tài)。但狀態(tài)。擦除命令并不改變其它熔絲位的(6)正確的操作程序是:在無鎖定狀態(tài)下,運(yùn)行代碼和數(shù)據(jù),配置相關(guān)的熔絲位,最后配置的鎖定位被鎖定后,如果發(fā)現(xiàn)熔絲位配置不對,必須使用擦除命令,清除中的數(shù)據(jù),并解除鎖定。然后重新運(yùn)行代碼和數(shù)據(jù),修改配置相關(guān)的熔絲位,最后再次配置的鎖定位。(7)使用 ISP 串行方式狀態(tài)默認(rèn)為“0”,表示 通過 AVR 的 SPI 口進(jìn)行

4、ISP編程時,應(yīng)配置 SPIEN 熔絲位為“0”。出廠時 SPIEN 位的ISP 串行方式數(shù)據(jù)。只有該位處于編程狀態(tài)“0”,才可以,如果該位被配置為未編程“1”后,ISP 串行方式數(shù)據(jù)立即被,此時只能通過并行方式或JTAG 編程方式才能將SPIEN 的狀態(tài)重新設(shè)置為“0”,開放 ISP。通常情況下,應(yīng)保持 SPIEN 的狀態(tài)為“0”,ISP 編程影響其引腳的 I/O,如使用串接功能,只要在硬件電路設(shè)計時,注意 ISP 接口與其并接的器件進(jìn)行必要的電阻或斷路跳線等。(8)當(dāng)你的系統(tǒng)中,不使用 JTAG 接口編程或?qū)崟r在線調(diào)試,且 JTAG 接口的引腳需要作為 I/O 口使用時,必須設(shè)置熔絲位 J

5、TAGEN 的狀態(tài)為“1”。出廠時 JTAGEN 的狀態(tài)默認(rèn)為“0”,表示JTAG 接口,JTAG 的外部引腳不能作為 I/O 口使用。當(dāng) JTAGEN 的狀態(tài)設(shè)置為“1”后,JTAG 接口立即被JTAG 重新設(shè)置為“0”,開放 JTAG。,此時只能通過并行方式或 ISP 編程方式才能將(9)情況下不要設(shè)置熔絲位把 RESET 引腳定義成 I/O 使用(如設(shè)置 ATmega8 熔絲位RSTDISBL 的狀態(tài)為“0”),這樣會造成 ISP 的編程無法進(jìn)行,因?yàn)樵谶M(jìn)入 ISP,需要將 RESET 引腳拉低,使先進(jìn)入復(fù)位狀態(tài)。(10)使用內(nèi)部有 RC 振的 AVR時,要特別注意熔絲位 CKSEL 的

6、配置。情況下,出廠時 CKSEL 位的狀態(tài)默認(rèn)為使用內(nèi)部 1MHz 的 RC 振作的時。如果你使用了外部振作的時時,不要忘記首先正確配置 CKSEL 熔絲位,否則你整個系統(tǒng)的定時都會出現(xiàn)問題。而當(dāng)在你的設(shè)計中沒有使用外部振(或某鐘特定的振蕩源)作的時時,千萬不要誤操作或錯誤的把 CKSEL 熔絲位配置成使用外部振(或其它不同類型的振蕩源)。一旦這種情況產(chǎn)生,使用 ISP 編程方式則無法對操作了(因?yàn)镮SP 方式需要使用取下的系統(tǒng)時鐘工作并產(chǎn)生定時信號),看上去“壞了”。此時只有使用并行編程方式,或使用 JTAG 方式(如果 JTAG 為目標(biāo)板上留有JTAG 接口)來了。另一種的方式是:嘗試在的

7、晶體引腳上臨時人為的疊加上不同類型的振蕩時鐘信號,一旦 ISP 可以對操作,立即將 CKSEL 配置成使用內(nèi)部 1MHz的 RC 振作的時,然后再根據(jù)實(shí)際情況重新正確配置 CKSEL。(11)使用支持 IAP 的AVR時,如果你不使用 BOOTLOADER 功能,注意不要把熔絲位BOOTRST 設(shè)置為“0”狀態(tài),它會使在上電時不是從 Flash 的 0x0000 處開始執(zhí)行程序。出廠時 BOOTRST 位的狀態(tài)默認(rèn)為“1”。關(guān)于 BOOTRST 的配置以及 BOOTLOADER 程序的設(shè)計與 IAP 的應(yīng)用請參考本章相關(guān)內(nèi)容。二、mega8 熔絲位:1:未編程(不選中)0:編程(選中)*熔絲位

8、說明缺省設(shè)置*:復(fù)位或I/O功能選擇看門狗開關(guān)111:復(fù)位功能;0:I/O功能(PC6)1:看門狗打開(通過WDTCR);0:看門狗:SPI01:SPI;0:SPI(注:當(dāng)使用SPI編程時,該項(xiàng)不可用)燒錄時EEPROM數(shù)據(jù)保留BOD功能BOD電平選擇11111:不保留;0:保留1:BOD功能;0:BOD功能:1:2.7V電平;0:4.0V電平1:程序從 0x0000 地址開始執(zhí)行;0:程復(fù)位選擇地址開始執(zhí)行序從引導(dǎo)區(qū)確定的*1/0: 引導(dǎo)程序大小及0000:1024Word/0xc00;01:512Word/0xe00;10:256Word/0xf00; 11:128Word/0xf80*B

9、OOTSZEEAVE:BODENBODLEVELBOOTRST:SPIENRSTDISBLWDTON:02/01:11:SPM和LPM指令都指令位選擇執(zhí)行1110:SPM指令寫01:引導(dǎo)區(qū)LPM指令序區(qū)執(zhí)行。內(nèi)容;如果中斷向量定義在引導(dǎo)區(qū),則該中斷在程00:SPM指令寫;引導(dǎo)區(qū)LPM指令執(zhí)行。內(nèi)容;如果中斷向量定義在引導(dǎo)區(qū),則該中斷在*BLB12/11:引導(dǎo)區(qū)指令位選擇1111:SPM和LPM指令都執(zhí)行10:SPM指令寫引導(dǎo)區(qū)01:LPM指令引導(dǎo)區(qū)內(nèi)容;如果中斷向量定義在,則該中斷在引導(dǎo)區(qū)執(zhí)行。00:SPM指令寫引導(dǎo)區(qū);LPM指令引導(dǎo)區(qū)內(nèi)容;如果中斷向量定義在程序區(qū),則該中斷在引導(dǎo)區(qū)執(zhí)行。*2

10、/1:11:未加密加密位選擇1110:程序和EEPROM編程功能,熔絲位鎖定00:程序和EEPROM編程及校驗(yàn)功能,熔絲位鎖定(注:先編程其他熔絲位,再編程加密位)*3/0:時選擇0001110晶振選擇復(fù)位啟動時間選擇1/0:*CKSEL3/00000:外部時鐘,CKOPT0:內(nèi)部XTAL1 管腳對GND接一個 36PF電容;CKOPT1:該電容CKSEL3/000010100:已經(jīng)校準(zhǔn)的內(nèi)部RC振蕩,CKOPT總為 1 0001:1.0M0010:2.0M0011:4.0M0100:8.0MCKSEL3/001011000:外部RC振蕩,CKOPT0:內(nèi)部XTAL1 管腳對GND接一個 36

11、PF電容;CKOPT1: 0101:<0.9M0110:0.9-3.0M0111:3.0-8.0M1000:8.0-12.0M該電容CKSEL3/01001:外部低頻晶振,CKOPT0:內(nèi)部XTAL1/XTAL2 管腳對GND各接一個 36PF電容;CKOPT1:該電容CKSELCKOPTSUTLBBLBCKSEL3/010101111:外部晶振,陶瓷振蕩子,CKOPT0:高幅度振蕩輸出;CKOPT1: 低幅度振蕩輸出101X:0.4-0.9M110X:0.9-3.0M111X:3.0-8.0M*SUT1/0:復(fù)位啟動時間選擇當(dāng)選擇不同晶振時,SUT有所不同。三、時鐘選擇一覽表時外部時鐘

12、外部時鐘外部時鐘內(nèi)部RC振蕩 1MHZ 內(nèi)部RC振蕩 1MHZ 內(nèi)部RC振蕩 1MHZ 內(nèi)部RC振蕩 2MHZ 內(nèi)部RC振蕩 2MHZ 內(nèi)部RC振蕩 2MHZ 內(nèi)部RC振蕩 4MHZ 內(nèi)部RC振蕩 4MHZ 內(nèi)部RC振蕩 4MHZ 內(nèi)部RC振蕩 8MHZ 內(nèi)部RC振蕩 8MHZ 內(nèi)部RC振蕩 8MHZ外部RC振蕩0.9MHZ 外部RC振蕩0.9MHZ 外部RC振蕩0.9MHZ 外部RC振蕩0.9MHZ 外部RC振蕩 0.9-3.0MHZ 外部RC振蕩 0.9-3.0MHZ 外部RC振蕩 0.9-3.0MHZ 外部RC振蕩 0.9-3.0MHZ 外部RC振蕩 3.0-8.0MHZ 外部RC振蕩

13、3.0-8.0MHZ 外部RC振蕩 3.0-8.0MHZ 外部RC振蕩 3.0-8.0MHZ外部RC振蕩 8.0-12.0MHZ 外部RC振蕩 8.0-12.0MHZ 外部RC振蕩 8.0-12.0MHZ 外部RC振蕩 8.0-12.0MHZ低頻晶振(32.768KHZ)啟動延時熔絲CKSEL=0000 CKSEL=0000 CKSEL=0000 CKSEL=0001 CKSEL=0001 CKSEL=0001 CKSEL=0010 CKSEL=0010 CKSEL=0010 CKSEL=0011 CKSEL=0011 CKSEL=0011 CKSEL=0100 CKSEL=0100 CKSE

14、L=0100 CKSEL=0101 CKSEL=0101 CKSEL=0101 CKSEL=0101 CKSEL=0110 CKSEL=0110 CKSEL=0110 CKSEL=0110 CKSEL=0111 CKSEL=0111 CKSEL=0111 CKSEL=0111 CKSEL=1000 CKSEL=1000 CKSEL=1000CKSEL=10006666666666666661818186181818618181861818186CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK CK C

15、K CK CK CK CKCK+0 ms4.1 ms 65 ms0 ms4.1 ms65 ms0 ms4.1 ms65 ms0 ms4.1 ms65 ms0 ms4.1 ms65 ms0 ms4.1 ms65 ms4.1 ms0 ms4.1 ms65 ms4.1 ms0 ms4.1 ms65 ms4.1 ms0 ms4.1 ms65 ms4.1 msSUT=00 SUT=01 SUT=10 SUT=00 SUT=01 SUT=10 SUT=00 SUT=01 SUT=10 SUT=00 SUT=01 SUT=10 SUT=00 SUT=01 SUT=10 SUT=00 SUT=01 SUT=1

16、0 SUT=11 SUT=00 SUT=01 SUT=10 SUT=11 SUT=00 SUT=01 SUT=10 SUT=11 SUT=00 SUT=01 SUT=10SUT=111K CK + 4.1 msCKSEL=1001 SUT=00低頻晶振(32.768KHZ)低頻晶振(32.768KHZ)1K CK +32K CK +6565CK CK CK CK CK CK CK CK CK CKmsmsCKSEL=1001 SUT=01CKSEL=1001 SUT=10低頻石英/陶瓷振低石英/陶瓷振 低石英/陶瓷振 低石英/陶瓷振 低石英/陶瓷振 低石英/陶瓷振 低石英/陶瓷振 低石英/陶瓷

17、振 中石英/陶瓷振 中石英/陶瓷振 中石英/陶瓷振 中石英/陶瓷振 中石英/陶瓷振 中石英/陶瓷振 中石英/陶瓷振 中石英/陶瓷振 高石英/陶瓷振 高石英/陶瓷振 高石英/陶瓷振 高石英/陶瓷振 高石英/陶瓷振 高石英/陶瓷振 高石英/陶瓷振高石英/陶瓷振(0.4-0.9M)(0.4-0.9M)(0.4-0.9M)(0.4-0.9M)(0.4-0.9M)(0.4-0.9M)(0.4-0.9M)(0.4-0.9M)(0.9-3.0M)(0.9-3.0M)(0.9-3.0M)(0.9-3.0M)(0.9-3.0M)(0.9-3.0M)(0.9-3.0M)(0.9-3.0M)(3.0-8.0M)(3

18、.0-8.0M)(3.0-8.0M)(3.0-8.0M)(3.0-8.0M)(3.0-8.0M)(3.0-8.0M)(3.0-8.0M)2582581K1K1K16K16K16K258258+4.1msCKSEL=1010 CKSEL=1010 CKSEL=1010 CKSEL=1010 CKSEL=1011 CKSEL=1011 CKSEL=1011 CKSEL=1011 CKSEL=1100 CKSEL=1100 CKSEL=1100 CKSEL=1100 CKSEL=1101 CKSEL=1101 CKSEL=1101 CKSEL=1101 CKSEL=1110 CKSEL=1110 C

19、KSEL=1110 CKSEL=1110 CKSEL=1111 CKSEL=1111 CKSEL=1111CKSEL=1111SUT=00 SUT=01 SUT=10 SUT=11 SUT=00 SUT=01 SUT=10 SUT=11 SUT=00 SUT=01 SUT=10 SUT=11 SUT=00 SUT=01 SUT=10 SUT=11 SUT=00 SUT=01 SUT=10 SUT=11 SUT=00 SUT=01 SUT=10SUT=1165 ms0 ms4.1 ms 65 ms0 ms 4.1ms 65ms4.1 ms65 ms1K1K1KCK CK CK CK CKCK+0

20、 ms4.1 ms65 ms0 ms 4.1ms 65ms16K16K16K258 CK258 CK+ 4.1ms+ 65 ms1K1K1K16K16KCK CK CKCKCK+0 ms4.1 ms 65 ms+0 ms 4.1ms65ms16KCK注:1、出廠默認(rèn)設(shè)置注意:CKOPT=1(未編程)時,最大工作頻率為 8MHZ內(nèi)部RC振蕩 1MHZ6 CK + 4.1 msCKSEL=0001SUT=0121 單片機(jī)開發(fā):zrp_nc:關(guān)于 AVR 單片機(jī)熔絲位的設(shè)置和拯救大全第 1 頁 ,共 1 頁AVR 單片機(jī)熔絲位的設(shè)置和詳細(xì)的拯救編輯作者: ZRP 2007-10-1 于熔絲位是ATM

21、EL 公司AVR 單片機(jī)比較獨(dú)到的特征。在每一種型號的 AVR 單片機(jī)內(nèi)部都有一些特定含義的熔絲位,其特性表現(xiàn)為多次擦寫的 E²PROM。用戶通過配置(編程)這些熔絲位,可以固定地設(shè)置 AVR 的一些特性,參數(shù)以及 I/O 配置等,當(dāng)然也對片內(nèi)運(yùn)行代碼的鎖定(加密)。用戶使用并行編程方式、ISP 編程方式、JTAG 編程方式都可以對AVR 的熔絲位進(jìn)行配置,但不同的編程工具 提供對熔絲位的配置方式(指人機(jī)界面)也是不同的。有的是通過直接填寫熔絲位位值(如:CVAVR、PonyProg2000 和SLISP 等),有的是通過列出表格選擇(如AVR STUDIO、BASCOM-AVR)。

22、前者程序界面比較簡單,但是需要用戶在仔細(xì)查詢操作,會引起一些意想不到的后果,如造成 無法正常運(yùn)行,無法再次 ISP 編程模式等。建議用戶對AVR 的熔絲位進(jìn)行配置時,選擇用戶表格選擇方式界面的編程 ,如BASCOM-AVR。不過版主使用的是前者 PonyProg2000。對 AVR 熔絲位的配置操作是比較細(xì)致的工作,用戶往往忽視其重要性,或感到不易掌握。看到這么多的人對 AVR 的熔絲位 使用和誤操作,結(jié)合本人的使用實(shí)踐,給出以下方面的意見和參考。下面給出對AVR 熔絲位的配置操作時的一些要點(diǎn)和需要注意的相關(guān)事項(xiàng)以及相應(yīng)的拯救 。(一)設(shè)置1.1.1 正確配置 AVR 熔絲位對 AVR 熔絲位

23、的配置是比較細(xì)致的工作,用戶往往忽視其重要性,或感到不易掌握。下面給出對 AVR 熔絲位的配置操作時的一些要點(diǎn)和需要注意的相關(guān)事項(xiàng)。有關(guān) ATmega128 熔絲位的具體 功能請查看本書相關(guān)章節(jié),在附錄中將給出一個完整的匯總表。(1) 在 AVR 的器件手冊中,對熔絲位使用已編程(Programmed)和未編程(Unprogrammed)定義熔絲位 的狀態(tài),“Unprogrammed”表示熔絲狀態(tài)為“1”();“Programmed”表示熔絲狀態(tài)為“0”()。因此, 配置熔絲位的過程實(shí)際上是“配置熔絲位成為未編程狀態(tài)“1”或成為已編程狀態(tài)“0”。(2) 在使用通過選擇打鉤“”方式確定熔絲位狀態(tài)

24、值的編程工具時,請首先仔細(xì)閱讀的使用說明,弄清楚“”表示設(shè)置熔絲位狀態(tài)為“0”還是為“1”。(3) 使用 CVAVR 中的編程應(yīng)特別注意,由于 CVAVR 編程界面初始打開時,大部分熔絲位的初始狀態(tài)定義為“1”,因此不要使用其編程菜單選項(xiàng)中的“all”選項(xiàng)。此時的“all”選項(xiàng)會以熔絲位的初始狀態(tài)定義來配置的熔絲位,而實(shí)際上其往往并不是用戶所需要的配置結(jié)果。如果要使用“all”選項(xiàng),應(yīng)先使用“->fuse bits”中熔絲位實(shí)際狀態(tài)后,再使用“all” 選項(xiàng)。(4) 新的 AVR在使用前,應(yīng)首先查看它熔絲位的配置情況,再根據(jù)實(shí)際需要,進(jìn)行熔絲位的配置,并將各個熔絲位的狀態(tài)備案。(5) A

25、VR 加密以后僅僅是不能 內(nèi)部 Flash 和 E2PROM 中的數(shù)據(jù),熔絲位的狀態(tài)仍然可以 但不能修改配置。 擦除命令是將 Flash 和 E2PROM 中的數(shù)據(jù)清除,并同時將兩位鎖定位狀態(tài)配置成“11”,處于無鎖定狀態(tài)。但 擦除命令并不改變其它熔絲位的狀態(tài)。(6) 正確的操作程序是:在 無鎖定狀態(tài)下, 運(yùn)行代碼和數(shù)據(jù),配置相關(guān)的熔絲位,最后配置 的鎖定位。 被鎖定后,如果發(fā)現(xiàn)熔絲位配置不對,必須使用 擦除命令,清除 中的數(shù)據(jù),并解除鎖定。然后重新 運(yùn)行代碼和數(shù)據(jù),修改配置相關(guān)的熔絲位,最后再次配置 的鎖定位。(7) 使用 ISP 串行方式 編程時,應(yīng)配置 SPIEN 熔絲位為“0”。 出廠

26、時 SPIEN 位的狀態(tài)默認(rèn)為“0”,表示ISP 串行方式 數(shù)據(jù)。只有該位處于編程狀態(tài)“0”,才可以通過 AVR 的 SPI 口進(jìn)行 ISP ,如果該位被配置為未編程“1”后,ISP 串行方式 數(shù)據(jù)立即被 ,此時只能通過并行方式或 JTAG 編程方式才能將 SPIEN 的狀態(tài)重新設(shè)置為“0”,開放 ISP。通常情況下,應(yīng)保持 SPIEN 的狀態(tài)為“0”, ISP 編程 影響其引腳的 I/O 功能,只要在硬件電路設(shè)計時,注意 ISP 接口與其并接的器件進(jìn)行必要的 ,如使用串接電阻或斷路跳線等。(8) 當(dāng)你的系統(tǒng)中,不使用 JTAG 接口 編程或?qū)崟r在線 調(diào)試,且 JTAG 接口的引腳需要作為 I

27、/O 口使用時,必須設(shè)置熔絲位 JTAGEN 的狀態(tài)為“1”。出廠時 JTAGEN 的狀態(tài)默認(rèn)為“0”,表示JTAG 接口,JTAG21 單片機(jī)開發(fā):zrp_nc:的外部引腳不能作為 I/O 口使用。當(dāng) JTAGEN 的狀態(tài)設(shè)置為“1”后,JTAG 接口立即被式或 ISP 編程方式才能將 JTAG 重新設(shè)置為“0”,開放 JTAG。,此時只能通過并行方(9)情況下不要設(shè)置熔絲位把 RESET 引腳定義成 I/O 使用(如設(shè)置 ATmega8 熔絲位 RSTDISBL 的狀態(tài)為“0”),這樣會造成 ISP 的編程無法進(jìn)行,因?yàn)樵谶M(jìn)入 ISP先進(jìn)入復(fù)位狀態(tài)。,需要將 RESET 引腳拉低,使(10

28、)使用內(nèi)部有 RC 振的 AVR時,要特別注意熔絲位 CKSEL 的配置。出廠時 CKSEL情況下位的狀態(tài)默認(rèn)為使用內(nèi)部 1MHz 的 RC 振作的時。如果你使用了外部振作的時時,不要忘記首先正確配置 CKSEL 熔絲位,否則你整個系統(tǒng)的定時都會出現(xiàn)問題。而當(dāng)在你的設(shè)計中沒有使用外部振的時時,千萬不要誤操作或錯誤的把 CKSEL 熔絲位配置成使用外部振(或某鐘特定的振蕩源)作(或其它不同類型的振蕩源)。一旦這種情況產(chǎn)生,使用 ISP 編程方式則無法對操作了(因?yàn)?ISP 方式信號),看上去“壞了”。此時只有使用取下需要的系統(tǒng)時鐘工作并產(chǎn)生定時使用并行編程方式,或使用 JTAG 方式(如果 JT

29、AG 為目標(biāo)板上留有 JTAG 接口)來了。另一種的方式是:嘗試在的晶體引腳上臨時人為的疊加上不同類型的振蕩時鐘信號,一旦 ISP 可以對操作,立即將 CKSEL 配置成使用內(nèi)部 1MHz 的 RC 振(11)使用支持 IAP 的 AVR的時,然后再根據(jù)實(shí)際情況重新正確配置 CKSEL。時,如果你不使用 BOOTLOADER 功能,注意不要把熔絲位 BOOTRST 設(shè)置為“0”作狀態(tài),它會使在上電時不是從 Flash 的 0x0000 處開始執(zhí)行程序出廠時 BOOTRST 位的狀態(tài)默認(rèn)為“1”。關(guān)于 BOOTRST 的配置以及 BOOTLOADER 程序的設(shè)計與 IAP 的應(yīng)用請參考本章相關(guān)內(nèi)

30、容。1.1.2 ATmega128 中重要熔絲位的配置上一小節(jié)了配置 AVR 熔絲位的要點(diǎn)和注意事項(xiàng),本小節(jié)把在絲位配置情況進(jìn)行說明。情況下使用 ATmega128 時,幾個重要的熔(1)熔絲位 M103C。M103C 的配置將設(shè)定 ATmega128 是以 ATmega103 兼容方式工作運(yùn)行還是以ATmega128 本身的方式工作運(yùn)行。ATmega128 在出廠時 M103C 默認(rèn)狀態(tài)為“0”,即默認(rèn)以 ATmega103 兼容方式工作。當(dāng)用戶系統(tǒng)設(shè)計使以 ATmega128 方式工作時,應(yīng)首先將 M103C 的狀態(tài)配置為“1”。(2)CLKSEL0.3。CLKSEL0、CLKSEL1、C

31、LKSEL2、CLKSEL3 用于選擇系統(tǒng)的時。有五種不同類型的時可供選擇(每種類型還有細(xì)的劃分)。出廠時的默認(rèn)情況為 CLKSEL3.0 和 SUT1.0 分別是“0001”和“10”。即使用內(nèi)部 1MHz RC 振,使用最長的啟動延時。這無論外部振蕩電路是否工作,都可以進(jìn)行最初的 ISP。對于 CLKSEL3.0 熔絲位的改寫需要十分慎重,因?yàn)橐坏└膶戝e誤,會造成無法啟動,見上一小節(jié)第 10 點(diǎn)說明。(3)JTAGEN。如果不使用 JTAG 接口,應(yīng)將 JTAGEN 的狀態(tài)設(shè)置為“1”,即JTAG,JTAG 引腳用于 I/O 口。(4)SPIEN。SPI 方式,默認(rèn)狀態(tài)為“0”。數(shù)據(jù)和程序

32、保留其狀態(tài)??撮T狗的定時器始終開啟。如果該位設(shè)置(5)WDTON??撮T狗的定時器始終開啟。WDTON 默認(rèn)為“1”,即為“0”后,看門狗的定時器就會始終打開,不能被內(nèi)部程序了,這是為了防止當(dāng)程序跑飛時,未知代碼通過寫寄存器將看門狗定時器關(guān)斷而設(shè)計的(盡管關(guān)斷看門狗定時器需要特殊的方式,但它更高的可靠行)。(6)EESAVE。執(zhí)行擦除命令時是否保留 E2PROM 中的內(nèi)容,默認(rèn)狀態(tài)為“1”,表示 E2PROM 中的內(nèi)容同 Flash同擦除。如果該位設(shè)置為“0”,對程序進(jìn)行前的擦除命令只會對 FLASH 代碼區(qū)有效,而對 E2PROM中的,需要保留 E2PROM 中數(shù)據(jù)的情況下是十分有用的。區(qū)無效

33、。這對于希望在系統(tǒng)更新(7)BOOTRST。決定上電起動時,第一條執(zhí)行指令的地址。默認(rèn)狀態(tài)為“1”,表示起動時從 0x0000 開始執(zhí)行。如果 BOOTRST 設(shè)置為“0”,則起動時從 BOOTLOADER 區(qū)的起始地址處開始執(zhí)行程序。BOOTLOADER 區(qū)的大小由 BOOTSZ1 和 BOOTSZ0 決定,因此其首地址也隨之變化。(8)BOOTSZ1 和 BOOTSZ0:這兩位確定了 BOOTLOADER 區(qū)的大小以及其起始的首地址。默認(rèn)的狀態(tài)為“00”,表示 BOOTLOADER 區(qū)為 4096 字,起始首地址為 0xF000。(9)推薦用戶使用 ISP 方式配置熔絲位。配置工具選用 B

34、ASCOM-AVR (網(wǎng)上試用版,它對 ISP無限制),和 STK200/STK300 兼容的電纜(見第四章內(nèi)容)。第 2 頁 ,共 2 頁21 單片機(jī)開發(fā):zrp_nc:要重視手冊學(xué)習(xí),不僅是掌握如何使用,也是從根本上認(rèn)識和掌握原理和結(jié)構(gòu)。對于硬件工程師來將,是真正的“經(jīng)書”,其它都是“修練經(jīng)驗(yàn)”。不熟讀“經(jīng)書”,你無法成“仙”的。這也是M128、M8的目的之一! (二)AVR 熔絲位拯救詳細(xì)攻略1.1.3 AVR的 ISP 全攻略當(dāng)然你在配置熔絲位時要從事,防止鎖死。有不少網(wǎng)友屢屢遭此不幸。其實(shí)你在熔絲位配置時,只要正確,是出錯的。如果當(dāng)你改動了AVR 的熔絲位配置,重新加電后,想再用IS

35、P,提示:“進(jìn)入編程模式失敗”等,極有可能是你搞錯了熔絲位,導(dǎo)致不知道使用何種外部主頻而無法正常工作(僅限于使用內(nèi)部 RC 振蕩的情況)。不過,不用太擔(dān)心,其實(shí)拯救的辦法還是有很多的,操作起來也是很容易的,具體解決1。進(jìn)入 JTAG 模式修改SPIEN 熔絲位為:需要使用JTAGICE 調(diào)試器,不過情況下調(diào)試模式也進(jìn)不去,JTAGEN(值為 1)鎖死了。2。并行編程器恢復(fù) 需要你有USB 或 COM1 口制作的并行 HVPROG 編程器,STK200/STK3003。通過外加有源晶振 需要你有外部有源振蕩晶體(石英或晶振 1-4M) 這個最簡單,速度最快(強(qiáng)烈推薦)4。使用通用編程器將恢復(fù)到出

36、廠狀態(tài)這個,需要你有市場上的通用編程器,可以修改三個熔絲位寄存器數(shù)據(jù)。5。寄回給服務(wù)商,讓他們幫忙將恢復(fù)這是最省事,但是最費(fèi)時間,最無可奈何的。先一下基本恢復(fù)理論ISP(In System Programmability) 在系統(tǒng)編程,為 串行IAP(In Application Progra) 在應(yīng)用編程,BootLoader 也是類似的意思1. ISP 雖然利用了SPI 接口(例外:M64/M128 為 UASRT0 接口,Tiny13 等沒有SPI 接口)的引腳,但只在復(fù)位時起作用,而且完成后合格的器會自動斷開端口的連接,對正常工作時沒有影響的( 在應(yīng)用中,器一定是一直粘在上面的)。2.

37、 雖然高壓并行能修復(fù)任何熔絲位,但對于貼片封裝來說是很不現(xiàn)實(shí)的,所以添加 ISP10 標(biāo)準(zhǔn)插座接口后就是最常用的ISP方式了3. 雖然IAP 是一種新的升級,但I(xiàn)AP 程序本身也是要先用高壓并行或ISP 來燒進(jìn)里面才行4. Tiny13 等少管腳 AVR因?yàn)楣苣_實(shí)在太少了,有ISP,但沒有高壓并行編程而特制了高壓串行編程上都留有 ISP10 標(biāo)準(zhǔn)接口插座,或更省位置的 ISP6 標(biāo)準(zhǔn)插座留 6 個焊盤就行了所以,ISP 的工作前提1.3.2.的SPIEN 熔絲位=0使能ISP 功能沒有物理損壞的 RSTDISBL 熔絲位=1 RESET 引腳有效 (假如有這個熔絲位)4. 線路正常-接錯線?

38、短路?5. ISP6. 電源正常器正常特別要考慮 連線的接觸不良問題(一) 并行編程器恢復(fù),最早的編程制作方式也有:, 功能最強(qiáng)大,通常需要 12V24V 的高壓,以示區(qū)別,下面稱為 高壓并行編程。1.USB 或 COM1 口制作的并行 HVPROG 編程器例如USBASP 的 ISP 上位機(jī)AVR_er.exe(zhb2000)和USBAVRISP(ZHIFENG),但需要 AVR MCU 連接較多的引腳 (20 腳);第 3 頁 ,共 3 頁注:不同 AVR 的熔絲也不同,使用前必須仔細(xì)查看手冊。21 單片機(jī)開發(fā):zrp_nc:2.并行編程器 STK200/STK300,串行編程器ISP6

39、-10 標(biāo)準(zhǔn)燒寫口。PonyProg2000. 但需要電腦留有 LPT 打印機(jī)接口,AVR MCU 留有1.以我們常用的小馬 PonyProg2000 串行編程器為例,在d 菜單中選Security and ConfigurationBits,(或者點(diǎn)Security and Configuration Bits 按鈕)在接著出現(xiàn)的熔絲位配置窗口的下面,有幾個按鈕,千萬不要亂按。正確的是先按“”按鈕,讀出原來中熔絲位的配置,然后再以此為基礎(chǔ),按你的需要進(jìn)行局部修改,確定出現(xiàn)鎖死的問題。如果萬一由于操作不當(dāng),出現(xiàn)鎖死也不必驚慌。無誤后再按“Write”按鈕,就 OK 了。2.除了用并行編程器恢復(fù)

40、的以外,對于沒有并行編程器的朋友,還可以用外接有源振的解鎖,是用一個 1MHz 的振蕩信號接到ATmega16L 的 13 腳 XTAL1,接通單片機(jī)的電源,正常的話你會看到原來單片機(jī)中的程序已經(jīng)可以正常運(yùn)行了。說明外接振已經(jīng)使單片機(jī)恢復(fù)工作了。這下來就好辦了,仍然用 PonyProg2000,點(diǎn) Security and Configuration Bits 按鈕,進(jìn)入熔絲位配置窗口,這時你會看到所有的熔絲位都沒打,連灰色的SPIEN 前面那個模糊不清的也沒了,不過沒Dont worry,你只要按照下圖中 ATmega16L 出廠時熔絲位的設(shè)置打,然后按“Write”按鈕,如果屏幕輕輕的閃一

41、下,OK,恭喜你已經(jīng)好了,再按“”按鈕,你會看到除了你打的地方以外,SPIEN 前面那個模糊不清的也出來了。鎖死的已經(jīng)解鎖了。第 4 頁 ,共 4 頁21 單片機(jī)開發(fā):zrp_nc:,我開始用一個 51 單片機(jī)的震蕩信號接過來,結(jié)果不行,可能是驅(qū)動要注意的是外接的信號幅度不可太大,以免損毀能力不夠。后來換了一個信號發(fā)生器輸出的 1MHz 的信號,就了。也可以用 NE555搭個振做信號源。(二)外加有源晶振運(yùn)行時鐘ISP 時鐘(必須低于運(yùn)行時鐘的 1/4)4096Hz這個速度了8MHz 的石英晶體32768Hz128KHz<1024Hz/很的用法,外接 32.768KHz 晶體+CKDIV

42、8 ,不過 AVRISP 還是提供了 603Hz/另一簡易解決辦法是時在 32.768KHz 晶體并聯(lián)一個 1MHz 晶體,雙龍的線就配有一個<8192Hz< 32KHz/內(nèi)部 RC128KHz1.0MHz8.0MHz16.0MHz<250KHz<2000KHz<4000KHz/默認(rèn)值(8MHz+CKDIV8),所以 AVRISP 的 ISP 速度多為 230KHz運(yùn)行時鐘不等于震的頻率,因?yàn)椴糠?AVR有系統(tǒng)時鐘預(yù)分頻器,可以對震進(jìn)行 1256 分頻第 5 頁 ,共 5 頁21 單片機(jī)開發(fā):zrp_nc:CKDIV8 熔絲位決定CLKPS 位的初始值。若CKDI

43、V8 未編程,CLKPS 位復(fù)位為“0000”;若 CKDIV8 已編程,CLKPS 位復(fù)位為“0011”,給出啟動時分頻因子為 8 AVRISP 可提供的ISP 時鐘 921.6KHz,230.4KHz, 57.6KHz,28.8KHz,4.0KHz, 603HzSTK500 可提供的ISP 時鐘 1.845MHz,460.8KHz,115.2KHz,57.6KHz,4.0KHz,1206HzISP 方案內(nèi)部RC選擇合適的ISP 速度時鐘設(shè)定外部RC接上合適的電阻和電容,選擇合適的ISP 速度。補(bǔ)救: 外部時接到 XTAL1外部 RC 根本就沒有什么意義,頻率精度/度不高,成本也沒有降低,所

44、以新的 AVR已經(jīng)沒有這個選項(xiàng)了。各位網(wǎng)友要注意的是錯誤設(shè)定后補(bǔ)救接上合適的晶體,選擇合適的ISP 速度。補(bǔ)救: 外部時接到 XTAL1接到 XTAL1外部晶體外部時鐘接上合適的時,選擇合適的ISP 速度。-補(bǔ)救: 外部時外部時可以是 外部(4MHz)有源晶體輸出,其他 MCU 的XTAL2 腳,各種方波振蕩電路(NE555)輸出等大部分 AVR的ISP 端口是 SCK,MOSI,MISO,RESET而 M64/M128 的ISP 端口是SCK, PDI, PDO,RESET</font>而且 M64/M128 出廠默認(rèn)兼容 M103熔絲位M103C=0,很多新特性不能使用,程序也

45、可能不能正常運(yùn)行-因?yàn)镃 編譯器通常默認(rèn)自動把SP 指向SRAM 的末端,M103=0x0FFFH, M64/M128=0x10FFH,必然出錯! AVR 的所有熔絲位均是:1 未編程,多為不起作用的意思。0 編程,多為 起作用的意思。基于可編程工藝的都是這樣:PROM/EEPROM/FLASH 都是出廠時和擦除后變?yōu)槿?1(0xFF)的,要編程才能變成 0。反過來就是了,跟 CE/OE/INT 都是低電平有效一樣,都是很常見。在ISP 模式下永遠(yuǎn)不能(修改)SPIEN 位,這是 AVR的硬件保護(hù)有RESET 腳的 M16/M32/M64/M128 等,在 ISP 模式下根本就就令 ISP 無

46、效,無論如何修改熔絲位,復(fù)正常。 M8/M48/M88/M168/Tiny 系列有 RSTDISBL 熔絲位可以令導(dǎo)致 RESET 失效而令I(lǐng)SP 無法工作外,其他情況復(fù)正常。來說,只要滿足ISP 的工作前提,再把XTAL1 接到一個 4MHz 有源晶體的輸出,基本是萬試的。通過外加有源晶振的辦法,讓其恢復(fù), 這個最可行。它可以恢復(fù)大部分熔絲位搞錯的接法如下:。(重點(diǎn)推薦)打點(diǎn)的口子對應(yīng) 1 號腳 依次逆時針1 NC2 GND3 CLK4 VCC1 腳不接,2 腳接地,3 腳接輸出,4 腳接電源。恢復(fù):第 6 頁 ,共 6 頁21 單片機(jī)開發(fā):zrp_nc:又重新正常工作了,這時就能用ISP

47、或JTAG接上上圖的有源晶振,重新通電,可以看到線修改錯誤的熔絲位了。修改完成后,斷電,將有源晶振拆走,看看是否已經(jīng)恢復(fù)正常。還有一個辦法,如果沒有有源晶振的話可以用其他工作正常的單片機(jī)的時鐘作為外部晶振,只要將工作正常的單片機(jī)的XTAL2 腳連接熔絲設(shè)置錯誤的單片機(jī)的XTAL1 引腳即可。像我使用 AVR910線的可直接把AT90S2313 的時鐘輸出連到被設(shè)置錯的就可恢復(fù)了,很方便。不要忘記,并行高壓編程的時鐘信號也是從 XTAL1 導(dǎo)入方波信號的。如果有源晶振的不行(除了ISPEN=0,RSTDISBL=0 情況外),恐怕高壓編程也未必能奏效。其他一些功能操作對ISP 熔絲位的影響1. JTAG 的影響(M16,M32,M128 等):JTAG 能SPIEN 和 JTAGEN,要是不程才能恢復(fù)。同時改成SPIEN=1,JTAGEN=1,將會導(dǎo)致 MCU 鎖死,需要高壓并行編2. DebugWIRE 的影響:(M48,M88,M168,T2313 等,由于DebugWIRE 使用 RESET 腳來通訊,所以跟ISP 有所里面的資料不是很詳細(xì))可以通過 ISP 或并行高壓編程來使能DebugWIRE 功能即 DWEN=0,使能 DebugWIRE 功能后,ISP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論