"); //-->
Arduino IDE 支持很多不同的 MCU,不是只有官方 Arduino 板才能用。
Arduino 编译系统 Arduino IDE (IntegratedDevelopmentEnvironment) 目前最高版本为1.0。具有直观易用的界面,和常用 Arduino 板的必要设置-Uno、Duemilanove、Nano 和其他基于ATmega168 和 ATmega328 的MCU。最新版的 IDE 还提供了 ATmega1280 和 ATmega2560 的支持。但是如果你需要为烧录一个小的 Atmel 芯片而频繁切换到你需要的编辑器,就无法使用 IDE 提供的全部功能了,比如 ATtiny13。Arduino IDE 背后的引擎 - C 和 C++ 的 AVR-GCC 编译器 和 avrdude - ATmel AVR 系列 MCU 编程系统,已经提供了对小芯片的支持,我们只需要在 Arduino IDE 的设备配置文件中添加一小段代码来实现自如地切换硬件设置而不用离开你心爱的 IDE。具体操作如下:
Arduino IDE 用于配置硬件信息的 C 库文件和必要设置的文件位于 IDE 所在文件夹下的 hardware 文件夹里(本文将简称此文件夹为【arduino_home】),配置信息也可能位于用户自己的 sketchbook 目录下。我所使用的是 Linux Ubuntu 系统,我的 sketchbook 目录位于 ~/sketchbook/。在 Windows 系统中可能位于不同的目录中,请根据Windows 版本自行检查。
硬件配置库文件称为 cores,位于 ~/sketchbook/hardware/xxxx/cores,(xxxx可以是 arduino,或者是开发者指定的硬件名,比如 - tiny)。cores 位于[arduino_home]/hardware/arduino/cores/。
IDE 中另一个重要的文件 - 让 IDE 知道你正在给什么样的 MCU 编写程序 - boards.txt,位于 ~/sketchbook/hardware/xxxx/boards.txt 或者 /[arduino_home]/hardware/arduino/boards.txt。这个文件包含的硬件(或者可以只是一个单独的芯片)信息包括:时钟频率、高低熔丝位、MCU 烧录配置和定义时钟源、预分频器和其他一些不必每次重新上传都更新的必要设置。boards.txt 还可以指定编译器应该以多快的速度与微控制器对话 - MCU (如ATtiny)的一个重要特性 - 可以使用内置时钟源大幅放缓。
到目前为止,我知道两套可用的可以编译 ATtiny 的库:
Damellis’es ATtiny cores(通过添加设置支持 ATtiny13)
Arduino-Tiny Cores(似乎不支持 ATtiny13)
smeezekitty’s core13(只支持 ATtiny13)
上述大多支持一些 Arduino 的基本功能,可以在像 ATtiny 这样小 Flash 和 SRAM 的 MCU 上运行。通常支持的功能包括:
millis()
micros()(并不是很准确的微妙)
delay()
delayMicroseconds()(并不是很准确的微妙)
analogRead()
analogWrite()
pinMode()
digitalRead()
digitalWrite()
在编写你的程序时应该注意 - 一些更高级的功能,比如数学运算和三角函数也许是可用的,但很可能会很快耗尽 MCU 的有限资源。
上述所有 ATtiny cores 的引入方式都是类似的:
1.关闭 Arduino IDE
2.定位到 sketchbook 目录(在我的 Linux 上是 ~/sketchbook/),新建 hardware 文件夹,像这样 ~/sketchbook/hardware。
3.如果 cores 是按目录结构压缩的,直接解压到 ~/sketchbook/hardware/ 即可,所需目录会自动创建。否则,手动创建子目录,比如 “tiny”(或者“core13” -smeezekitty给 core13 的命名。目录名称可以随意,只要和boards.txt 中定义的一致就可以了,见下文)
4.在~/sketchbook/hardware/tiny/目录中,编辑或新建 boards.txt(格式见下文)
###########################################################################
Arduino IDE 1.0 上传前选择正确的编程器
编辑 boards.txt 之后启动 Arduino IDE,在 Programmer 菜单中选择将使用的编程器(见上图),我使用的是 Atmel AVRISP mk II USB ,Arduino 可以使用 ICSP 方式为 AVR MCU 编程。
在 Tools -> Board 菜单中选择 MCU 类型和时钟频率(见上图)。
在上传程序之前,运行 "Tools" 菜单下的“Burn Bootloader”。虽然因为内存太小和 I/O 口数量太少,选项中没有ATtiny 的 bootloader,但是这个功能的确是把高低熔丝位给烧进去了 - 上面的配置步骤对于确认MCU在你设定的速度运行是必须的。
写点代码,别忘了那些硬件限制 - ATtiny13 只有 1024Byte 的 FLASH 和 64 byte 的 SRAM,最方便的上传代码的方式是通过 ICSP,如果你计划用 ICSP,显然,只有 5 个 I/O 口可用。但如果是用其他方式上传代码的话,可以将 Reset 脚复用做第六个 I/O 口。
按此图所示连接 ATtiny13 和 编程器
现在,你应该如上图所示将 ATtiny13 MCU 和 编程器的 ICSP 6 引脚连接好。如果你是用面包板连接的,,最好用 6 条彩色 18AWG 线做一条 6-pin 的 ICSP 线公头 - 这将使软硬件连接变得简单,并且是重复使用的。注意 Vcc 脚应该接 +1.9V 到 +5.5V。
10.程序写好后,按 [Ctrl-Shift-U] 编译并上传到 MCU。别忘了电压应该和 MCU 相匹配。
现在程序应该成功运行了,除非是有 bug。如果没有得到预期的结果,仔细检查然后重新上传。
保证代码在 ATtiny13 上正常运行所应该考虑到的一个问题就是程序正在使用的 RAM 数量。比如,每个声明的变量得到一个内存空间,所以声明变量时应该用占用空间最小的类型。例如程序中用到一个计数器,不会超过 255 个,就没有必要使用 2 个字节的 int 类型,使用 1 个字节的 byte 类型就足够了。每个字节计数器只有 64 个字节的 RAM!
如果你声明了很多常量,比如数组或字符串,记得用 PROGMEM 将他们从 RAM 移到 FLASH,来保证有足够的 RAM用来流畅地运行程序。
用 Arduino IDE 给 ATtiny13 芯片编程非常有意思。IDE 提供了非常舒服的编程环境,ATtiny13 这样的小型 MCU 的种种限制也使得编程更具挑战性。如果你还没有尝试过,我建议你试着玩一玩 ATtiny。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
TA8777N多路音视频模拟选择开关集成电路
比色计电路
基于Vxwoks OS的嵌入式系统开发 上
TA7680AP图像及伴音中放处理集成电路
TA8783东芝公司大规模电视信号处理集成电路
美国固话可与移动同时执行号码可移植规则
夜视标杆电路
内存现货价格更新:16Gb DDR4 消费者内存价格上升,而 PC 内存失去动力
TA7698AP视频色度行场扫描处理集成电路
人形机器人具身智能机器人有哪些应用挑战?
Active Object技术讲解 下
水位计电路
WinCE+ARM开发及关键技术 上
美国、日本领导政府支持的光刻机(EUV)推广,韩国据报道落后
Proximus Global旗下公司BICS与Epic Malta合作,为2G/3G网络退役后保障旅行者漫游连接
适用于高速应用的先进全局快门图像传感器
Nexperia率先推出适用于48V电动汽车通信网络的ESD保护二极管
TA8759多制式视频色度扫描
物联网技术促进能量收集创新应用落地
Active Object技术讲解 上
安克在一月内发出第二次产品召回
长夜漫漫,无心睡眠呀:(
亮度稳定的调光台灯电路
新颖测电笔电路
关于创业.[转帖]
我国仪器仪表行业呈现出健康、稳定的发展态势
亚马逊刚刚在其仓库中部署了它的第一个一百万台机器人,它们很快就会超过人类
关于创业[续1]
瑞萨电子推出搭载AI加速功能的1GHz微控制器,树立MCU性能新标杆
WinCE+ARM开发及关键技术 下