2014/10/05

Arduino:stk500_getsync(): not in sync

燒錄時,若看到錯誤訊息「avrdude: stk500_getsync(): not in sync: resp=0x00」,雖然知道這代表著電腦端的燒錄程式avrdude不能與微控制器內的bootloader進行溝通,但卻無法知曉錯誤的源頭在哪,因為可能出錯的地方太多了。

底下列出可能導致此錯誤的原因,以及解決辦法:

原因:「工具-板子(Tools-Board)」與「工具-序列埠(Tools-Serial Port)」沒選好
辦法:確認你的板子到底是哪一塊,確認它所連接的序列埠是哪一個,重新設定正確的值

原因:序列埠被佔用了
辦法:關閉佔用序列埠的軟體,或電腦重開機

原因:驅動程式壞了、沒裝好
辦法:重新安裝驅動程式

原因:零件影響了燒錄所需的線路,譬如Uno板燒錄時須經由腳位0與1的線路
辦法:燒錄時拔除相關接線、暫時先拔掉擴充板

原因:舊板子與某些較小型的板子,需要自己按板子上的Reset鍵
辦法:觀看avrdude燒錄時輸出的訊息,在適當的時機按下Reset鍵;多試幾次,嘗試在不同的時間點按下

原因:若是自己買「USB轉Serial介面」模組再加上微控制器晶片,有可能TX與RX接反了
辦法:反過來接試試看

原因:微控制器裡的bootloader壞了,或根本沒有bootloader
辦法:找個ISP燒錄器,重新燒錄bootloader

原因:不明
辦法:電腦重開機

原因:不明
辦法:重新啟動Arduino IDE

原因:不明
辦法:重新拔插USB連接線

原因:不明
辦法:換插別的USB埠

原因:不明
辦法:改用USB集線器或改為直接插電腦的USB埠

原因:不明
辦法:換條USB線

6 comments:

  1. 也有可能是沒有選到正確的板子型號(剛剛發生哈哈)

    ReplyDelete
    Replies
    1. thanks,這點我也有寫上。

      Delete
  2. 不知是否有關, 在測試 serial.write 後, 常發生問題. 正學習如何改用其他腳模擬 serial

    ReplyDelete
  3. 我的Arduino UNO 也出現過類似的問題。後來花50元,買了一顆新的IC有含boot loader. 板子就恢復正常。

    ReplyDelete
  4. 感謝,我換了Usb port就沒問題了

    ReplyDelete