1. 程式人生 > >AVR燒錯熔絲到恢復的一次經驗----詳細分析與解決方案

AVR燒錯熔絲到恢復的一次經驗----詳細分析與解決方案


AVR燒錯熔絲到恢復的一次經驗----詳細分析與解決方案
---winsu(ant,ant的筆記的blog)

環境
目標器件:MEGA64L
燒錄軟體:PonyProg2000 (Version  2.06c Beta  Jul 27 2003)
燒錄硬體:按http://www.LancOS.com用224自制的燒錄線

燒錄過程
新制了幾塊DEMO板,焊好後,燒第一塊OK。燒第二塊時,用了錯誤的步驟:
1)讀一次“Configurion and Security bits”,發現好象全都打勾,先不管它。
2)載入HEX檔案與EEPROM檔案到PonyProg2000。
3)按“Write 

DEVICE”,想寫入FLASHEEPROM

現象
再燒錄時,出現“Alert”視窗,資訊“DEVICE Missing or UNKNOWN DEVICE(-24)”。關電再開,也如此。
讀熔絲位,也是如此。

分析
因開始燒錄是OK的,排除軟硬體原因,所以明顯是熔絲位燒錯所致。
但我只是讀熔絲位,還未寫熔絲,應該沒影響MEGA出廠的預設設定?其實上面的“燒錄過程”是錯誤的:
1)燒錄前應燒錄熔絲位,或者先設定正確的熔絲資料;
2)“Write DEVICE”包括了燒熔絲資料,不是隻寫入FLASHEEPROM

解決方案--硬體
通過網上搜索,錯誤熔絲資料造成不能再寫入可用商用程式設計器、自制並行燒錄器及外加有源晶振等方法解決。

我採用類似第三種方式的辦法----“外加時鐘源”。這因為我還有另一塊工作正常的板子。
找來一塊正常的板(1板),與焊有熔絲資料錯誤MEGA64的板(2板),焊上3條導線:一條是電源正極、一條是地線、一條是時鐘線。這裡特別注意一下時鐘線。
MEGA64L(其他AVR也如此)的時鐘腳有2條:XTAL2(23腳)與XTAL1(24腳),一般在使用外部石英時,並不關心哪條是輸入哪條是輸出的

。查詢DataSheet(官方中文版P36):
“XTAL1 和XTAL2 分別為用作片內振盪器的反向放大器的輸入和輸出”
可知XTAL1是輸入,而XTAL2是輸出。那麼,1板與2板的連線應該是這樣:
1板的時鐘輸腳出連線到2板的時鐘輸入腳,也就是1板的XTAL2(23腳)連線到2板的XTAL1(24腳)。

如果板1與板2獨立用電源的話,可省去電源正極的連線線。

解決方案--軟體
開啟電源開關,執行PonyProg2000,按“Configurion and Security bits”,"Read"後,不再出現“Alert”視窗,但操作FLASH

EEPROM時,均會彈出“Alert”視窗。
試了幾次後,想放棄嘗試,換一塊MEGA64L。但與之前相比,讀熔絲時不報錯,心想可能是隻能操作熔絲了。於時,再試:
1)把燒錄線插入1板,讀出燒絲資料,拔出燒錄線插入2板,寫熔絲,再試讀寫FLASHEEPROM,失敗。
2)把燒錄線插入2板,讀其熔絲資料,按1板的熔絲進行修改,寫入2板。拔電,再開電,寫FLASHEEPROM,成功。讀出熔絲,與原寫入的相同,OK。
注:2)的步驟我以前試過,這樣做比較好,可能與軟體有關。

總結
1)對新器件,必須按正確步驟燒錄,先處理好熔絲再操作FLASHEEPROM。注意燒錄器件與寫FLASHEEPROM的區別,不同的軟體可能處理不同。
2)熔絲位錯誤不能燒錄,根據該次經驗,根本上是時鐘的原因(不知有沒有其他原因),只要處理好時鐘就能解決。熔絲錯誤,MEGA不能啟動時鐘,也就不能工作了,這時外加時鐘即可。這樣的話,就不一定用程式設計器來解決,外加有源時鐘或時鐘源更好,因為如果是SMD的MEGA,如M64之類,把一個64腳的貼片焊下來,不是一件易事。
3)解決問題有很多種,往往最簡單的辦法是最有效的----對軟體程式設計也很有效的一條定理。