答案 0 :(得分:13)
<强>优点强>
<强>缺点强>
简而言之,它们非常干净且易于使用8位微控制器。
8051是遗产:工具是可以通过的,架构是奇怪的(默认情况下,idata?xdata?大多数编译器中的非重入函数?)。
PIC24之前的PIC也是奇怪的(寄存器库)和差的时钟 - >指令吞吐量。也没有一流的开源C编译器。
PIC32正在与基于改进的MIPS内核的ARM7TDMI和ARM Cortex-M3竞争,并且具有GCC端口(非主线路)。
AVR32正在与Cortex-M3竞争,并提供相当不错的价值,特别是在低功率区域。
MSP430是超低功耗设备的王者,并且具有可通过的GCC端口(如果您的目标不是430X)。
HCS08非常便宜,但指令吞吐量很差。外围设备的变化很大。
ARM曾经是一个成本更高的入门级产品,但随着Cortex-M3架构的推出,与8位相比价格一直在下降。例如,LPC13xx系列在很多方面与ATmega32相当。 Luminary(TI)具有相当令人印象深刻的外围设备。答案 1 :(得分:4)
这取决于......首先,您必须知道微处理器的内容。
一般来说:
PIC:
ARM
Atmega介于两者之间
答案 2 :(得分:4)
我发现PIC系列(在MIPS版本之前)拥有最痛苦的指令集,这意味着如果你想节省空间,获得性能,控制等,汇编程序是首选语言。
8051是一个不那么痛苦,更多的寄存器,但仍然需要一些指令来做任何有用的事情(意味着你无法从MHz角度将这些与其他芯片进行比较)。我喜欢AVR在很多方面,他们拥抱自制软件和开发者社区,或者如果不是直接,那么与竞争对手相比,那里有更好的开发人员家庭。我不喜欢指令集,但它比PIC和8051领先几十年。我非常喜欢MSP430指令集,它是教学汇编程序的最佳指令集之一,TI不是开发人员友好的,这可能是一场斗争。 eZ430是在正确的道路上,但是因为没有它不能在其他所有内核版本上工作,所以goodfet会更好。
就我而言,MSP430和ARM拥有最好的指令集,这导致了良好的汇编程序和良好的编译工具。您可以找到上述所有商业工具,当然也可以找到8051,MSP430和ARM免费工具(MSP430和ARM可以使用GCC,8051不能,查找SDCC)。目前,mspgcc4.sf.net和CodeSourcery是用于MSP430和ARM的基于GCC的工具的地方。 LLVM支持两者,我能够让LLVM 27在dhrystone test中击败最新的GCC,但这是一次测试,LLVM在性能上落后但正在改进。
就查找和创建免费的交叉编译器而言,我认为LLVM已经是最容易获取和使用的,并且未来只会变得更好。可悲的是,用于LLVM的MSP430端口看起来我可以在下午的PowerPoint演示文稿中做些什么,而不是一个严肃的端口。
我的答案是,这取决于你在做什么,我建议你尝试所有这些。目前,评估板的价格在50美元以下,部分在30美元以下。即使在ARM系列(ST,Atmel,Stellaris,LPC等)中,如果您尝试它们,您仍会发现各种各样的功能和怪癖。避免使用LPCexpresso,mbed2和STM32引物。一般避免使用LPC,一般不要使用Cortex-M3,直到你在ARM7上割牙为止。看看SparkFun for Olimex和其他主板。尽管可能是LPC ARMmite PRO和Arduino Pro是不错的选择。 eZ430是一个很好的MSP430启动,我不记得是谁制造了8051的东西,Renasys(sp?),8051并非都是相同的,寄存器空间各不相同,你必须为此做好准备。如果你想玩8051,我可能会寻找8051模拟器。
我看到AVT并且肯定ARM继续占主导地位,我希望看到MSP430不仅仅用于超低功耗。使用ARM,AVR和MSP430,您现在和将来都可以使用并习惯GCC工具,即使GCC不是世界上最好的编译器,它也有很多好处,它是迄今为止最好的支持编译器。我会避免使用专有的编译器和工具。我会寻找具有现场可编程的非专有编程接口的设备,JTAG是好的,但是例如Cortex-M3上的新SWD JTAG是坏的。 TI MSP受此影响,但有些黑客已经解决了这个问题,至少目前是这样。我真的没有太多关于PIC的好处,也不会尝试。需要注意的一件事是胶合逻辑,零件或系列是否有SPI或I2C或您想要使用的任何总线,是否需要内部上拉或有线或输入?
有些芯片没有这个选项,你必须添加外部硬件。你需要中断,有条件吗? ARM倾向于赢得这个,因为它是许多人使用的核心,所以每个ARM供应商都有自己的I / O,所以你仍然可以生活在ARM世界并有很多选择,AVR和MSP将受到非常有限的限制比较。使用ARM,工具将成为最先进的技术,ARM是目前使用最多的处理器。 AVR和MSP是特殊的项目插件,不太广泛支持和脆弱。尽管与SBC或计算机平台上的英特尔相比,ARM的功耗较低,但它可能不如AVR或MSP那样低功耗。你真的需要看看你的项目并为工作挑选合适的处理器,我不会也不会将自己限制在一个家庭。由于评估板价格便宜,并且几乎所有人都可以使用免费工具,因此只需要花几个晚上或周末来学习每个工具。我建议学习多个AVR,并学习多个微处理器。
答案 3 :(得分:3)
在频谱的这一端,实际上只有两个因素产生了很大的不同。首先,数量较少,唯一重要的是哪种架构最适合您的开发需求。如果您已经熟悉PIC,那么学习avr并没有多大意义,反之亦然。选择您喜欢的架构,然后对该架构上的选项进行排序,以查看哪种型号符合您的特定需求。
在数量上(例如,20个或更多单位),您可以选择恰当匹配设备需求的合适平台,以尽可能降低成本。
一般而言,Pic和avr平台适用于简单的单一功能设备,其中arm用于需要完整的操作系统堆栈(如QNX或Linux)以用于TCP或实时OS操作的情况。
答案 4 :(得分:2)
如果您想要最广泛的外围设备,性能,价格点,软件和工具支持以及供应商,那么很难击败基于ARM Cortex-M3的部件。
但直接解决您的问题,整个AVR系列具有一致的架构和从Tiny到Mega的通用外设集(不是AVR32,但完全不同)。这与PIC的显着区别在于,当向上移动范围(PIC10,12,16,18,24,32)时,您将获得不同的外设设计,不同的指令集,并且需要投资于不同的编译器和调试硬件。
AVR的指令集是为高效的C代码编译而设计的(再次与PIC不同)。
8051是几十年前最初由英特尔推出的架构,但现在被用作许多供应商的8位设备的核心。它有一些巧妙的技巧,例如通过其8个重复的寄存器库的高效多任务上下文切换,以及一个位可寻址存储器块,但具有奇特的存储器架构和有限的地址范围(如大多数8位器件)。非常适合小型目标设备,但不是真正的通用目的。ARM Cortex-M3基本上取代了ARM7TDMI,是一款设计精良的清洁设计。它需要最少的汇编程序启动代码,甚至ISR和向量表也可以直接用C编码,而不需要任何奇怪的编译器扩展或汇编程序入口/出口代码。它的位带技术允许所有存储器和外设都是原子位可寻址的,这对于快速I / O和安全多线程非常有用。基本上它被设计为在系统级别允许C或C ++代码而无需非标准编译器扩展。它当然是32位架构,因此没有8位器件的资源或算术限制。低端器件的价格与性能更高的8位器件竞争,并且大部分16位器件被淘汰(16位器件几乎已经过时)。
要记住的另一个关键事项是PIC和AVR来自单个供应商,而8051和ARM是许可核心。每个被许可方都添加了自己的外围设备,因此外围设备上的供应商之间没有共性,因此设备驱动程序代码在切换供应商时需要移植,并且您需要确保该部件具有您需要的外围设备。如果你很好地设计你的设备层,这很少是一个问题。
答案 5 :(得分:0)
嗯,回答并不容易。这主要取决于你以前用过的东西。如果您已经是AVR用户,那么使用它是很好的。另一方面,你可以找到具有类似功能的PIC,所以我认为这主要是个人偏好。我认为大多数ARM都比atmega32系列更强大。如果您需要好的建议,请告诉我们您计划使用它的目的。
AVR具有平坦的内存模型,并提供免费的开发工具,并且可以使用廉价的开发硬件。
我对8051的评论不够了解。
哦,如果你正在考虑原创的atmega32,我会说这是一个坏主意。它很快就会被弃用,所以你可能想要考虑atmega32系列的新型号。