用Arduino UNO烧录Attiny13A芯片
用Arduino UNO烧录Attiny13A芯片
这一款超小型的芯片可能是用的人较少的缘故,无论是中文的或者英文的资料,大部分都已经不能完全照搬照抄了。而只能自己尝试把众多信息放在一起去研究它——所以这个记录稍显细致一些。
一、为什么是Attiny13A
后面会用到https://github.com/MCUdude/MicroCore这个网址,是Arduino IDE用来支持Attiny13A的库,里面给出了使用Attiny13A的理由:超级便宜、直插和贴片封装都有、与Attiny85代码相同、可以使用Arduino大部分的函数和少量的几个库。这在上面的网址上都有介绍。
二、安装Arduino IDE支持库
2.1 用Arduino IDE开发板管理器自动安装(由于墙的原因,极可能不成功)
首先保证Arduino IDE的版本为1.6.13及以上,之后,在Arduino IDE的File/Preferences里即“文件/首选项”里面输入以下链接
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
之后打开Tools/Board/Boards Manager...菜单,之后在搜索栏里填写Attiny,然后在列表里找到MicroCore by MCUdude安装它。我这里已经安装好了,因此按钮显示的是Remove。
若在Win10里,它很可能被自动安装到
C:\用户\user\AppData\Local\Arduino15\packages\MicroCore
很多时候,这个目录是不允许打开的(可以申请权限),所以一次就能安装正确是最好的,如果不能一次性安装正确,就比较麻烦。
2.2 手动安装(偶尔会出找不到库的问题)
在https://github.com/MCUdude/MicroCore/releases/tag/v1.0.7页面上下载MicroCore-1.0.7.zip文件回来,然后到Arduino官方网站下载一个zip版的Arduino IDE,把MicroCore-1.0.7.zip解压缩在Arduino目录下的hardware目录里面,打开Arduino IDE,在Boards菜单里,就应该能够看到Attiny13了。
三、开始烧录Attiny13A
3.1 把Arduino UNO板制作成烧录器
打开Arduino IDE,然后选择File/Examples/11.ArduinoISP/ArduinoISP,插上Arduino UNO板,烧录。此时Arduino就成为烧录器了。
3.2 给Attiny13A烧录BootLoader
所谓“BootLoader”,就是未来在芯片里的我们制作的程序在工作之前要运行的一小段程序,是用来初始化的。Arduino开发板就是提前烧录了BootLoader,才使我们用起来非常方便。
3.2.1 为了给Attiny13A烧录BootLoader,需要给Arduino和Attiny13A接线。Attiny13A的引脚排序,前面已经有图示,接线如下:
ATtiny13A leg 1 -> Arduino 10
ATtiny13A leg 5 -> Arduino 11
ATtiny13A leg 6 -> Arduino 12
ATtiny13A leg 7 -> Arduino 13
ATtiny13A leg 8 -> Arduino 5v
ATtiny13A leg 4 -> Ground (GND)
3.2.2 设置Arduino IDE
到Tools菜单下,选择Board: ATtiny 13,然后菜单会跳出一堆可设置的项目,设为图中所示:
Arduino UNO插好后,Port设为Arduino UNO开发板的端口号。设Programmer: Arduino as ISP(MicroCore)。
3.2.3 以上项目设置好之后,确认Arduino已经在前面制作成烧录器,并在Tools里面设置好端口,Arduino UNO与Attiny13A之间接线正确,点击Burn BootLoader。Attiny13a立即被烧录,同时在IDE中显示烧录进度,并在最后的阶段显示一些错误信息。不必理会,如果一切操作正确,已经烧录完毕,现在的这个Attiny13A已经具备了Arduino开发板的基本特征,完全可以看成是自制的Arduino了,它与Arduino管脚间的对应关系,在最最前面的图上画着,ADC、SPI、I2C等好象都是支持的,但是它只有1024字节的空间,估计也没什么大的用处。
四、Attiny13A版的Blink
改Blink为下面的程序。
void setup() {
//D4是ATtiny的引脚3
pinMode(4, OUTPUT);
}
void loop() {
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
delay(1000);
}
在Arduino IDE里用Upload Using Programmer烧录,如果提示错误,把USB线拔下再重新插入,再次烧录就好了。这个道理和国外原产的Gemma V1是类似的。
把高亮LED直接接在Attiny13A的3和4引脚间,即D4和GND之间,LED开始闪烁。