.
本篇為使用 USBasp/ USBISP來進行 IC燒錄的方式,以ATMEGA2560來說,燒錄方式有很多,例如
1. 使用USB-Type B連接PC產生虛擬Comport,在利用官方提供的IDE/或是其他軟體的插件(sublime / nodepad++等)進行燒錄
IDE設定選要為 AVRISP MKII
2. 使用Arduino UNO / MEGA/ NANO 等充當燒錄器進行燒錄
在設定上會有點不同,在設定選項要選擇 Arduino as ISP
此燒錄方式為使用 SPI進行燒錄
3. 使用USBISP / USBasp進行燒錄,此燒錄方式不需使用官方的IDE進行燒錄
但需要藉由PROGISP等軟體進行燒錄,此燒錄並非使用 .ino
要使用十六進位檔(Hex)進行燒寫
本篇重點為第三種方式的詳細說明,當然此燒錄器也可以燒寫各種不同的單晶片,例如 51系列 AVR系列的IC
詳細列表如下
支援晶片清單
51系列:
AT89S51、AT89S52、、AT89S53、AT89S8252
AVR系列:
ATTiny12(L)、ATTiny13(V)、ATTiny15(L)、ATTiny24(V)、ATTiny25(V)、ATTiny26(L)、ATTiny2313(V)、ATTiny44(V)、ATTiny45(V)、ATTiny84(V)、ATTiny85(V)、AT90S2313(L)、AT90S2323(L)、AT90S2343(L)、AT90S1200(L)、AT90S8515(L)、AT90S8535(L)、ATMEGA48(V)、ATMEGA8(L)、ATMEGA88(V)、ATMEGA8515(L)、ATMEGA8535(L)、ATMEGA16(L)、ATMEGA162(V)、ATMEGA163(L)、ATMEGA164(V)、ATMEGA165(V)、ATMEGA168(V)、ATMEGA169(V)、ATMEGA169P(V)、ATMEGA32(L)、ATMEGA324(V)、ATMEGA325(V)、ATMEGA3250(V)、ATMEGA329(V)、ATMEGA3290(V)、ATMEGA64(L)、ATMEGA640(V)、ATMEGA644(V)、ATMEGA645(V)、ATMEGA6450(V)、ATMEGA649(V)、ATMEGA6490(V)、ATMEGA128(L)、ATMEGA1280(V)、ATMEGA1281(V)、ATMEGA2560(V)、ATMEGA2561(V)、AT90CAN32、AT90CAN64、AT90CAN128、AT90PWM2(B)、AT90PWM3(B)等
USBasp / USBISP普遍樣式如下,也有賣無外殼版 或是外殼標示有差異的樣式
不過其實都是一樣的東西
但如果是需要安裝driver的版本,抓到裝置後需進行軟體更新,可建議使用Zadig進行驅動更新,插入USBASP至PC後,打開Zadig,然後找到USBASP,driver部分選擇libusbk -> replace driver,更新完driver後再使用Arduino IDE,燒錄選項選擇usbasp然後按bootloader即可燒錄
不過大部分情況買到的都是不需安裝driver的版本,此版本是中國特製的,因此需搭配相對應的軟體才可使用
Step1: 下載程式 PROGISP1.7.2
如果更高版本可能會抓不到 IC Type,所以使用 1.7.2版
Step2: 將USBASP接上PC
此時裝置管理員多出一個USB輸入裝置 USB-HID
Step3: 打開PROGISP1.7.2 進行設定
本次IC使用ATmega2560,因此chip select為 ATmega2560
主頁面勾選以下幾項
接著依照IC型號設定 Fuse
Fuse參數 可以到 arduino-nightly\hardware\arduino\avr\board.txt找到
例如下圖
本篇為mege2560 因此 low fuse =FF ; high fuse = D8 ; extend fuse = FD
進著在選擇要燒錄的Hex檔,可以在線上找HEX生成工具
也可以使用Arduino IDE進行Hex檔生成
以下為生成範例
使用範例Blink
開啟後按編譯
接著到C槽Temp資料夾可以找到該HEX檔,此資料夾為系統隱藏
需要顯示隱藏資料夾才可以看到
路徑為 C:\Users\你的使用者名稱\AppData\Local\Temp\arduino_build_流水號
要設定Fuse兩次的原因為在第一次更新Fuse時會把 Reset腳位變成輸出,因此在燒錄一次後就會無法在燒錄第二次。用上述操作會先把Reset設定為input,然後就可以重新進行IC 燒寫
注意: Fuse不要亂改,要不然 IC可能會被鎖死 導致之後都無法更新程式
如果誤鎖需要外接有源石英晶體或是使用另一塊Arduino的晶振來進行解除