Arduino與電腦硬體裝修乙級檢定(V-USB)之整合應用
[回到前頁]
電腦硬體裝修乙級檢定的第一站電路採用V-USB的方式,利用
ATMega8/8A將USB訊號解析出來提供一個8位元輸出與2位元控制訊
號,因為採用HID人機介面的規格,所以免除了PC上的驅動程式,
但還是提供一個 DLL檔(USBIO.dll)供PC上程式設計使用與燒入
ATMega8/8A的韌體(main.hex),燒入時保險絲值建議為High為0xCC,
Low為0xFF,Lock Byte為0x0F。
電腦硬體裝修乙級檢定第一站所需韌體與PC端測試程式之下載處如下:
勞動部勞動力發展署技能檢定中心-術科測試場地機具設備評鑑與補助
http://www2.wdasec.gov.tw/home.jsp?pageno=201109290023
12000 - 電腦硬體裝修(乙級) - DLL檔(USBIO.dll)與韌體(main.hex)
而Arduino發展系統則是在AVR晶片下,提供大量的應用程式碼與整合式
發展介面的環境,同時因為是開放式系統,所以一些相容的硬體與模組
也就應運而生!Arduino連接PC的方式是利用RS-232(COM)的方式,將編
譯好的程式碼利用事先燒入AVR晶片中的Bootloader,採用 ISP方式燒入
快閃記憶體然後執行,因此只要將COM埠中的TXD、RXD、DTR (或RTS)
、GND四隻腳,將其訊號轉成標準的TTL電壓準位再連接AVR晶片的RXD
、TXD、RESET、GND,即可在Arduino整合發展系統(IDE)環境下,編譯
與下載使用者的程式。
本文就是要將兩套系統合而為一,同時提供Arduino發展系統所需的硬體
電路與電腦硬體裝修乙級檢定第一站的相容電路,讓人可以使用Arduino
發展系統的程式開發與下載功能,執行Arduino所有的應用程式,也可以
將電腦硬體裝修乙級檢定第一站的韌體(main.hex)下載到ATMega8/8A中,
提供在PC上練習乙級檢定之10個題組的程式設計使用。
原始Arduino UNO的晶片是使用ATMega8/8A,操作頻率是16Mhz,但是
電腦硬體裝修乙級檢定第一站的V-USB電路卻是使用12Mhz,如果直接
燒入供ISP下載使用的Bootloader碼 (使用optiboot_atmega8.hex),在12
Mhz晶振下的Baud Rate會從117647 bps(誤差2.12%)降到88235 bps (誤
差23.4%),將無法正確與PC溝通,故必須修改原始的Bootloader碼,將
Baud Rate調整到115384 bps (誤差0.16%),同時因為ATMega8逐漸停
產,改以ATMega8A取代,不過因為不同批號生產的ATMega8A在燒入
Bootloader碼後,開機時的暫存器UBRRH不一定會清為零,如此將造成
Baud Rate的設定錯誤,因此建議修改原始Bootloader碼
(optiboot_atmega8.hex)如下:
位址 資料 原始的程式碼
000F0B(1E16) 82E0 LDI R24,0x02
000F0C(1E18) 8BB9 OUT UCSRA,R24
000F11(1E22) 80E1 LDI R24,0x10
位址 資料 修改後程式碼
000F0B(1E16) 10BC OUT UBRRH,R1
000F0C(1E18) 599A SBI UCSRA,U2X
000F11(1E22) 8CE0 LDI R24,0x0C
先使用ATMEL的USB ISP燒錄器,將VCC、GND、SCK、MISO、MOSI、
RESET共6支腳,連接ATMega8/8A所對應的接腳,同時將12Mhz晶振與
20pF電容連接在ATMega8/8A所對應的接腳,執行燒錄程式(例如Progisp20)
,先讀入原始的Bootloader碼 (optiboot_atmega8.hex),然後再參考上面所
提到需要修改的資料,設定保險絲值為High為0xCC,Low為0xFF,Lock
Byte為0x0F,接者就可以將修改後的 Bootloader 碼燒入
ATMega8/8A中
0x0F00∼0FFF (0x1E00∼1FFF)的位置。
原始的Optiboot_ATMega8.hex - http://ge.tt/1Ecf7QH2/v/0?c
修改後Optiboot_ATMega8_12Mhz.hex - http://ge.tt/3Yza8QH2/v/0?c
Arduino Uno 的電路圖 - http://goo.gl/sILWOm
Arduino-1.0.6 免安裝版 - http://goo.gl/5NR7Ah
電腦硬體裝修乙級檢定第一站電路 - https://imgur.com/a/mxx925j
電腦硬體裝修乙級檢定第一站韌體 - http://ge.tt/9ykn9QH2/v/0?c
或從\Arduino-1.0.6\hardware\arduino\bootloaders\optiboot中也可以看
到Optiboot_ATMega8.hex,在正確燒入Bootloader碼後,可以參考 Arduino
Uno的電路圖與電腦硬體裝修乙級檢定第一站電路,從事個別的實驗。
其中在\Arduino-1.0.6\hardware\arduino\boards.txt,請增加以下資料:
##############################################################
YiJi.name=Arduino with ATmega8 for YiJi
YiJi.upload.protocol=arduino
YiJi.upload.maximum_size=7680
YiJi.upload.speed=115200
YiJi.bootloader.low_fuses=0xFF
YiJi.bootloader.high_fuses=0xCC
YiJi.bootloader.path=optiboot
YiJi.bootloader.file=Optiboot_ATmega8_12Mhz.hex
YiJi.bootloader.unlock_bits=0x3F
YiJi.bootloader.lock_bits=0x0F
YiJi.build.mcu=atmega8
YiJi.build.f_cpu=12000000L
YiJi.build.core=arduino
YiJi.build.variant=standard
##############################################################
如此就可以在Arduino整合發展系統(IDE)中的,「工具/板子」中找到新增
的資料「Arduino with ATmega8 for YiJi」,「工具/序列埠」請配合所使用
的COM編號,「工具/燒錄器」要選擇為「AVR ISP」,連接PC的RS-232
再轉換成為TTL的訊號後的TXD、RXD、DTR、GND,參考Arduino Uno 的
電路圖,與燒入Bootloader碼的ATMega8/8A連接後,即可將編譯好的程式
碼下載到晶片中。
如果要燒入乙級檢定第一站電路的韌體main.hex,可以利用XLoader這套程式,
XLoader - http://russemotto.com/xloader/XLoader.zip
XLoader的devices.txt檔 - http://ge.tt/4utFAQH2/v/0?c
記得在XLoader的devices.txt中加入新的資料如下:
YiJi(ATmega8);m8;stk500;115200;
選擇YiJi(ATmega8)與COM編號、Hex檔路徑與檔名,就可以利用Bootloader碼,
將乙級檢定第一站電路的韌體燒入晶片中,練習PC上10個題組的程式設計。
PS:請勿將RS-232的高壓訊號直接與ATMega8/8A連接,必須利用轉換電路,
例如MAX232、HIN232等電路轉成TTL的電氣標準後,才可與ATMega8/8A連
接,或是直接使用USB轉UART TTL的模組或下載線,例如FT232、PL2303、
CP2102、CH340等也可以。
[回到上面]