注释
串行模块应该相当简单,但代码没有直接从标准 arduino 库中提取的原因是,在编写 Grbl 时,代码在发送时被阻塞,这意味着大量处理周期被浪费在等待 IO 上, Grbl 真的负担不起。据我所知,这可能现在已经改变了——而且标准的 arduino 库是 C++,而 Grbl 是严格的 C,所以它不能直接应用。 如果有人可以阅读标准 Arduino 库的更新并查看是否有任何线索可以使 Grbl 在新的 Arduino 修订版上使用串行接口更稳健地工作,这将非常有帮助。 |
当前的 Arduino IDE (1.0.1) 和附带的库使用环形缓冲区来处理 USART。它是 C++ 并且是一个丑陋的文件(带有剩余的注释和所有您不希望在公开发布的软件的生产质量源中找到的东西),但它可以工作。 现在,如果 OP 给出实际问题的实际示例以便可以执行正确的调试,这将非常有帮助,但是在他的帖子中看到关键字“USB”我有几点要说:
Grbl 有通过 USART0 与外界对话的代码。如果上传到较新的 Leonardo,它将无法与计算机通信,因为 PD0、PD1 不再连接到任何 USB 到 RS232 适配器(和 Arduino 库,当在 Leonardo 上运行时,不要使用USART0 而是通过 USB 创建 CDC 接口,将其呈现给计算机并通过它从用户代码重定向串行活动)。 可以在 Teacup 固件中找到如何在非 Arduino 代码中处理该问题的示例,该固件在为支持 USB 的 MCU 编译时使用 LUFA。 希望这能说明手头的问题。 |
极好的,@csdexter. 谢谢! |
我一直在使用不同的 Arduino 的 Mega Revs 和这个代码。他们在usb读写方面遇到了一些挑战。这段代码中的 prints usb / read write 似乎很特别。为什么不使用简单的标准打印读写代码。