AVR或PIC开始编程微控制器?
我应该开始学习哪个家庭? (从未在微控制器上进行任何编程)
今天,AVR和PIC可能是业余爱好者中最常用的微控制器。 两者都有非常广泛的设备变体,都可以用来实现类似的结果。
对于初学者,我会build议AVR由于各种原因:
-
AVR家族(微型,巨型)是一致的,易于理解。 该架构function强大且现代化,特别适用于C编译器。 AVRs当然也可以在程序集中进行编程。
-
由于它的C友好的架构,有优质的C编译器,商业和免费。 无处不在的GCC被移植到AVR并称为avr-gcc 。
-
为了开始,您真正需要的是less数基本组件,即AVR芯片本身和面包板 。 甚至PC和AVR之间的编程电缆也可以免费构build(所谓的摆动器)。 不过,也有几款商用开发套件,最值得一提的是Atmel自己的STK500 。 商业开发套件是更加昂贵的入门方式,但实际上并不需要任何电子方面的先前知识。 一些开发套件包含例如LCD显示器,所以很容易获得有趣的东西。
-
它有一个丰富的爱好者社区 。
PIC由于其独特的架构而臭名昭着。 很多人为此爱PIC,有些讨厌它。 AVR更直接,似乎不会引起极端和极端的意见。
AVR和PIC都用于许多严肃的商业应用。 但是,它们当然不是唯一的select。 我个人最喜欢用于爱好和商业工作的微控制器是Silicon Laboratories的C8051系列,最值得注意的是C8051 F530 。 C8051系列有一个很好的免费的C编译器和汇编器,叫做SDCC 。
总结:有很多select,但是请不要让这些压倒你。 只要select一个,并开始学习。 一旦你决定开始,微控制器真的很容易掌握!
我的老板在没有任何经验的情况下,在一周内就使用了AVR的基础知识。
我会build议AVR。 它远远超过PIC作为一般爱好者项目的首选微控制器平台。 最值得注意的是,考虑Arduino(和其他* duino)平台,它提供了一个易于界面和stream行的外形因素的高端AVR。
我非常喜欢AVR over PIC,他的架构我觉得有点乱。 这可能只是我,如果你能写高级语言,很可能(某些方言)C,它不会麻烦你。
由于您是微控制器新手,我认为性能不会成为问题,所以我会寻找开发工具的可用性:原型开发板,IDE和仿真/debugging工具。 我个人喜欢AVR Studio(Atmel的免费开发环境)。
Jason提到TI的MSP430,这确实是一个出色的控制器,特别是在低功耗应用中。 但我不会推荐给一个新手,因为configuration有点麻烦。 (我记得在用户手册中振荡器的描述覆盖了20多页。)
有些人评论PIC微的奇怪(和C不友好)的架构。 对于较小的PIC,情况也是如此,但16位芯片(PIC24F,dsPIC30等)具有非常明确的架构,与C.
PIC24F产品线具有将引脚分配给function(定时器,A / D,串行I / O)的function,使devise起来更容易一些。 用于debugging和开发的MPLAB环境相当不错。
我不明白与arduino有什么大不了的,它会毁掉你理解实际发生的事情的机会。 我定期与AVR和PIC进行编程,基本没什么区别,我看不出什么大惊小怪。 但是对于一个初学者而言,远离arduino可能很简单,但这就是陷阱,它没有提供硬件架构的概念,也不知道幕后发生了什么,初学者需要学会成为一个有效的程序员。 当我是一名初学者的时候,我开始用一个价值20美元的USBasp编程器AVR Studio(Free)和AVRDude(带有WinAVR)来开发ATmega32,并且在AVR Freaks中使用了前面的教程。 这就是你所需要的,完成!
PS如果你真的想学习如何编程微软,并有时间学习你的微型汇编程序,你会比使用arduino的人高出20倍。
我投票selectTI的MSP430系列。 我已经广泛使用PIC(Atmel芯片也有一些),而且对我来说最重要的是一个好的debuggingIDE。 TI在这方面做得非常好,他们的C ++编译器工作得很好。 您可以使用一个评估板,价格低于100美元,包括一个IDE + USBdebugging器。 PIC具有更好和更多样化的硬件外设,但是MPLAB是一个废话,唯一用于PIC的C ++ IDE是IAR,它相当昂贵。 (超过$ 2K)
我做了一些PIC编程 – 主要是因为我喜欢这个芯片只有一两美元。 但是,对于初学者来说,仅仅根据价格做出决定是不成熟的优化。
在汇编程序中编程是一种体验。 在闪烁LED之前,您基本上必须了解100个概念。 (看门狗定时器,复位引脚,8位计数器/溢出,延迟循环,hex,二进制,位掩码,中断,中断服务请求,IO端口等)。这是非常有教育意义的 – 到机器 – 但能够用C语言编写代码将隐藏一些复杂性,所以你可以专注于结果。 出于这个原因,我会说与AVR去。 (我相信价格现在更接近PICs。)
另外:如果你有兴趣完成任务(不要介意花费30美元),请查看arduino 。 一个在我当地的电子商店卖东西的家伙说,他正在卖给艺术系的学生。 (它使用来自Processing项目的IDE,并用avr-gcc编译代码。)
更新:修正了Arduino运行解释代码的评论。 还更新了大约Arduino的价格。
我的投票是针对各种可用设备的PIC。 但是我必须说,当我开始使用太平洋岛国时,他们几乎没有别的。 也许现在事情已经改变了。
我/我们selectPIC主要是因为相同的价格有更多的外围硬件。 更重要的是,你甚至找不到可比的AVR。 我确实select了一个传统的免费版本(从PIC18开始,迁移到了dspic33)
IDE是免费的,(C)编译器在学生版本中是免费的(在第一个月后禁用优化)。 入门级程序员也相当便宜。 如果你有大量的中断,计数器和定时器,就有可能不需要优化。 直接来自Microchip的程序员是30美元。
需要注意的是,除非您真正使用像PIC12和16这样的传统架构,否则上述关于AVR更多地考虑HLL开发的观点略有过时。
一个通常用C语言编程更现代的PIC18(8位)和16位体系结构(基于相同主体核心的24F,30F和dspic33).16位甚至使用GCC。 现在也有基于32位的MIPS,但在audio/video处理领域,它们与ARM的竞争更加激烈。 奇怪的是,现代的往往比旧的便宜。 可能他们是在一个更高的产量更现代化的过程生产。
另外一个注意事项:Microchip / PIC同时购买了Atmel / AVR,但是我认为在头几年不会对产品线造成太大的影响。
我非常期待将于今年夏天发布的60MIP以太网使能的16-bitter(afaik streetprice刚好在10欧元以上)
如果你只是想知道什么是MCU编程,从Arduino开始是一个好主意。 这是一个便宜的新手友好的IDE(基于处理编程语言,它与C有类似的语法)。
但是这并没有回答你的问题,虽然Arduino是基于AVR的,但你不能感觉到这个现代IDE背后有一个AVR MCU。 🙂
我第一次使用微控制器的经验是OOPic-R 。 它允许我做简单的机器人实验,而不用担心代码太多。 面向对象的编程stream程使得所有的工作都快速且易于编程。
最近,我尝试了另一种PIC,便宜的PICAXE 。 包含的编程接口是一件轻而易举的工作。 此外,为了实现PICAXE的物理连接,您只需要一个RS-232端口对其进行编程,并在芯片上使用两个引脚(无需进行电平转换)。 我已经将PICAXEembedded到非常小的容器(SMD和DIP芯片)中,并且工作得非常好。
我没有组装编程微控制器的经验。 如果你想尝试,AVR可能更适合,因为它是更大的用户社区。
据我所知,使用ATMEL工具编程AVR的最便宜的方法是35美元的ATMEL AVR ISP mkII。 你可以find10-15 $的第三方程序员。
在刚开始的时候,我已经与PIC取得了更多的成功。 我试图从Arduino那里得到一个简单的入门工具包,如果不花费超过100-200美元的镍,并且一起安装,就不可能获得一个好的基本工具包。 从PIC获得了大约40美元的优秀的小型入门工具包,它包含了一切:IDE,编程器,入门板,内置电路演示和教程。 一次购买。 此外,PIC环境很容易build立和工作。 我在一个小时之内就玩了。
我会根据C交叉编译器的可用性做出我的select。 在过去,这将使AVR的select。 我不确定现在是什么状态。
我在汇编程序中编写了一个PIC,并没有太多乐趣。 C在很多方面都好多了。
关于AVR的最好的function是在www.avrfreaks.net的论坛上的社区。 你会得到一批经验丰富的电子工程师,他们愿意帮助新手走出去。
我想说的是,我最喜欢8051单片机,爱特梅尔已经提供了这么多内置function的微控制器……但是仍然有人更喜欢使用AVR的…我的手会跟上8051系列如果觉得舒服)否则AVR的…
我爱AVR。 其易于编程和资源可用。 有像Arduino这样的社区很less。
关于AVR的优越性的一些更多的讨论,在其他堆栈溢出: http : //embeddedgurus.com/stack-overflow/2009/04/pic-stack-overflow/
8位PIC的普及让我感到困惑。 它的架构是可怕的 – 有限的调用堆栈只是第一个可怕的事情。 抛出对单个中断向量的寻呼和银行业务的需求,并且你有一个编程模型的噩梦。 如果这是8位设备的标准是一回事,但事实并非如此。 AVR架构将PIC驱逐出去,而HC05 / HC08也在PIC之前。 考虑到这个select,我想我甚至可以拿8051超过PIC。 我没有看到任何成本优势,封装优势(爱特梅尔刚刚发布了一个SOT23-6 AVR,它本质上是与其最大器件兼容的指令集)或外设优势。 总之,我不明白! 顺便说一句,这不是对Microchip的控诉 – 他们是一个伟大的公司,我真的很喜欢他们的其他产品,他们的网站,技术支持等等(也许这就是PIC被广泛使用的原因)
我开始使用摩托罗拉M68HC11,这很简单。 我想你会得到与任何8Bit控制器相同的经验。