配置AVR熔絲位

(4)新的AVR晶片在使用前,應首先查看它熔絲位的配置情況,再根據實際需要,進行熔絲位的配置,並將各個熔絲位的狀態記錄備案。 (7)使用ISP串列方式下載編程時,應配置SPIEN熔絲位為“0”。 (10)使用內部有RC振盪器的AVR晶片時,要特別注意熔絲位CKSEL的配置。

正確配置AVR熔絲位
對AVR熔絲位的配置是比較細緻的工作,用戶往往忽視其重要性,或感到不易掌握。下面給出對AVR熔絲位的配置操作時的一些要點和需要注意的相關事項。有關Atmega128熔絲位的具體定義和功能請查看本書相關章節,在附錄中將給出一個完整的匯總表。
(1)在AVR的器件手冊中,對熔絲位使用已編程(Programmed)和未編程(Unprogrammed)定義熔絲位的狀態,“Unprogrammed”表示熔絲狀態為“1”(禁止);“Programmed”表示熔絲狀態為“0”(允許)。因此,配置熔絲位的過程實際上是“配置熔絲位成為未編程狀態“1”或成為已編程狀態“0””。
(2)在使用通過選擇打鉤“√”方式確定熔絲位狀態值的編程工具軟體時,請首先仔細閱讀軟體的使用說明,弄清楚“√”表示設定熔絲位狀態為“0”還是為“1”。
(3)使用CVAVR中的編程下載程式時應特別注意,由於CVAVR編程下載界面初始打開時,大部分熔絲位的初始狀態定義為“1”,因此不要使用其編程選單選項中的“all”選項。此時的“all”選項會以熔絲位的初始狀態定義來配置晶片的熔絲位,而實際上其往往並不是用戶所需要的配置結果。如果要使用“all”選項,應先使用“read->fuse bits”讀取晶片中熔絲位實際狀態後,再使用“all” 選項。
(4)新的AVR晶片在使用前,應首先查看它熔絲位的配置情況,再根據實際需要,進行熔絲位的配置,並將各個熔絲位的狀態記錄備案。
(5)AVR晶片加密以後僅僅是不能讀取晶片內部Flash和E2PROM中的數據,熔絲位的狀態仍然可以讀取但不能修改配置。晶片擦除命令是將Flash和E2PROM中的數據清除,並同時將兩位鎖定位狀態配置成“11”,處於無鎖定狀態。但晶片擦除命令並不改變其它熔絲位的狀態。
(6)正確的操作程式是:在晶片無鎖定狀態下,下載運行代碼和數據,配置相關的熔絲位,最後配置晶片的鎖定位。晶片被鎖定後,如果發現熔絲位配置不對,必須使用晶片擦除命令,清除晶片中的數據,並解除鎖定。然後重新下載運行代碼和數據,修改配置相關的熔絲位,最後再次配置晶片的鎖定位。
(7)使用ISP串列方式下載編程時,應配置SPIEN熔絲位為“0”。晶片出廠時SPIEN位的狀態默認為“0”,表示允許ISP串列方式下載數據。只有該位處於編程狀態“0”,才可以通過AVR的SPI口進行ISP下載,如果該位被配置為未編程“1”後,ISP串列方式下載數據立即被禁止,此時只能通過並行方式或JTAG編程方式才能將SPIEN的狀態重新設定為“0”,開放ISP。通常情況下,應保持SPIEN的狀態為“0”,允許ISP編程不會影響其引腳的I/O功能,只要在硬體電路設計時,注意ISP接口與其並接的器件進行必要的隔離,如使用串接電阻或斷路跳線等。
(8)當你的系統中,不使用JTAG接口下載編程或實時線上仿真調試,且JTAG接口的引腳需要作為I/O口使用時,必須設定熔絲位JTAGEN的狀態為“1”。晶片出廠時JTAGEN的狀態默認為“0”,表示允許JTAG接口,JTAG的外部引腳不能作為I/O口使用。當JTAGEN的狀態設定為“1”後,JTAG接口立即被禁止,此時只能通過並行方式或ISP編程方式才能將JTAG重新設定為“0”,開放JTAG。
(9)一般情況下不要設定熔絲位把RESET引腳定義成I/O使用(如設定ATMEGA8熔絲位RSTDISBL的狀態為“0”),這樣會造成ISP的下載編程無法進行,因為在進入ISP方式編程時前,需要將RESET引腳拉低,使晶片先進入復位狀態。
(10)使用內部有RC振盪器的AVR晶片時,要特別注意熔絲位CKSEL的配置。一般情況下,晶片出廠時CKSEL位的狀態默認為使用內部1MHz的RC振盪器作為系統的時鐘源。如果你使用了外部振盪器作為系統的時鐘源時,不要忘記首先正確配置CKSEL熔絲位,否則你整個系統的定時都會出現問題。而當在你的設計中沒有使用外部振盪器(或某鍾特定的振盪源)作為系統的時鐘源時,千萬不要誤操作或錯誤的把CKSEL熔絲位配置成使用外部振盪器(或其它不同類型的振盪源)。一旦這種情況產生,使用ISP編程方式則無法對晶片操作了(因為ISP方式需要晶片的系統時鐘工作並產生定時控制信號),晶片看上去“壞了”。此時只有使用取下晶片使用並行編程方式,或使用JTAG方式(如果JTAG為允許時且目標板上留有JTAG接口)來解救了。另一種解救的方式是:嘗試在晶片的晶體引腳上臨時人為的疊加上不同類型的振盪時鐘信號,一旦ISP可以對晶片操作,立即將CKSEL配置成使用內部1MHz的RC振盪器作為系統的時鐘源,然後再根據實際情況重新正確配置CKSEL。
(11)使用支持IAP的AVR晶片時,如果你不使用BootLoader功能,注意不要把熔絲位BOOTRST設定為“0”狀態,它會使晶片在上電時不是從Flash的0x0000處開始執行程式。晶片出廠時BOOTRST位的狀態默認為“1”。關於BOOTRST的配置以及BOOTLOADER程式的設計與IAP的套用請參考本章相關內容。

相關詞條

熱門詞條

聯絡我們