注释
嗨皮特 然而,一个人真的不应该在工作中发送 EEPROM 存储命令…… |
谢谢戴夫。 我不想相信用户行为良好(而且我也想行为不端),所以我有一些原因要流式传输 EEPROM 命令。 我已经有一个机制来等待我的 V0.9 发送器中的空缓冲区,所以它只是我对 V1.1 的更新触发了我的帖子。我认为最简单的解决方法是记住我在状态报告中看到的任何空闲字节的高潮,并假设当我再次看到它时它意味着“空缓冲区”。 我想要流式传输 EEPROM 写入(或读取)的用例是我在车库里有一台机器,我的桌子上有另一个 Arduino(没有防护罩或电机),我可以在那里空运行作业和测试代码生成。(但我也将桌面 Arduino 用于一些非 grbl 项目,因此它经常被覆盖。)所以我的 GUI 希望能够获取或安装设置到 grbl。对于 XYZ 限制等设置,我发现自己必须在 3 个地方使它们保持一致:车库 grbl、桌面 grbl 和 GUI,以便 GUI 中的画布或 3D 空间与机器的限制概念完全匹配。因此,能够自动询问它们或将它们传输到 grbl 听起来很吸引人,即使它们在 EEPROM 上的播放效果不是很好…… 你知道 Mega 在访问其 EEPROM 时是否也有同样的中断锁定吗? 谢谢皮特 |
好吧,只要你知道你在做什么(-: 我相信 Mega 具有相同的限制,因为它属于同一个 uP 系列。 |
PS:我一定要过来看看这台机器! |
在 EEPROM 读取期间不禁用中断,仅在写入期间禁用。 |
不幸的是,串行缓冲区和规划器缓冲区的大小是我忘记添加到 v1.1 中的内容。我打算将它放入 $I 构建信息字符串中,以便 GUI 可以查询 Grbl 以获取该数据。当我接触到它时它会在 v1.2 中,但我正忙于移植到 ARM。 如果您使用发送-响应协议,您可以流式传输 Grbl 设置并安全地写入它们。这是安全的,因为在您发送保存命令后它不会发送更多串行 RX 数据。您可以使用 simple_stream.py 脚本进行测试。有用。我一直这样做。 |
@chamnit谢谢桑尼的信息! |
欣赏这个!再次感谢您付出的巨大努力。 |
Grbl 0.9 报告串行缓冲区中使用的字节数,0 表示缓冲区为空。在 V1.1 中,报告更改为“空闲串行字节数”。这使得发件人的一些任务更容易。
我正在查看这个问题 [https://github.com/grbl/grbl/wiki/Interfacing-with-Grbl]
“当 Grbl 将数据存储到 EEPROM 时,AVR 要求在此写入过程中禁用所有中断,包括串行 RX ISR。这意味着如果 g 代码或 Grbl $ 命令写入 EEPROM,则写入期间发送的数据可能会丢失。这通常很少见,通常在程序内部不恰当地流式传输 G10 命令时发生。为了稳健性,GUI 应该跟踪和检测这些 EEPROM 写入命令,并在发送更多数据之前等待队列完成执行来适当地处理它们。 ”
所以我想知道串行队列是否为空。以前这很容易。有没有办法确定串行缓冲区在实现中有多大,以便我可以判断它何时为空?(间接地,我想强制处理器重置然后查询状态将显示可用容量。我真的不想走那条路。)是否有其他建议或是否有检测缓冲区容量的简单方法?
谢谢