极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 93236|回复: 28

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

[复制链接]
发表于 2015-7-5 09:42:57 | 显示全部楼层 |阅读模式
本帖最后由 幻生幻灭 于 2017-2-15 10:41 编辑

系列教程传送门
世界最小的Arduino——ATTiny13上手全攻略1A简介
世界最小的Arduino——ATTiny13上手全攻略1B在Arduino IDE环境下的搭建
世界最小的Arduino——ATTiny13上手全攻略1C用Arduino来下载
世界最小的Arduino——ATTiny13上手全攻略2A跑马灯
世界最小的Arduino——ATTiny13上手全攻略2B呼吸灯
世界最小的Arduino——ATTiny13上手全攻略2C舵机测试仪
世界最小的Arduino——ATTiny13上手全攻略3A冬日雪花

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


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



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



3. 回到上一级目录,打开boards.txt文件,将ATTiny13的控制板配置信息粘贴到最后。
文件路径为:D:\Software\arduino-1.0.3\hardware\arduino\boards.txt
注意,Board.txt相当于一个硬件索引。如果这里的配置信息未添加的话,Arduino IDE的Board菜单中是无法显示新增的ATTiny13硬件。另外修改此文件后需要重启Arduino IDE才能生效。


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


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

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


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

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


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


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


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


建议大家到官方网站下载最新的驱动。我们可以在Adafruit网站下载最新的驱动。本驱动已经更新了对Win7 64位系统的支持。
下载链接:https://learn.adafruit.com/usbtinyisp/drivers


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


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


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


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

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

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


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


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


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


关于熔丝位的配置,大家也可以通过AVR Fighter了解更过,或者通过以下两个在线网站查询熔丝位配置有关设定。
http://www.elektronik-kompendium ... rfuse/tn13fuse.html
http://www.engbedded.com/fusecalc/
需要注意的是,如果Arduino硬件boards.txt中的熔丝位配置错误,Arduino也是无法进行bootloader操作的,会有类似以下错误报告。


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-7-5 10:00:16 | 显示全部楼层
楼主抓紧更新哦,挺好奇的
回复 支持 反对

使用道具 举报

发表于 2015-7-5 17:08:32 | 显示全部楼层
有买一个编程器的钱能买N个Atmega8了。。。果然是不合国情
回复 支持 反对

使用道具 举报

发表于 2015-7-6 02:56:24 | 显示全部楼层
可以使用 arduino 代替编程器,也可以使用一个 tiny85 做一个编程器,对了,tiny85 同时也可以做成高压编程器,用于恢复熔丝位.
回复 支持 反对

使用道具 举报

发表于 2015-7-6 12:48:43 | 显示全部楼层
多谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2015-7-9 10:53:55 | 显示全部楼层
好厉害, 学习!
回复 支持 反对

使用道具 举报

发表于 2015-9-10 00:02:18 | 显示全部楼层
之前買的 ATtiy13 終於到手了, 跟大大的方法安裝 Core13 出了問題, 好像不支援 Arduino IDE 1.6.5r2.
最後更新是 8 月 1 日, 但好像未有 1.6.X 的支援, support forum 中亦好像在研究中.
由於我只安裝了 1.6.5r2,

我之前裝了 damellis 的 attiny support (https://github.com/damellis/attiny), 可惜只支援 44,45,84,85.
在網上找到 arduino-tiny (https://code.google.com/p/arduino-tiny/) 也只支援 84/44/24 85/45/25 及 4313

請問是否有其他 attiny13 的 core 是支援 1.6.X 的?
回复 支持 反对

使用道具 举报

发表于 2015-9-10 00:14:00 | 显示全部楼层
幸好 arduino.cc 原來還有 1.0.6 的下載, 先下載來試試.
回复 支持 反对

使用道具 举报

发表于 2015-11-3 11:56:38 | 显示全部楼层
下载器很漂亮。
回复 支持 反对

使用道具 举报

发表于 2015-11-3 18:57:30 来自手机 | 显示全部楼层
慢慢来学习
回复 支持 反对

使用道具 举报

发表于 2015-12-21 15:13:25 | 显示全部楼层
慢慢来学习
回复 支持 反对

使用道具 举报

发表于 2016-7-18 15:17:34 | 显示全部楼层
楼主厉害!
但是为什么我的报错?
"output"was not declared in this scope
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-20 08:13:11 | 显示全部楼层
crbgz 发表于 2016-7-18 15:17
楼主厉害!
但是为什么我的报错?
"output"was not declared in this scope

估计你环境配置有问题
回复 支持 反对

使用道具 举报

发表于 2016-7-21 15:12:53 | 显示全部楼层
幻生幻灭 发表于 2016-7-20 08:13
估计你环境配置有问题

环境配置??????????????有办法解决吗?
回复 支持 反对

使用道具 举报

发表于 2016-9-13 16:59:31 | 显示全部楼层
请问attiny85的芯片怎么烧录啊?一直出现这个:initialization failed, rc=-1Double check connections and try again, or use -F to override this check.   麻烦指点1、2
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 16:24 , Processed in 0.047150 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表