當前位置:編程學習大全網 - 編程語言 - 編程模式切換失敗是編程錯誤嗎?

編程模式切換失敗是編程錯誤嗎?

AVR第壹次使用需要配保險絲。請仔細看看!

淺談avr熔斷器的使用和設置

看到這麽多人不會使用和誤操作AVR的熔絲位,給個參考。

5.1.1正確配置AVR熔絲位。

AVR熔絲位的配置是壹項細致的工作,用戶往往會忽略其重要性或者覺得難以掌握。下面給出了配置AVR熔絲位的壹些要點和相關註意事項。關於ATmega128熔絲位的具體定義和作用,請參考本書相關章節,附錄中會給出完整的匯總表。

(1)在AVR的器件手冊中,熔絲位的狀態是用編程和未編程來定義的,“未編程”是指熔絲狀態為“1”(禁止);“已編程”表示保險絲狀態為“0”(允許)。因此,配置熔絲位的過程實際上是“將熔絲位配置成未編程狀態“1”或編程狀態“0”。

(2)使用通過打勾“√”來確定熔絲位狀態值的編程工具軟件時,請先仔細閱讀軟件的說明,弄清楚“√”是指將熔絲位狀態設置為“0”還是“1”。

(3)在CVAVR中使用編程下載程序時,要特別註意。由於最初打開CVAVR的編程下載界面時,大多數熔絲位的初始狀態被定義為“1”,所以不要使用其編程菜單選項中的“全部”選項。此時“all”選項會用熔絲位的初始狀態定義來配置芯片的熔絲位,但實際上往往不是用戶要求的配置結果。如果要使用“全部”選項,應該先使用“讀取->;熔絲位”讀取芯片中熔絲位的實際狀態,然後使用“全部”選項。

(4)在使用新的AVR芯片之前,應先檢查其熔絲位的配置情況,然後根據實際需要配置熔絲位,並記錄每個熔絲位的狀態以備備案。

(5)5)AVR芯片加密後,只能讀取芯片內部Flash和E2PROM中的數據,仍然可以讀取fuse位的狀態,但不能修改配置。芯片擦除命令是清除Flash和E2PROM中的數據,同時將兩個鎖定位的狀態設置為“11”,處於解鎖狀態。但是芯片擦除命令不會改變其他熔絲位的狀態。

(6)正確的操作程序是下載運行代碼和數據,配置相關的熔絲位,最後在芯片未鎖定時配置芯片的鎖定位。芯片鎖定後,如果發現熔絲位配置錯誤,必須使用芯片擦除命令清除芯片中的數據並解鎖。然後重新下載運行代碼和數據,修改配置相關的熔絲位,最後重新配置芯片的鎖位。-

(7)在ISP串行模式下下載編程時,SPIEN fuse位應設置為“0”。芯片出廠時,SPIEN位的狀態默認為“0”,表示允許ISP以串行方式下載數據。只有當該位處於編程狀態“0”時,ISP才能通過AVR的SPI端口下載。如果該位被配置為未編程的“1”,ISP數據的串行下載將被立即禁止。此時,只有通過並行或JTAG編程才能將SPIEN的狀態復位為“0”,ISP才能打開。壹般來說,SPIEN的狀態應該保持在“0”,這樣其管腳的I/O功能就不會因為允許ISP編程而受到影響。只要設計好硬件電路,就要把ISP接口和並聯的設備隔離開,比如用串聯電阻或者斷開跳線。

(8)當您的系統不使用JTAG接口下載編程或實時在線仿真調試,而需要使用JTAG接口的管腳作為I/O口時,熔絲位JTAGEN的狀態必須設置為“1”。芯片出廠時,JTAGEN默認狀態為“0”,表示允許JTAG接口,JTAG的外部引腳不能作為I/O口。當JTAGEN的狀態設置為“1”時,JTAG接口立即被禁止。此時,JTAG可以被重置為“0”,並且只能通過並行模式或ISP編程模式打開。

(9)壹般不要設置fuse位來定義reset引腳為I/O使用(例如將ATmega8 fuse位RSTDISBL的狀態設置為“0”),這樣會使ISP的下載編程無法進行,因為RESET引腳需要拉低才能使芯片在進入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功能,註意不要將fuse位BOOTRST設置為“0”狀態,這樣會使芯片上電時無法從Flash的0x0000開始執行程序。芯片出廠時,BOOTRST位的狀態默認為“1”。BOOTRST的配置、BOOTLOADER程序的設計、IAP的應用請參考本章。

  • 上一篇:家用絞肉機有哪些比較好的品牌?
  • 下一篇:數控技術專業的知識技能
  • copyright 2024編程學習大全網