0

我正在 Atmel Studio 7 中编写一个我刚刚安装并开始使用的程序。我已经为 Arduino 建立了工作室,并将 Atmega128 添加到支持的芯片库中。那里一切都很好。当我尝试使用 SoftwareSerial 库并编译时,我收到 Atmega128 和 Atmega64 不支持 SoftwareSerial 的错误。为什么是这样?这个 AVR 与 atmega328 等有什么不同,以至于它不支持该库。在 atmega128 上使用 SoftwareSerial 或 SoftUart 是否有更好的方法?谢谢

4

2 回答 2

0

通过我的研究,在使用 Arduino 库和设置时,它们包含的 SoftwareSerial 库不支持 atMega64 和 atMega128,因为这些芯片上的 PIN 和中断不同。通过修改此示例,我已成功在 atMega128 上的其他 GPIO 引脚上设置软串行。此示例仅用于传输。我仍在处理接收部分,因为它涉及设置中断和时钟。要记住的一个关键注意事项是确保您的时钟设置在整个项目中匹配并且串行波特率设置正确。我使用几种不同的波特率测试了我的代码。

作为初学者的旁注,我发现使用 Arduino 进行测试非常棒。但是,当尝试迁移到定制的 C 项目时,从 Arduino 项目迁移到干净的 C 项目是极其困难的。在我看来,学习 C 并在 Atmel Studio 环境中开始测试并远离 Arduino 几乎更容易。我希望这可以帮助某人开始编程。

于 2016-12-20T18:41:05.453 回答
0

您是否遇到此编译错误:This version of NewSoftSerial supports only 20, 16 and 8MHz processors

这来自 cpp 文件中的这些定义。如果您将 F_CPU 定义为 8000000,它可能会起作用,并确保您实际设置了寄存器以实现时钟速度。某些处理器默认使用较慢的时钟速度。查阅硬件手册。

请注意,需要在处理 NewSoftwareSerial.cpp 文件之前定义 F_CPU。您可以使用 D 开关在命令行中直接创建定义。

#if F_CPU == 16000000

[snip]

#elif F_CPU == 8000000

[snip]

#elif F_CPU == 20000000

[snip]

#else

#error This version of NewSoftSerial supports only 20, 16 and 8MHz processors

#endif
于 2016-12-02T08:18:13.077 回答