正確配置AVR
ATmega128熔絲位元
ATmega128 lock bits byteATmega128 Fuse Bits
ATmega128 lock bits & Fuse Bits
ponyProg2000's screenshot “√”表示:Enable (0) (允許)
IAR Embedded
Workbench's screenshot “√”表示:Enable
(0) (允許)
ATMEL studio
6's screenshot “√”表示:Enable (0) (允許)
對AVR熔絲位元的配置是比較細緻的工作,用戶往往忽視其重要性,或感到不易掌握。下面給出對AVR熔絲位元的配置操作時的一些要點和需要注意的相關事項。
(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中的資料清除,並同時將兩位元鎖定位元(lock bits)狀態配置成“11” ,處於無鎖定狀態。但晶片擦除命令並不改變其他熔絲位元的狀態(Fuse bits , Extended bits)。
(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” 。
ATmega128中重要熔絲位元的配置
(1)熔絲位M 103C 。M 103C 的配置將設定ATmega128是以ATmega103相容方式工作運行還是以ATmega128本身的方式工作運行。ATmega128在出廠時M 103C默認狀態為“0” ,即默認以ATmega103相容方式工作。當用戶系統設計使晶片以ATmega128方式工作時,應首先將M 103C的狀態配置為“1” 。
(2)CLKSEL0..3。CLKSEL0、CLKSEL1、CLKSEL2、CLKSEL3用於選擇系統的時鐘源。有五種不同類型的時鐘源可供選擇(每種類型還有細的劃分)。晶片出廠時的默認情況為CLKSEL3..0和SUT1..0分別是“0001” 和“10” 。即使用內部1MHz RC振盪器,使用最長的啟動延時。這保證了無論外部振盪電路是否工作,都可以進行最初的ISP下載。對於CLKSEL3..0熔絲位元的改寫需要十分慎重,因為一旦改寫錯誤,會造成晶片無法啟動。
(3)JTAGEN。如果不使用JTAG介面,應將JTAGEN的狀態設置為“1” ,即禁止JTAG,JTAG引腳用於I/O口。
(4)SPIEN。SPI方式下載資料和程式允許,默認狀態為允許“0” 。一般保留其狀態。
(5)WDTON。看門狗的計時器始終開啟。WDTON默認為“1” ,即禁止看門狗的計時器始終開啟。如果該位設置為“0” 後,看門狗的計時器就會始終打開,不能被內部程式控制了,這是為了防止當程式跑飛時,未知代碼通過寫寄存器將看門狗計時器關斷而設計的(儘管關斷看門狗計時器需要特殊的方式,但它保證了更高的可靠行)。
(6)EESAVE。執行擦除命令時是否保留E2PROM中的內容,默認狀態為“1” ,表示E2PROM中的內容同Flash中的內容一同擦除。如果該位元設置為“0” ,對程式進行下載前的擦除命令只會對FLASH代碼區有效,而對E2PROM區無效。這對於希望在系統更新程式時,需要保留E2PROM中資料的情況下是十分有用的。
(7)BOOTRST。決定晶片上電起動時,第一條執行指令的位址。默認狀態為“1” ,表示起動時從0x0000開始執行。如果BOOTRST設置為“0” ,則起動時從BOOTLOADER區的起始位址處開始執行程式。BOOTLOADER區的大小由BOOTSZ1和BOOTSZ0決定,因此其首位址也隨之變化。
(8)BOOTSZ1和BOOTSZ0:這兩位確定了BOOTLOADER區的大小以及其起始的首位址。默認的狀態為“00” ,表示BOOTLOADER區為4096字,起始首位址為0xF000。
注:不同AVR的熔絲也不同,使用前必須仔細查看晶片手冊。
要重視手冊學習,不僅要掌握如何使用,也要從根本上認識和掌握原理和結構。對於硬體工程師來將,資料手冊是真正的“經書”,其他都是“修練經驗”。不熟讀“經書”,你無法修煉成“仙”的。
正確配置AVR
ATmega169熔絲位元
ATMega169, ATMega169L, ATMega169V, ATMega169P, ATMega169PV, ATMega169PAAVR ATmega169 Lock bits
AVR ATmega169 Fuse bits
AVR
ATmega169 Extended bits
AVR
ATmega169PV Extended bits
ponyProg2000's
screenshot “√”表示:Enable (0) (允許)
IAR Embedded
Workbench's screenshot “√”表示:Enable (0)
(允許)
ATMEL studio
6's screenshot “√”表示:Enable (0)
(允許)
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。