世界最小的Arduino——ATTiny13上手全攻略1B在Arduino IDE环境下的搭建

系列教程传送门

世界最小的Arduino——ATTiny13上手全攻略1A简介

世界最小的Arduino——ATTiny13上手全攻略1B在Arduino IDE环境下的搭建

世界最小的Arduino——ATTiny13上手全攻略1C用Arduino来下载

世界最小的Arduino——ATTiny13上手全攻略2A跑马灯

世界最小的Arduino——ATTiny13上手全攻略2B呼吸灯

世界最小的Arduino——ATTiny13上手全攻略2C舵机测试仪







Arduino IDE 支持很多不同的 MCU,不是只有官方 Arduino 控制板才能用。只要在IDE环境中集成进去对应的硬件库即可。笔者使用的是Arduino1.0.3版本,下图是默认的软件界面。在Board中列出了所有官方支持的控制板型号,但这里面并没有提供ATTiny13。(为了直观显示,笔者已经过滤掉一些不常用的型号)。

01_DefaultIDE.png

2015-7-5 09:33 上传
(60.21 KB)




  1. 首先我们需要下载最新的ATTiny13硬件包,这里我们采用了@ smeezekitty制作的硬件库,这个库从2012年开始设计的,而最近一次更新是在2015年初,版本号是core13_20。特别说明一点的是,这个硬件库仅支持ATTiny13,并不支持其他ATTiny系列的单片机。

    下载链接:http://sourceforge.net/projects/ard-core13/

02_Download.png

2015-7-5 09:33 上传
(37.6 KB)






  1. 将下载好的压缩包解压缩到所安装的Arduino硬件库文件夹。在Windows系统下,其路径为D:\arduino\arduino-1.0.3\hardware\arduino\cores\core13(其中,hardware之前的路径根据个人电脑或Arduino版本号不同因人而异,后续路径请以此为参考)。解压缩以后注意要修改文件夹的名称从core13_20为core13,否则IDE的编译会由于路径无法识别而报错。

03_UnzipAndRenameToCore13.png

2015-7-5 09:33 上传
(57.87 KB)






  1. 回到上一级目录,打开boards.txt文件,将ATTiny13的控制板配置信息粘贴到最后。

    文件路径为:D:\Software\arduino-1.0.3\hardware\arduino\boards.txt

    注意,Board.txt相当于一个硬件索引。如果这里的配置信息未添加的话,Arduino IDE的Board菜单中是无法显示新增的ATTiny13硬件。另外修改此文件后需要重启Arduino IDE才能生效。

04_boardconfig.png

2015-7-5 09:33 上传
(48 KB)




  1. 彻底关闭并再次打开Arduino IDE,查看Tools > Board,就会发现新增了5个不同频率的ATTiny13硬件。这里我们可以选择ATTiny13A standalone 9.6Mhz。下面我们要用下载器上传程序的,而不是通过串口。Tools中的Serial Port在这里并不需要选择。

05_BoardSelect.png

2015-7-5 09:33 上传
(71.01 KB)




  1. 整个ATTiny13在Arduino IDE的软件环境到此就搭建完成了,要想下载ATTiny13我们还需要专用的ISP下载器,目前Arduino主流的下载器是由@Jeff Donaldson设计的USBtinyISP。这款下载器目前已经推出第二代版本了。如图所示,国内也有很多版本都是参考其设计的。

06_USBTINYISP2.jpg

2015-7-5 09:33 上传
(128.43 KB)



我们选用的是由OCROBOT出品的USBtinyISP。硬件连线原理图如下(本图转自elabz.com)

07_ICSP.png

2015-7-5 09:33 上传
(10.53 KB)





ISP (in-system programmer) 和ICSP (In-Circuit Serial Programming)都是在线编程接口,在这里它们是通用的。



我们需要将ATTiny13连接到下载器的ICSP接口。另外为了方便实验,我们用面包板搭建了整个电路,然后又在D3管脚(Pin 2)增加了一个LED和220欧的电阻。

08_Tiny13_01Blink_bb_fixed.png

2015-7-5 09:33 上传
(106.37 KB)





实际连线效果如图,我们在面包板上插入了长排针,这样就可以用杜邦线连接编程器和面包板了。

09_breadboard.jpg

2015-7-5 09:33 上传
(363.21 KB)




  1. 连接USBtinyISP下载器的USB和电脑,系统的硬件管理器会提示驱动无法安装。

10_DeviceManager.png

2015-7-5 09:33 上传
(19.22 KB)




  1. 如果更新了较旧版本的驱动,Windows系统会提示数字签名注册失败(Code 52)一类的报警。

11_DriverFault(NotUseForOldDrive).png

2015-7-5 09:33 上传
(69.86 KB)





建议大家到官方网站下载最新的驱动。我们可以在Adafruit网站下载最新的驱动。本驱动已经更新了对Win7 64位系统的支持。

下载链接:https://learn.adafruit.com/usbtinyisp/drivers

12_Download.png

2015-7-5 09:33 上传
(42.74 KB)





正常更新驱动后即可识别硬件为USBTiny。

13_Driver.png

2015-7-5 09:33 上传
(55.24 KB)





再次确认下在设备管理器中的硬件显示也正常了。

14_DriverDone.png

2015-7-5 09:33 上传
(29.05 KB)




  1. 在Tools > Programmer中选择USBtinyISP下载器

15_SelectUSBTinyISP.png

2015-7-5 09:33 上传
(55.21 KB)




  1. 综上,整个ATTiny13的下载环境也搭建完成了。打开Arduino的样例程序File > Examples > 01.Basics > Blink,这里需要把int led = 13修改为3。因为ATTiny13总共才8个引脚,除了VCC、GND和RST,实际有效IO只有5个。点一下编译按钮,可以看到ATTiny13的容量是1024 bytes,整个Blink需要占用384 bytes。

16_Blink.png

2015-7-5 09:33 上传
(30.16 KB)



这里推荐使用D3或D4管脚进行试验,因为这两个管脚不会占用ISP下载端口的引脚。



值得一提的是,@ smeezekitty制作的ATTiny13库对Arduino代码进行了大量的优化,如果我们切换回Arduino UNO再点编译的话,就会发现整个Blink程序需要占用1084 bytes的容量,而这个体积的代码是根本是无法下载到ATTiny13那可怜的1024 Bytes中去的。

17_BlinkUNO.png

2015-7-5 09:33 上传
(30.11 KB)




  1. 在上传程序之前,我们还需要对ATTiny13进行Bootloader烧录。点击Tools > Burn Bootloader,一秒钟都用不上就完成了。

20_Bootloader.png

2015-7-5 09:33 上传
(47.41 KB)





实际上ATTiny13并没有什么Bootloader,但这个操作会将之前选择不同频率主控板时对应的高低熔丝位配置给烧进去。我们可以使用avrdude-GUI来读取熔丝位配置,按照图示顺序依次选择avrdude.exe路径,选择Programmer编程器为USBTiny,选择Device设备是ATTiny13,然后点Fuse中的Read读取熔丝位状态是0xFF和0x7A。正如我们选择的主控板是ATTiny13 9.6Mhz,这里的熔丝位数值与之前我们导入Boards.txt的配置信息是一致的。

21_Fuse1.png

2015-7-5 09:33 上传
(58.37 KB)





当然我们还可以使用avrdude-GUI进行下载,本软件支持很多款下载器,当然也会支持USBtinyISP。其实arduino的IDE也是采用avrdude下载的。不仅如此,我们还可以通过本软件实现芯片熔丝位配置,Flash HEX和EEPROM文件的读写操作。但要小心的是,熔丝位一定不要随意修改,笔者就不小心锁死过1片ATTiny13,锁死基本就可以丢掉了。(除非你有高压编程器)

22_fuse.png

2015-7-5 09:33 上传
(51.25 KB)





关于熔丝位的配置,大家也可以通过AVR Fighter了解更过,或者通过以下两个在线网站查询熔丝位配置有关设定。

http://www.elektronik-kompendium ... rfuse/tn13fuse.html

http://www.engbedded.com/fusecalc/

需要注意的是,如果Arduino硬件boards.txt中的熔丝位配置错误,Arduino也是无法进行bootloader操作的,会有类似以下错误报告。

23_BootloaderERR.png

2015-7-5 09:33 上传
(32.16 KB)




  1. 点击File > Upload Using Programmer按钮上传程序。进度条完成后会显示Done Uploading。就可以看到3号管脚的LED在不停的闪烁了。ATTiny13的“Hello World!”就算完成了。

24_Upload.png

2015-7-5 09:33 上传
(48.57 KB)



via - 极客工坊

标签: Arduino教程