刚毕业时就知道arduino,但当时崇拜技术极致,喜欢把单片机的性能用到尽,觉得操作寄存器运行效率高,对arduino 这种高效模式贬为投机取巧,不过其中也一直对arduino 有关注。
随着芯片技术的飞速发展,工作多年后也对资源有了新的认识,一个单片机资源相对人工资源来说,不一值一提啊!应用中,一个项目的快速完成及后期的可维护性更重要。
最近跟着好友一起玩飞控,发现很多模友喜欢用arduino 做些扩展功能,遂又打起arduino 的主意。到淘宝一看便宜的arduino pro mini有几块钱的,这么便宜,比自己折腾板实在,就拍了几块回来。
arduino pro mini到手,当然是First Project: LED Control,对新板最真观的一个认识。网上看了下教程,简单的写个IO输出加延时,上传,OK!!!!
这里得说一下接线,因为今天的问题与接线有关。
接线就是
VCC接一个5V转3.3V的电源板输出
GND 接电源板 GND
TXO 接平时用的USB转串口 TXD
RXI USB转串口 RXD
GND USB转串口 GND
上面做完IO测试,接下来当然就是Debug神器--串口了。新建Serial Port 工程,简单的Serial.Println("Hello World!"),上传,却是失败!!!!
这是怎么回事呢,没多想,再重新接一个板,反正买得多(哈哈,土豪的世界你不懂),上传,OK!!!
再上传,又是失败!
到这就不能再不找原因了,先度娘,很多网友有同样问题。原因是:
一般的Arduino模块使用了USB转串口芯片上的DTR信号,DTR通过电容连接到RESET,通过DTR提供的脉冲控制AVR单片机进行复位,然后进入Bootloader进行升级。无论是原产的Arduino还是国产的Arduino都是这样,只是USB芯片不同。
参考:http://bbs.ednchina.com/BLOG_ARTICLE_3030002.HTM
而我上面提到的接线没有用到DTR信号,所以芯片没有复位。
有网友给出的办法是:烧录的时候,提示upload时,手动按板子上的RESET按钮复位。
我试了下,在提示编译后资源使用情况时,手动按板子上的RESET按钮复位。可正常上传固件。
既然可以上传固件,对于哥来说懒得再从串口板上折腾条线出来自动上传了,知道原因,有解决方案就行。
特些做个笔记纪念下首次使用Arduino。