从PIC切换到AVR [关闭]


14

我已经与PIC16和PIC18一起工作了三年多,并且也想了解AVR。我没有特定的项目,但想尝试使用不同的体系结构。我想获得有关PIC和AVR的兼容性报告。

uC的软件
我熟悉PIC16和PIC18的Assembly和C。AVR微控制器的Assembly和C变体与PIC变体有何不同?有很多区别吗?

PC的软件
我需要为AVR芯片编译和组装程序什么软件?它是免费的,我可以在哪里下载?

编程硬件
我已经使用VOTI的Wisp648对PIC进行编程,但是该板无法对AVR进行编程。我是否必须购买程序员,或者网络上有任何我可以自行构建的电路?

uC的硬件
对于PIC,我已经使用了很多PIC18F4620。我正在寻找具有类似功能的AVR。我喜欢的功能有:

  • 内部振荡器
  • 计时器
  • 5V和3.3V版本
  • ADC
  • 具有I2C和SPI支持的MSSP
  • (E)USART
  • 脉宽调制
  • 许多I / O针脚
  • > = 32kB程序存储器,> = 2kB RAM
  • DIP包装

哪种AVR芯片具有相同的功能?该软件包是一个交易突破者,我真的想要DIP,PDIP或SPDIP。具有类似功能的AVR是什么?

SPI和I2C变种
有人告诉我Microchip在SPI和I2C协议上有自己的变种。我经常将微芯片的SPI和I2C从器件与PIC结合使用。我可以将这些芯片(23K256,RTC,ENC28J60等)与AVR结合使用吗?除此之外,是否可以使用I2C或SPI链接AVR和PIC芯片?


@LeonHeller对不起,我不清楚,我没有特定的项目,但想花一点时间来了解不同的体系结构。

5
这个问题过于笼统,不适合我们的Q + A格式,但是通常您会阅读要考虑使用的处理器的数据表。我不知道它在黑暗的一面是什么样,但是Atmel可能像Microchip一样有一个选择器指南。这些公司有太多的微观因素,任何人都不要忘记。在过去的15年中,我已经成功地完成了100多个PIC项目,但是在选择一个新的PIC项目时仍会参考选择指南。
Olin Lathrop

1
可以轻松研究AVR的使用方法和开发工具等指令集。这些东西得到了很好的支持,例如PIC。我推荐这段有趣的视频:youtube.com/watch?
v

看一下electronics.stackexchange.com/a/66163/8627并更改Linux for Windows。工具链基本相同。不完全相同,但充满了Google的能力。
jippie 2013年

@jippie不错!保存在我的书签中,以方便我到达样品:)

Answers:


8

uC的软件

PIC和AVR指令集相似,但是我不会以汇编方式开始对AVR进行编程。使用Atmel Studio用C编程。它随附了gcc的AVR版本,并具有一个非常好的反汇编程序,可以向您显示您编写的C语言行,并在其下非常方便地显示生成的汇编指令。我还将下载WinAVR

PC软件

使用Atmel Studio。不要理会Eclipse,程序员的记事本或其他任何人们使用的随机IDE。Atmel Studio基于Visual Studio,具有Atmel提供的各种插件,并且内置了良好的模拟器。

编程硬件

有很多便宜的AVR编程器,例如Bus Pirate,但有Atmel ICSP。如果您打算进行多个AVR项目,则完全值得额外支出。它使用USB,并且可以从Atmel Studio内部进行控制。

uC的硬件

有一个选择器工具,但是通常,低端AtMega典型硬件是:

Internal Oscillator (8 MHz)
3 Timers
2.7-5.5V Supply range
8-channel multiplexed ADC
I2C and SPI support
USART
2 PWMs that work in conjunction with the 8 bit timers

选择性能更高的芯片将为您购买更多的计时器和PWM。可用的闪存和SRAM数量取决于特定的芯片。AtMega的大多数零件都可以在PDIP中使用,真正高引脚数的是QFP。

SPI和I2C变体

可以将MCP I2C(AVR的TWI)和SPI器件与AVR uC一起使用。您确实需要仔细阅读AVR数据手册的SPI和TWI部分,不要跳过一行。每个接口都有多个控制寄存器,用于控制数据顺序,时钟极性等。所有这些都在数据表中列出,并且可读性强。链接AVR和PIC并不困难。在建立通信之前,您只需要使用SPI或TWI模式即可。


3
ATtiny是ATmega的弟弟。在编程方面,它们非常相似。通过仅更改Makefile中的零件类型,我已将软件从大型软件“移植”到小型软件。
jippie 2013年

@CamilStaps jippie很好。我不知道这与PIC是否相似,但是AVR处理器大部分都共享寄存器名称和位顺序。有一些例外,例如功能更强大的处理器可能会将控制寄存器分为两部分。数据手册的每一章都有一个寄存器描述部分,使比较容易。
马特·杨

PIC至少也属于一个系列(PIC16,PIC18,..)。感谢小费(@jippie)!

这是一个很好的解释。我最喜欢的AVR芯片是ATmega328p和ATtiny24。其他常见的行是tinyx5和tiny2313。这些都可以在DIP中使用,并且都具有完全相同的基于SPI的编程接口:ISP。要获得一个廉价,快速的开始,请尝试以下Sparkfun的USB编程器:sparkfun.com/products/9825另外值得一提的是一个流行的Windows程序包,称为WinAVR:winavr.sourceforge.net您不需要任何开发板上,只有电源,旁路电容,甚至还有晶体。
Kurt E. Clothier

12

我在PIC和AVR(以及其他产品)上同样出色地工作。

我之所以喜欢AVR,主要是因为AVR-libc。这是一个不错的嵌入式库,它是开源的,并且有据可查的文档(不喜欢 Microchip的plib,但是plib确实有完整的源代码,对此我表示衷心的感谢)。AVR使用常规的旧版gcc和gdb,这意味着没有笨拙的IDE妨碍我。相同的工具可以在Windows,OSX和Linux上运行,并且我不需要具有Java和Netbeans或Eclipse的600MB + IDE即可使用自己的垃圾处理源或污染我的源代码树。

对AVR进行编程通常是通过ISP或JTAG进行的(最近有一个问题),从编程的角度来看,它实际上与任何其他微型计算机没有太大区别。

从个人角度来看,我已经变得非常不喜欢Microchip的数据手册和零件编号。我使用Microchip从事嵌入式设计工作很长一段时间,我一直很喜欢它们,但是如今,当我寻找微型芯片时,我倾向于从Atmel开始,尽管它们也不是没有缺点。(SAM-BA对于他们的SAM零件是垃圾,我在他们的工厂支持方面也遇到了麻烦。)

至于要使用哪种...尝试两者,就像可乐和百事可乐之间的区别。它们非常非常相似,选择通常取决于价格和您喜欢使用的工具。


11
  • C会有所不同,但编译器会有所不同。组装将是完全不同的,因为它是不同的体系结构。我建议使用C,并且可能会选择足够的程序集以内联一些重要的例程。

  • 对于IDE和程序员,Atmel提供了与Microchip类似的产品,只需查看其网站,下载免费的IDE并选择一名程序员即可。

  • 与18F类似的芯片可能类似于ATMega328(在Arduino中使用的那种芯片),我相信它们具有DIP封装版本。

  • 是的,I2C和SPI应该工作相同。链接AVR和PIC应该没问题。

免责声明-我已经很长时间没有使用AVR了。如今,我主要使用PIC和ARM,但过去从未使用SPI / I2C连接任何东西,因为经常使用SPI在PIC / Atmel EEPROM / Cortex-M3 / FPGA之间进行连接。SPI是一个非常基本的协议,几乎任何现代微型计算机都应该能够在硬件中使用它。
I2C有点复杂。我不记得许可/命名(例如2线,I2C,SMBus)的故事,但据我所知,大多数外围设备在基本级别上都是兼容的。阅读Wiki页面以获取更多详细信息。


Atmel的TWI(两线接口)与I2C兼容。I2C可以从NXP(以前的Philips技术)获得许可,但是Atmel设法解决了许可费用问题。
jippie 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.