从 PIC 切换到 AVR

电器工程 微控制器 图片 avr 微芯片 爱特梅尔
2022-01-17 05:18:35

我使用 PIC16 和 PIC18 已经三年多了,也想了解 AVR。我没有具体的项目,但想尝试不同的架构。我想要一份关于 PIC 和 AVR 的兼容性报告。

uC的软件
PIC16和PIC18的Assembly和C我比较熟悉。AVR 微控制器的汇编和 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 协议上有自己的变体。我经常将 microchip 的 SPI 和 I2C 从设备与 PIC 结合使用。我可以将这些芯片(23K256、RTC、ENC28J60、...)与 AVR 结合使用吗?除此之外,是否可以使用 I2C 或 SPI 链接 AVR 和 PIC 芯片?

3个回答

我在 PIC 和 AVR(以及其他)上同样出色。

我喜欢 AVR 主要是因为AVR-libc这是一个体面的嵌入式库,它是开源的,并且有很好的文档记录(不像Microchip 的 plib,但 plib 确实有完整的源代码,我真的很感激)。AVR 使用常规的旧 gcc 和 gdb,这意味着没有愚蠢的 IDE 妨碍我。相同的工具可以在 Windows、OSX 和 Linux 上运行,而且我不需要 600MB+ 的带有 Java 和 Netbeans 或 Eclipse 的 IDE 来绊倒或用它们自己的垃圾污染我的源代码树。

AVR 的编程通常通过 ISP 或 JTAG 完成(最近有一个关于此的问题),从编程的角度来看,它与任何其他微控制器并没有太大区别。

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

至于用哪个……两者都试试,就像可口可乐和百事可乐的区别一样。它们非常非常相似,选择通常取决于价格和您喜欢使用的工具。

  • C 将与一些小的编译器差异相同。组装将完全不同,因为它是不同的架构。我建议使用 C,并且可能会选择足够的程序集来内联一些重要的例程。

  • 对于 IDE 和编程器,Atmel 提供与 Microchip 类似的产品,只需看看他们的网站,下载免费的 IDE 并选择一个编程器。

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

  • 是的,I2C 和 SPI 应该是一样的。连接 AVR 和 PIC 应该没问题。

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

uC的软件

PIC 和 AVR 指令集相似,但我不会开始在汇编中编写 AVR。使用 Atmel Studio 编写的 C 语言程序。它与 AVR 版本的 gcc 一起打包,并且有一个非常好的反汇编程序,可以显示你编写的 C 行,以及在它下面生成的汇编指令,非常方便。我也会下载WinAVR

电脑软件

使用爱特梅尔工作室不要为 Eclipse、Programmer's Notepad 或人们使用的任何其他随机 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)和带有 AVR uC 的 SPI 设备。你真的需要仔细阅读 AVR 数据表的 SPI 和 TWI 部分,不要跳过一行。每个接口都有多个用于数据顺序、时钟极性等的控制寄存器。这一切都在数据表中列出,并且非常易读。将 AVR 和 PIC 链接起来并不难。在建立通信之前,您只需要使用 SPI 或 TWI 模式。