[Arduino]关于Nano,你可能不知道的事儿

大部分玩 Arduino 的朋友,都还是从 UNO、Duemilanove、Diecimila 这样的板子上开始玩,而这些板子的共性,就是都是用了 DIP(直插)28 脚封转的主芯片。而转为 Nano 的话,其实芯片核心并没有变化,但是封装从 DIP28 改为 TQFP32,软件方面都不需要变动,程序都是通用的。硬件方面又有什么不同呢?32 – 28 = 4,多了4个引脚。

Photobucket

多了 VCC 和 GND,没什么好说,而多的 ADC6 和 ADC7,就是是之前 DIP 封转的芯片所没有的东西了。而在 nano 中,也同样把这2个ADC引脚引出来了。

很明显,就是A6和A7。大家注意看datasheet中的管脚定义,就会发现这 ADC6 和 ADC7 实际上和 ADC0-ADC5 是不太一样的。ADC0-ADC5 其实是作为 PC0-PC5 的第二功能存在的,分别对应 Arduino 定义 A0-A5。也正因为次,在 Arduino 的官方指南中提到,“The analog input pins can be used as digital pins, referred to as A0, A1, etc. ”。说的是,模拟输入口可以当数字口一样用。对于A0-A5来说,确实不错。但对于第一功能就是ADC(模数转换)而不兼有普通 IO 口功能的 ADC6 和 ADC7 来说。这句话就要打折扣了。A6 和 A7 只能作为模拟输入使用,不要把它当成 类似于 PC PB 这样的 IO口去使用。

而且,这本并不是 Arduino 内核的问题,而是硬件本身的设计就是这个样子。A6 和 A7 确少作为 标准IO口 所需的必要硬件配置。

实测中确实是这样,在 A6、A7 引脚上,想运行 Blink 例程,使用 pinMode(A6, OUTPUT),digitalWrite(A6, HIGH) 都不会得到你所需要的效果。更崩溃的是,你可能改变了芯片内部你原本不想改变的寄存器配置,没准会有诡异意外发生。玩 Nano,或者是贴片AVR的 Arduino 朋友们,可要注意。

特别感谢:@风叫兽@Togke协助测试。

关于aGuegu

阿古 真名:官微宏,技术Geek,玩Arduino,玩Linux,爱Google,爱开源;现居福州
此条目发表在内功心法分类目录,贴了, , , , , , , 标签。将固定链接加入收藏夹。
  • dicklaw

    我還滿心歡喜多了兩pin使用,原來有特別限制的,就是說A6和A7不能做output,只能analoginput吧,謝謝教程

  • darf

    关于多出来的这两个引脚,在mini pro上问题更严重,我也发现过类似的问题:http://bbs.roboticfan.com/forum.php?mod=viewthread&tid=10700