AVR或者PIC开始对单片机进行编程?
我应该开始学习哪个家庭? (从未在微控制器上进行任何编程)
解决方案
我的老板在没有事先经验的情况下,一周内就使用AVR掌握了基础知识。
对于可用的设备种类繁多,我投了PIC的一票。但是我必须说,当我开始使用PIC时,它们几乎没有别的。也许现在情况已经改变了。
我开始使用Motorola M68HC11,它非常简单。我认为我们将在任何8Bit控制器上获得相同的体验。
我对微控制器的第一次体验是使用OOPic-R。它使我可以进行简单的机器人实验,而不必担心代码太多。面向对象的编程流程使所有工作都变得快速且易于编程。
最近,我尝试了另一种PIC,价格便宜的PICAXE。随附的编程界面非常容易使用。另外,要物理连接PICAXE,我们只需要一个RS-232端口对其进行编程,并需要芯片上的两个引脚(无需进行电平转换)。我已经将PICAXE嵌入到非常小的容器中(可用SMD和DIP芯片),并且效果很好。
我没有组装汇编微控制器的经验。如果我们想尝试一下,AVR可能会更适合,因为它拥有更大的用户群体。
据我所知,使用ATMEL工具编写AVR的最便宜方法是ATMEL AVR ISP mkII,价格为35美元。我们可以找到10-15美元的第三方程序员。
如今,AVR和PIC可能是业余爱好者中最常见的微控制器。两者都有非常广泛的设备变体,并且都可以用来获得相似的结果。
对于初学者,出于各种原因,我建议使用AVR:
- AVR系列(小型,大型)是连贯且易于理解的。该架构功能强大且现代,特别适合C编译器。当然,也可以在组装中对AVR进行编程。
- 由于其C友好的体系结构,因此可以使用高质量的C编译器,包括商业版本和免费版本。无处不在的GCC移植到AVR,称为avr-gcc。
- 首先,我们真正需要的是一些基本组件,AVR芯片本身和面包板。甚至PC和AVR之间的编程电缆也可以免费构建(所谓的wiggler)。但是,有几种商业开发套件可供选择,最著名的是Atmel自己的STK500。商业开发套件是入门的较昂贵方法,但实际上不需要任何有关电子学的先验知识。一些开发套件包含例如LCD显示屏,因此很容易完成有趣的工作。
- 它有一个丰富的爱好者社区。
PIC因其独特的架构而臭名昭著。许多人为此而喜欢PIC,有些人则讨厌它。 AVR更简单明了,似乎并没有引起太多极端和极端的意见。
AVR和PIC都用于许多严肃的商业应用中。但是,它们并不是唯一的选择。我个人最喜欢的同时用于业余和商业工作的微控制器是Silicon Laboratories的C8051系列,最著名的是C8051F530。 C8051系列有一个出色的免费C编译器和汇编器,称为SDCC。
简介:有很多选择,但是请不要让我们不知所措。只需选择一个就可以开始学习。一旦决定上手,微控制器确实非常容易掌握!
我完成了一些PIC编程,主要是因为我喜欢这个芯片只有一两美元的想法。但是,对于初学者而言,仅根据价格做出决定是过早的优化。
在汇编器中编程是一种经验。我们基本上必须了解100个概念,然后才能使LED闪烁。 (看门狗定时器,复位引脚,8位计数器/溢出,延迟循环,十六进制,二进制,位掩码,中断,中断服务请求,IO端口等)非常亲切,而且感觉如此接近机器,但是能够用C语言编写某些代码,将掩盖这种复杂性,因此我们可以专注于结果。出于这个原因,我会说选择AVR。 (而且我认为价格现在已经接近PIC。)
另外:如果我们有兴趣完成工作(并且不介意花费30美元左右),请查看arduino。一个在我当地的电子商店里卖它们的人说他正在把大量的它们卖给美术系的学生。 (它使用Processing项目中的IDE,并使用avr-gcc编译代码。)
更新:修复了Arduino运行解释代码的注释。还更新了大约Arduino价格。
我建议使用AVR。它已远远超过PIC,成为一般爱好者项目的首选微控制器平台。最值得注意的是,考虑Arduino(和其他* duino)平台,该平台以易于接口和流行的外形提供了高端AVR。
如果我们只想了解什么是MCU编程,那么从Arduino开始是个好主意。它具有便宜的价格,并且具有对新手友好的IDE(基于处理编程语言,该语法与C相似)。
但这并没有回答问题,因为Arduino完全基于AVR,因此我们无法感觉到该现代IDE背后有一个AVR MCU。 :)
http://www.arduino.cc/
高温超导
我投票支持TI的MSP430系列。我已经广泛使用了PIC(也使用了一些Atmel芯片),到目前为止,对我来说最重要的是良好的调试IDE。 TI在此方面做得很好,并且他们的C ++编译器工作得很好。我们可以以不到100美元的价格购买评估板,包括IDE + USB调试器。 PIC具有更好和更多样的硬件外设,但是MPLAB简直就是废话,而IAR唯一的PIC的C ++ IDE是昂贵的。 (超过$ 2K)
我非常喜欢AVR而不是PIC,我发现它的体系结构有些混乱。这可能只是我,如果我们能使用高级语言(很可能是C的某种方言)来写,也不会给我们带来麻烦。
由于我们是微控制器的新手,因此我认为性能不是问题,因此,我将寻求开发工具的可用性:原型开发板,IDE和仿真/调试工具。我个人非常喜欢AVR Studio(Atmel的免费开发环境)。
Jason提到了TI的MSP430,它确实是一款出色的控制器,尤其是在功耗非常低的应用中。但是我不建议新手使用它,因为配置有点麻烦。 (我记得在用户手册中对振荡器的描述涵盖了20多个页面。)
在我刚入门时,我在PIC上取得了更大的成功。我试图从Arduino获得一个简单的入门套件,但如果不花费超过$ 100-200的镍并将设置调暗,就无法获得一个好的基础套件。从PIC那里得到了一个很棒的入门工具包,价格约为40美元,它具有所有功能:IDE,编程器,带有演示和教程内置电路的入门板。一次购买。而且,PIC环境非常易于设置和工作。我在一小时内就玩完了。
我/我们之所以选择PIC,主要是因为有更多相同价格的外设。更重要的是,我们甚至找不到可比的AVR。我确实选择了一个免费的旧版本(从PIC18开始,移植到dspic33)。
IDE是免费的,学生版本(C)编译器是免费的(第一个月后禁用优化)。入门级程序员也相当便宜。如果我们有大量的中断,计数器和计时器,则有可能根本不需要优化。来自Microchip的程序员的费用为30美元。
请注意,除非我们真的喜欢PIC12和16之类的传统架构,否则以上有关AVR更适合HLL开发的论述已经过时了。
通常用C语言编写更现代的PIC18(8位)和16位架构(基于相同的主核的24F,30F和dspic33)。16位甚至使用GCC。现在也有基于MIPS的32位处理器,但在音频/视频处理领域,它们可以与ARM竞争。奇怪的是,现代的通常比旧的便宜。可能以更高产量的更现代工艺生产它们。
另一个要点:同时Microchip / PIC购买了Atmel / AVR,但我认为在最初的几年中不会对生产线产生太大影响。
我真的很期待即将在今年夏天发布的支持60MIPs的16位以太网(afaik零售价略高于10欧元)
AVR的最佳功能之一是位于www.avrfreaks.net上的论坛中的社区。我们会遇到一群经验丰富的电子工程师,他们愿意帮助新手开始前进。
有人对PIC micro的奇怪(和C语言不友好)体系结构进行了评论。较小的PIC也是这样,但是16位芯片(PIC24F,dsPIC30等)具有非常清晰的架构,可以很好地与C配合使用。
PIC24F系列具有动态分配引脚功能的功能(定时器,A / D,串行I / O),从而使其设计起来更加容易。用于调试和开发的MPLAB环境非常好。
关于AVR优越性的其他讨论,另请参见Stack Overflow:
http://embeddedgurus.com/stack-overflow/2009/04/pic-stack-overflow/
The popularity of 8 bit PICs baffles me. It’s architecture is awful – the limited call stack is just the first dreadful thing. Throw in the need for paging and banking together with the single interrupt vector and you have a nightmare of a programming model. It would be one thing if this was the norm for 8 bit devices – but it isn’t. The AVR architecture blows the PIC away, while the HC05 / HC08 are also streets ahead of the PIC. Given the choice I think I’d even take an 8051 over the PIC. I don’t see any cost advantages, packaging advantages (Atmel has just released a SOT23-6 AVR which is essentially instruction set compatible with their largest devices) or peripheral set advantages. In short, I don’t get it! Incidentally, this isn’t an indictment of Microchip – they are a great company and I really like a lot of their other products, their web site, tech support and so on (perhaps this is why the PIC is so widely used?)
我将根据C交叉编译器的可用性进行选择。过去,这将使AVR成为选择。我不确定现在的状态。
我已经用汇编器对PIC进行了编程,但是并没有太大的乐趣。 C在许多方面都更好。
我会说我最容易找到8051微控制器,而Atmel提出了具有许多内置功能的微控制器....但是,人们仍然更喜欢使用AVR的。。。我的手会支持8051系列(如果觉得舒适)否则AVR的...
我爱AVR。它易于编程和可用资源。很少有社区像arduino一样与它合作。
我不明白arduino有什么大不了的,它会毁了我们永远无法理解实际发生的事情的机会。我定期使用AVR和PIC进行编程,基本上没有太大区别,我看不出有什么大惊小怪的。
但是,对于一个远离arduino的初学者来说,这可能很简单,但这就是陷阱,它不给我们硬件架构的概念,也不知道背后发生了什么,初学者需要学习成为一名有效的程序员。
当我还是一个初学者时,我首先使用的是ATmega32,价格为20美元的USBasp程序员,AVR Studio(免费)和AVRDude(WinAVR附带),然后按照AVR Freaks中的入门教程进行操作。
这就是我们所需要的,完成!!!
P.S.如果我们真的想学习如何编写Micro程序并花时间学习Micro的汇编程序,那么C程序员人数将是刚开始使用arduino的人的20倍。