Arduino的SoftwareSerial Library,为什么需要PCINT(pin change inturrupt feature.)?
The SoftwareSerial Library of Arduino, why it needs PCINT (pin change inturrupt feature.)?
Arduino 的软件串行库不适用于由 ATMEGA32 制成的克隆,因为它没有 PCINT 功能。串行通信如何与 PCINT 链接? ATMEGA32/16 的 INT 引脚可以通过修改 SoftwareSerial.cpp 文件以某种方式使用吗?
在 IDE 1.0.+ 之前,SoftwareSerial 曾经是 Rx 引脚的轮询。这是阻塞,需要不断检查 RX 的服务并限制波特率的质量。由于 NewSoftSerial 使用 PCint 替换了以前的旧 Polled SoftwareSerial。这会在 RX 引脚的变化上创建一个中断,然后检查时间。这不再阻塞并更好地模拟硬件串行端口,需要更少的 (none) 服务(或轮询)。
人们可以回到 1.+ 之前的旧版 IDE 的 SoftwareSerial 并尝试将其向前移植或尝试在旧版 IDE 中使用 ATmega32。我以为我在某个地方看到了一个 DEFINE 开关,它允许它在轮询模式下 运行。但我无法在当前版本中找到它。可能没有进入发布 IDE.
或者您可以尝试寻找 SoftwareSerial 的替代品。例如 tinyserial 我看到的可以追溯到 2010 年,可能需要一些更新。特别是在 1.5.8 上。在 1.0.6
上尝试可能会有更好的运气
Arduino 的软件串行库不适用于由 ATMEGA32 制成的克隆,因为它没有 PCINT 功能。串行通信如何与 PCINT 链接? ATMEGA32/16 的 INT 引脚可以通过修改 SoftwareSerial.cpp 文件以某种方式使用吗?
在 IDE 1.0.+ 之前,SoftwareSerial 曾经是 Rx 引脚的轮询。这是阻塞,需要不断检查 RX 的服务并限制波特率的质量。由于 NewSoftSerial 使用 PCint 替换了以前的旧 Polled SoftwareSerial。这会在 RX 引脚的变化上创建一个中断,然后检查时间。这不再阻塞并更好地模拟硬件串行端口,需要更少的 (none) 服务(或轮询)。
人们可以回到 1.+ 之前的旧版 IDE 的 SoftwareSerial 并尝试将其向前移植或尝试在旧版 IDE 中使用 ATmega32。我以为我在某个地方看到了一个 DEFINE 开关,它允许它在轮询模式下 运行。但我无法在当前版本中找到它。可能没有进入发布 IDE.
或者您可以尝试寻找 SoftwareSerial 的替代品。例如 tinyserial 我看到的可以追溯到 2010 年,可能需要一些更新。特别是在 1.5.8 上。在 1.0.6
上尝试可能会有更好的运气