AVR或PIC开始编程微控制器?

时间:2008-09-26 15:00:21

标签: embedded microcontroller

我应该从哪个家庭开始学习? (从未在微控制器上进行任何编程)

20 个答案:

答案 0 :(得分:53)

今天,AVR和PIC可能是业余爱好者中最常见的微控制器。两者都有非常广泛的设备变体,两者都可用于实现类似的结果。

对于初学者,我会建议AVR由于各种原因:

  • AVR系列(微小的,巨型的)连贯且易于理解。该架构功能强大且现代,特别适用于C编译器。 AVR当然也可以在汇编中编程。

  • 由于其C友好的架构,有商用和免费的高质量C编译器。无处不在的GCC被移植到AVR并被称为avr-gcc

  • 首先,您需要的是一些基本组件,即AVR芯片本身和breadboard。甚至PC和AVR之间的编程电缆也可以基本上免费构建(所谓的摇摆器)。但是,有几种商业开发套件可供使用,最着名的是Atmel自己的STK500。商业开发套件是更昂贵的入门方式,但实际上并不需要任何有关电子设备的先验知识。一些开发工具包包含例如LCD displays,因此很容易完成有趣的工作。

  • 它有一个丰富的hobbyist community

PIC因其独特的建筑而臭名昭着。很多人都喜欢PIC,有些人讨厌它。 AVR更直接,似乎没有引起极端和极端的意见。

AVR和PIC都用于许多严肃的商业应用。但是,它们当然不是唯一的选择。我个人最喜欢的用于业余爱好和商业工作的微控制器是Silicon Laboratories的C8051系列,最着名的是C8051 F530。 C8051系列有一个优秀的免费C编译器和汇编器,名为SDCC

总结:有很多选择,但请不要让它压倒你。只需选择一个并开始学习它。一旦你决定开始,微控制器真的非常容易掌握!

答案 1 :(得分:11)

我的老板在没有经验的情况下在一周内使用AVR获取了基础知识。

答案 2 :(得分:8)

我建议AVR。它远远超过PIC作为一般业余爱好者项目的首选微控制器平台。最值得注意的是,考虑到Arduino(和其他* duino)平台,它提供了一个易于界面和流行的外形尺寸的高端AVR。

答案 3 :(得分:6)

我非常喜欢AVR而不是PIC,我觉得它的架构有点乱。这可能只是我,如果你能用高级语言写作,最有可能(某些方言)C,它不会给你带来麻烦。

由于您不熟悉微控制器,我认为性能不会成为问题,因此我会寻找开发工具的可用性:原型板,IDE和仿真/调试工具。我个人非常喜欢AVR Studio(Atmel的免费开发环境)。

Jason提到了TI的MSP430,它确实是一款出色的控制器,特别是如果你处于非常低功耗的应用中。但我不建议新手,因为配置有点麻烦。 (我记得在用户手册中,振荡器的描述涵盖了20多页。)

答案 4 :(得分:6)

我不明白与arduino有什么关系,它会破坏你理解实际发生的事情的机会。我定期与AVR和PIC一起编程,基本没有太大区别,我看不出大惊小怪。 然而,对于初学者远离arduino,它可能很简单,但这就是陷阱,它没有给你任何硬件架构的概念,也不知道幕后发生了什么,初学者需要学习成为一名有效的程序员。 当我还是初学者时,我开始使用ATmega32 20美元的USBasp程序员,AVR Studio(免费)和AVRDude(附带WinAVR)并遵循AVR Freaks的介绍教程。 这就是你所需要的,完成!!!

P.S。如果你想真正学习如何编写微程序并花时间学习微博的汇编程序,那么你的C程序员将是开始使用arduino的人的20倍。

答案 5 :(得分:6)

有些人评论了PIC micro的奇怪(和C不友好)架构。对于较小的PIC来说也是如此,但16位芯片(PIC24F,dsPIC30等)具有非常清晰的架构,可以很好地与C配合使用。

PIC24F线能够动态地为功能(定时器,A / D,串行I / O)分配引脚,使设计更容易。用于调试和开发的MPLAB环境非常好。

答案 6 :(得分:6)

我做了一些PIC编程 - 主要是因为我喜欢这个芯片只有一两美元的想法。然而,对于初学者来说,仅仅根据价格做出决定是不成熟的优化。

汇编程序编程是一种体验。在闪烁LED之前,您基本上必须了解100个概念。 (看门狗定时器,复位引脚,8位计数器/溢出,延迟循环,十六进制,二进制,位屏蔽,中断,中断服务请求,IO端口等)这一切都非常有教育意义 - 并且感觉如此接近到机器 - 但能够用C编写代码会隐藏一些复杂性,这样你就可以专注于结果。出于这个原因,我会说与AVR一起去。 (我相信价格现在更接近PIC了。)

另外:如果您对完成任务感兴趣(并且不介意花费~30美元),请查看arduino。一个在我当地的电子商店卖它们的人说他正在向艺术学生出售他们的吨数。 (它使用Processing项目中的IDE,并使用avr-gcc编译代码。)

更新:修正了Arduino运行解释代码的评论。还更新了大约Arduino价格。

答案 7 :(得分:5)

我投票支持TI MSP430系列。我已经广泛使用了PIC(也有Atmel芯片),到目前为止,对我来说最重要的是一个很好的调试IDE。 TI在这方面做得非常出色,而且他们的C ++编译器工作得非常好。您可以使用价格低于100美元的评估板,包括IDE + USB调试器。 PIC有更好的&更多样化的硬件外围设备,但MPLAB是一块废话,PIC的唯一C ++ IDE是IAR的一个,它相当昂贵。 (超过$ 2K)

答案 8 :(得分:5)

我/我们选择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 streetprice只需10欧元以上)

答案 9 :(得分:5)

对于各种各样的设备,我投票给了PIC。但我必须说,当我开始使用PIC时,它们几乎没有别的。也许现在事情发生了变化。

答案 10 :(得分:3)

如果你只是想知道什么是MCU编程,从Arduino开始是一个好主意。这是便宜的,具有新手友好的IDE(基于处理编程语言,与C语法类似)。

但这并没有回答你的问题,因为Arduino是基于AVR的,你不能感觉现代IDE背后有AVR MCU。 :)

答案 11 :(得分:3)

我对微控制器的第一次体验是OOPic-R。它让我可以进行简单的机器人实验而不必过多担心代码。面向对象的编程流程使一切工作变得快速且易于编程。

最近,我尝试了另外一种PIC,即便宜PICAXE。随附的编程界面轻而易举。此外,为了物理连接PICAXE,您只需要一个RS-232端口来编程它和芯片上的两个引脚(无需进行电平转换)。我已将PICAXE嵌入非常小的容器中(可提供SMD和DIP芯片)并且它运行良好。

我没有在汇编中编程微控制器的经验。如果你想尝试,AVR可能更适合,因为它是更大的用户社区。

据我所知,使用ATMEL工具编程AVR的最便宜方式是ATMEL AVR ISP mkII 35美元。你可以找到10-15美元的第三方程序员。

答案 12 :(得分:3)

在我刚开始的时候,我在PIC方面取得了更大的成功。我试图从Arduino那里得到一个简单的入门套件,如果不花费超过100-200美元的镍并且将设置同时进行设置,就无法获得一个好的基本套件。从PIC获得了一个很棒的小型入门套件,价格约为40美元,它拥有一切:IDE,编程器,带有内置电路演示板和教程的入门板。一次购买。此外,PIC环境非常容易设置和工作。我在一小时内玩它。

答案 13 :(得分:2)

我会根据C交叉编译器的可用性做出选择。在过去,这将使AVR成为选择。我不确定现在的状态。

我在汇编程序中编写了一个PIC,但它并不是很有趣。 C在很多方面都要好得多。

答案 14 :(得分:1)

答案 15 :(得分:1)

AVR的最佳功能是www.avrfreaks.net论坛中的社区。你会找到一群经验丰富的电子工程师,愿意帮助新手继续前进。

答案 16 :(得分:1)

我想说的是我最简单的8051微控制器,Atmel已经推出了具有如此众多内置功能的微控制器....但是人们更喜欢使用AVR ......我的手会跟上8051家庭(如果觉得舒服),否则AVR的......

答案 17 :(得分:1)

我喜欢AVR。它易于编程和资源。很少像arduino这样的社区用它。

答案 18 :(得分:0)

关于其他Stack Overflow的AVR优势的更多讨论: http://embeddedgurus.com/stack-overflow/2009/04/pic-stack-overflow/

  

8位PIC的普及令我感到困惑。它的架构很糟糕 -   有限的调用栈只是第一个可怕的事情。投入   需要与单个中断向量一起进行寻呼和存储   你有一个编程模型的噩梦。这将是一回事   如果这是8位设备的标准 - 但事实并非如此。 AVR   架构吹掉PIC,而HC05 / HC08也是   PIC之前的街道。鉴于我的选择我认为我甚至会选择   8051超过PIC。我没有看到任何成本优势,包装   优势(Atmel刚刚发布了一款SOT23-6 AVR   指令集与其最大的设备兼容)或外围设备   设定优势。总之,我不明白!顺便说一下,这不是一个   对Microchip的起诉 - 他们是一家伟大的公司,我真的很喜欢   很多他们的其他产品,他们的网站,技术支持等等   (也许这就是PIC如此广泛使用的原因?)

答案 19 :(得分:-1)

我开始使用摩托罗拉M68HC11,这很简单。我认为你将获得与任何8Bit控制器相同的体验。