ATtiny24/44/84这一系列单片机常用于玩具等低值电子产品中,具有价格便宜、体积小等优点。本博客中使用的为SOIC-14封装,该封装有11个输入输出引脚,8个10位的ADC引脚,一个8位和一个16位的定时器。ATtiny24/44/84的Flash大小分别为2K/4K/8K字节,EEPROM大小分别为128/256/512字节。通俗的说就是它们所能容纳程序的空间分别为2K/4K/8K字节,程序中全局变量的空间不超过128/256/512字节。对于习惯了使用较大空间单片机的玩家,刚上手时需注意代码和变量精简。
该系列单片机通过SPI端口进行系统内编程,一般可以使用操作寄存器的方式配合ISP下载器等设备进行调试。Arduino是一款便捷灵活、方便上手的开源电子原型平台,其IDE和库函数使用起来非常容易。本博客使用Arduino IDE对ATtiny24/44/84系列单片机进行开发。
在搭建开发环境之前我先罗列一下所用到的软硬件工具,如下表所示。
名称 |
数量 |
备注 |
ATtiny24/44/84开发板 |
1 |
这是本人自行设计的一款开发板,博客中也会标明单片机引脚并放出部分原理图。若有需要,可点击下方链接获取完整的设计资料。 电路城链接:
|
Arduino UNO开发板 |
1 |
其他型号Arduino开发板应该也可以,引脚可能不同。 |
Arduino IDE |
1 |
我用的版本是1.8.5,电路城链接中附有下载链接。 |
方口USB线 |
1 |
用于连接Arduino和电脑。 |
10uF电容 |
1 |
|
杜邦线 |
若干 |
配合开发板使用的为两头都是母头的杜邦线 |
首先我们将Arduino UNO开发板配置为一个烧录器,此时Arduino UNO开发板除了和电脑的USB连接线外不用接其他线。依次点击文件—示例—11.ArduinoISP—ArduinoISP。
点击后打开弹出如下工程。
对开发板和编程器进行如下配置。
点击左上角上传箭头将该程序烧录到Arduino UNO开发板中,完成此步骤后,Arduino UNO开发板即成为一个ATtiny24/44/84开发板的烧录器。
ATtiny通过SPI端口进行烧录,而ATtiny总的引脚数不算多。对于刚上手尤其是自己做电路板的玩家比较容易出现的一个问题是会将SPI引脚接到某些电路上,该电路会让SPI的电平处于一种无法烧录的状态。烧录时SPI引脚部分上也不能有电容接地,因为SPI是一个频率比较高的信号,近似可看成交变信号,会通过电容直接导到GND上,造成烧录报错。
按下图方式将ATtiny24/44/84开发板和Arduino UNO开发板进行连接。
Arduino 5V到ATtiny24/44/84引脚1;
Arduino引脚10到ATtiny24/44/84引脚4;
Arduino引脚11到ATTiny24/44/84引脚7;
Arduino引脚12到ATtiny24/44/84引脚8;
Arduino引脚13到ATtiny24/44/84引脚9;
Arduino GND到ATtiny24/44/84引脚14;
Arduino RESET到10uF电容器(+侧/长脚);
GND至10uF电容器(-侧/短支脚)。
开发板中已经将相应管脚集中到了一个JTAG10的端子上,按上述进行连接即可,也可以用普通ISP下载器连接调试,本博客不做相关介绍。
之前见到有玩家问将ATtiny24/44/84的VCC接到3.3V是不是也可以,这是不行的。因为Arduino默认的高低电平是5V和0V,若ATtiny24/44/84的VCC为3.3V,则会造成两者电平不一致,无法烧录。
10uF电容可以直接用电解电容,将引脚插到Arduino UNO开发板的Reset脚和GND脚,考虑到连接稳定性,我一般会在电容引脚上焊接半截杜邦线插到Arduino UNO开发板对应引脚。也有资料说可以不加10uF电容,这一点我没有试过,保险起见还是加一下。
下面我们在Arduino IDE中配置调试环境,点击文件—首选项。
在附加开发板管理器网址中添加此链接:
http://drazzy.com/package_drazzy.com_index.json
依次点击工具—开发板—开发板管理器。
点击后弹出如下界面。在该界面中搜索attiny,选择ATTinyCore by Spence Konde安装,我使用的版本是1.1.5,安装完成后点击关闭。
安装成功后,工具—开发板下拉菜单会出现ATtiny的单片机,点击ATtiny24/44/84。
点击后工具栏出现ATtiny24/44/84的相关配置。
下拉菜单中,LTO选项可以让程序优化,占有更少的存储空间。Pin Mapping这个选项是选择引脚的顺序。选择为Clockwise,即引脚序号沿顺时针方向排布,排序时跳过ATtiny24/44/84的电源引脚。该引脚序号就是后面实验中编程时库函数操作的引脚序号,如下图红框所示。
BOD选项是掉电重启选项,在VCC低于所设电压时重启。因为例程中的程序都不太复杂,本博客实验使用的型号均为ATtiny24,玩家们可根据自己实际所使用的片子选择。建议玩家从正规途径采购,二手翻新芯片可能熔丝位已经被操作过,会造成烧录报错或不正常使用。Clock表示晶体振荡器的选择,这里设置为1MHz的内部晶振。端口根据Arduino UNO开发板USB线实际连接的电脑端口进行选择,可在设备管理器中进行查看。编程器选择为Arduino as ISP,表明我们将Arduino作为一个ISP下载器。
至此,我们的环境已经搭建好了,可以开始编程了。我们可以先编写一个LED灯闪烁程序,所有的例程可以在电路城的链接中下载。编写好后点击屏幕左上方上传按钮将程序下载至单片机,此时我们可以看到LED灯在以1秒的间隔进行闪烁。关于LED灯的电路和程序我们将在下一篇中进行介绍。