这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 开源硬件 » -深-入-浅-出-Arduino---带你从零学习开源硬件

共2条 1/1 1 跳转至

-深-入-浅-出-Arduino---带你从零学习开源硬件

助工
2015-04-13 01:36:14     打赏

---授人以鱼不如授人以渔,为此我的教程贴并不只是讲文档上有的和其他教程贴写过的东西,而是一种学习方法。本贴会长期连载Arduino课程,有问题可以发表留言互动。

Arduino介绍----为什么选择Arduino

Arduino,源于意大利的一个开放源代码的软硬件平台,近几年在中国较火。

可能对很多单片机爱好者来说,Arduino这个词还较为陌生,笔者初次接触Arduino是在半年之前,而在这半年的学习过程中,也逐渐喜欢上了Arduino,其也表现出与传统单片机相比显著的优越性,所以笔者希望把Arduino介绍给大家,让更多的人接触到优秀的东西。

对于大多数嵌入式开发者来说,Arduino是不入主流的。Arduino较普通的单片机而言,的确有优势也有不足的方面。对于一般的单片机,我们都是直接操控内部寄存器实现我们想要的功能,而Arduino底层的寄存器已经被封装起来了,我们只需调用相关函数即可实现需要的功能,是不是更方便呢?下面就Arduino和传统单片机开发方式作出对比:

Arduino和传统单片


Arduino

传统单片机

种类

官方(基本以AVR单片机为主)Arduino Uno/2560/Mini/Nano/Leonardo/LilyPad等等十多种。

第三方支持ArduinoPCduino(A10芯片),Stduino(STM32),51duino(51单片机),Energia(MSP430),Amicus18(PIC),Breadstick(FPGA)等等,包含绝大多数嵌入式平台。

一般不同的单片机寄存器和引脚差异很大,完全不兼容

功能

分种类,支持UARTIICSPI,ADC,DAC。有的版本支持USBWIFIWLAN等等

分种类看功能

编译环境

支持MACOSWindowsLinux

一般仅支持Windows环境下

硬件

从原理图到PCB完全开源

一般会有官方的demo板,价格昂贵且方案基本不开源

软件资源

网上有很多开源资料,完整项目程序(GitHub),例如3D打印机

资料很好找,但一般不会有完整的项目程序及资料

代码效率

较低

一般用C语言较高,牛人用汇编极高

代码移植性

非常好,只要是支持Arduino,用官方的库(第三方库除外,因为牵扯到不同芯片的寄存器配置),完全兼容。

即使是高移植效率的C语言,整个寄存器的配置得按照芯片重写

学习难易

较简单,甚至没有C语言基础的人也能很快上手

较难,需精通C语言及硬件知识

项目开发周期

较短,学习容易

较长,同一类型,不同型号的芯片内部寄存器及操作方式都不一样

从上可以看出,Arduino占有很大的优势,尤其在近几年创客文化的影响下,Arduino在中国发展迅速。但是Arduino也有未完善的不足:

1.经过封装打包的函数,其执行效率会降低。但是仔细想想,现在又有多少人会追求高效率的代码呢?那样的话就用汇编写了。可见移植性和高效性是一个矛盾的问题,把握好度就行。

2.官方的Arduino不带在线调试功能,因为Arduino采用AVR单片机,并且下载程序方式选用串口下载。而AVR的在线调试用的是ISP接口。其实最主要的原因是Arduino把很多寄存器和值都封装起来了,我们是看不见的,这就造成的程序调试的难度。笔者是这样解决的:所需调试的寄存器或变量值用串口打印的方式查看,习惯了发现也蛮好用的。

3.看门狗定时器:Arduino官方去掉了AVR的看门狗定时器。笔者曾试着操控AVR底层,却屡屡发现用看门狗后Arduino的板子下不进去程序了。最后发现是Arduino的硬件和BootLoader的问题。BootLoader即嵌入式系统在加电后执行的第一段代码,Arduino的板子都是内置BootLoader,所以才能通过串口下载程序(而不是AVR的ISP)。而看门狗一旦跳出,将会使单片机重新执行程序(从单片机起始地址开始)。而这个起始地址和BootLoader的位置Arduino没有处理好,导致时常调用看门狗后Arduino的BootLoader就崩溃了!也就意味着不能通过串口下载程序了!但是依然可以通过ISP下载程序或着重新刷入BootLoader。在这里笔者建议没有ISP下载器(Arduino板子可以刷程序作为下载器),不要用BootLoader,否则是致命的!关于这部分内容,以后会深入叙述。

4.定时器和PWM,经常有人会抱怨用定时器会和PWM功能冲突,初学者请慎重使用定时器。

总体而言,Arduino还是很好用的,希望大家在学习的过程中有所收获。





关键词: Arduino     开源硬件     单片机     AVR    

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]