关于Arduino的另类视角-《无线电》2014.03
2014-03-31 15:55:03Arduino现已风靡全球,探究其成功原因,业内大多认为缘于其开放性。我大约是从2006年开始接触AVR单片机,将我引入AVR世界的是当时国内一款较有名气的AVR单片机最小系统——双龙系列产品。从最小系统的角度观察,双龙与Arduino差不多,双龙的电路也是公开的。其实,对于一种单片机的最小系统而言是无密可保的,天生就是开放的,任何一个熟悉了该芯片的业者都可以设计出自己的开发板,我也设计出了自己的AVR单片机最小系统。大概是在2010年前后,我从一位旅日华人朋友那里第一次看到关于Arduino的杂志和书籍。时至今日,Arduino在国内的热度确实令人惊叹。
我个人认为Arduino虽说是一款不错的设计,但并非完美无缺。它的“定制”模块和函数库可能适用于一些急于完成特定用途的场合,但在其他方面却成了束缚你的框框。现在很多文章、论坛里爱用“基于Arduino”、“与Arduino兼容”等用语,都是些概念模糊的提法,特别是对一些初学者而言,容易使他们误以为Arduino是单片机的一种,单片机就必须这样使用。对Arduino准确的描述是:Arduino是一款AVR单片机的最小系统,搭载了AVR的ATmega168或ATmega328单片机芯片,其开发环境移植自Processing,而编译软件则是avrdude,唯一原创的就是“Arduino”这个品牌。
图1 MiniBoard
我认为Arduino最大的问题是抹去了单片机领域最重要的概念之一——I/O端口,代之以离散的“引脚”。另外,其BootLoader的引导方式,通过串口完成下载任务也并非现代单片机的最佳搭配。
好在Arduino选用了avrdude作为编译工具,虽然在其官方发表的帮助文档中没有描述,但对AVR单片机的寄存器名称实际上是支持的,使我们有机会对其设计导致的缺陷加以弥补。
本文选择了一些学习单片机最基本的入门实验,这些实验都是“基于”AVR单片机的,充分调动了AVR单片机的原有资源,使用很简单明了的程序语言在Arduino的开发环境里编写,然后下载至我自己的AVR最小系统中。读者如果能实践这些实验,将会对Arduino有更全面的认识。
MiniBoard实验用的硬件平台是笔者新推出的一款命名为“MiniBoard”的新板(见图1),搭载了Atmega48芯片,8MHz内部时钟。这块板子的特点是除了系统资源全部开放外,在端口的标识部分增加
了Arduino习惯的引脚标识,以方便习惯Arduino的朋友辨识。端口除了设计了排针外,又增加了母排,便于玩面包板的朋友使用。M i n i Board 的尺寸为58mm×40mm,4个固定孔的相互距离都是英制mil的整倍数,方便DIY的朋友将其固定在多孔板上。接下来我们对照图1看一下各部分的功能。
A : 2 8 脚芯片插座, 可配插ATmega48/88/168/328,以及ATmega8等芯片。
未完。。。
全文详见《无线电》2014.03