从带有 ATmega32 的嵌入式 C 开始(ATmega AVR 系列)

电器工程 avr 大气压 图书 C
2022-01-21 03:01:34

我有一块 ATmega32 板,我认为从微控制器开始是完美的。我曾经在嵌入式 C 中胡言乱语(那是我拿到这块板的时候),但由于某些事情,流程停止了。现在我有两个问题:

  1. 从 avr 系列开始使用 C 的最佳免费资源是什么。我知道 AVR-GCC,但一直在寻找一些教程或免费书籍来开始我的工作。

  2. 我应该直接跳到C还是先通过ASM?我看到周围有很多 asm 书。那么什么是更好的选择呢?

在互联网上搜索时,我在这里找到了 ATmega32 的 Arduino 引导加载程序http://retrointerfacing.com/?p=30但问题是我犹豫是否要对保险丝位和所有东西进行一些修补。这样做安全吗?

4个回答

avr-libc 文档是 AVR 上 C的重要信息来源。这是另一个

就个人而言,我更喜欢在 C 中工作。使用 avr-libc 可以在 AVR 系列中为您提供良好的代码可移植性。但是,如果您正在做任何时间紧迫的事情,您可能不得不求助于 ASM。

如果您有一个并行或“高压” AVR 编程器,那么您可以随时重新编程熔丝位。如果您使用的是串行(系统内编程,ISP),请注意不要禁用 SPIEN 或 RESETENABLE 位,因为它们会阻止您重新编程。

有一个Arduino HV 编程屏蔽可用。

加入AVR 怪胎如果您遇到困难,您会找到很多资源和帮助。

我将从 C 开始。您可能偶尔需要 ASM 的片段,但对于大多数应用程序来说,这都是关于它的。如果您决定推出自己的引导加载程序,则例外是引导加载程序。

Dave Mellis 在 MIT HLT wiki 上发布了 AVR 教程。他讨论了为 ATmega328 设置工具,但它似乎足够通用,可以帮助您使用不同的设备。

http://hlt.media.mit.edu/wiki/index.php/AVR_Programming

Atmel 网站上的库和示例似乎不错。我使用了他们应用笔记中的一些片段。我在 RTC 代码中使用的 I2C (TWI) 库来自 Atmel 站点。

我会先选择 Arduino。大量书籍、教程和示例代码。和一个伟大而美好的社区。然后,如果您熟悉 Arduino,请尝试使用 C 和 AVR-GCC。

这些天我不能推荐 ASM。可能有些地方你可能不得不使用 ASM,但大多数事情都可以用普通 C 来解决。使用 ASM,你可以了解微控制器如何工作的一些非常详细的信息,但如果你想让事情发生得更快,我会坚持C 或 C++。