[心得] Arduino与乙级检定(V-USB)之整合应用

楼主: dsplab (星野夢美)   2015-05-31 08:48:49
电脑硬件装修乙级检定第一站电路采用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://www.labor.gov.tw/home.jsp?pageno=201110210028
12000 - 电脑硬件装修(乙级) - http://goo.gl/Sx5qVm
而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),在12Mhz晶振下
的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
电脑硬件装修乙级检定第一站电路  - http://ge.tt/9ykn9QH2/v/0?c
电脑硬件装修乙级检定第一站韧体  - http://ge.tt/6sA1AQH2/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等也可以。
作者: soheadsome (师大狗鼻哥)   2015-06-02 09:57:00
乙级是有改过题目了?好像跟我高职时期内容不同
作者: MasterChang (我爱ASM)   2015-06-02 22:58:00
嗯...题目去年就改了。
作者: liang168 (小强)   2015-06-09 18:49:00
我考时是做Gal22v10 QBasic 还是最后一届之后就改了

Links booklink

Contact Us: admin [ a t ] ucptt.com