作者dsplab (魔法の妖精)
看板Electronics
标题[心得] Arduino与乙级检定(V-USB)之整合应用1
时间Sat May 30 14:30:18 2015
电脑硬体装修乙级检定第一站电路采用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://www.labor.gov.tw/uploaddowndoc?file=/publabor/jobclass/201501101251070.rar&flag=doc
而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)的位置。
--
DSP研究室 www.dsplab.idv.tw
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.229.86.87
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1432967428.A.388.html
1F:推 kingstong: 看起来很像组合语言啊,不需用到ARDUINO晶片,8051就够 06/02 10:57
2F:→ kingstong: 用了,8051一颗现在售价为50元,不过需要烧录的软硬体 06/02 10:59
3F:→ kingstong: 现在是改用KEIL C,比组合语言更方便简洁,编译完成後一] 06/02 11:01
4F:→ kingstong: 样会产生副档名为.HEX的档案,然後需要用到烧录的程式 06/02 11:02
5F:→ kingstong: 和烧录版及与电脑的接线.0x0F00~0FFF这是记忆体位址 06/02 11:06
6F:→ kingstong: 吧?!相当的相似啊! 06/02 11:06