对话
我已将您的修改分成这两个补丁: |
泗门、 很高兴您重新上线!房子怎么样? 补丁看起来不错。我在协议模块中还做了一个修复,以适应我遇到的字符接收错误: void protocol_process() if((char_counter > 0) && ((c == ‘ \n’) || (c == ‘\r’))) { // 行已完成。然后执行! 一些新闻。我将 TinyG 从 4 个独立定时器改回使用 DDA。事实证明,这种方法根本行不通,因为计时中的任何错误都是累积的,如果轴彼此不同步,最终会导致电机高速失速。所以回到 DDA。 我对 DDA 算法进行了一些改进,允许在子步骤级别进行非常精细的插值。有点像 DDA 级别的微步进。我也在计算超频率以尽量减少插值误差。我正在对此进行最后的润色,但应该在本周完成。 奥尔登 |
房子很好。我们甚至还有一些家具和餐具!虽然还没有研讨会,所以我无法测试超出逻辑分析仪所能看到的任何东西(不多!)。 我看到了 protocol_process 的变化,但我推迟了它,因为我不完全理解它背后的原因——而且因为串行模块实际上返回一个带符号的 int(!) 所以代码对我来说似乎有点“正确”(或者在至少正确地引入了一个逻辑反错误来反击库中的设计错误)。我知道我偷来的串行模块又旧又不稳定,因此我决定完全更换它——所以我决定开始这样做,然后修复这部分。 或者你能向我解释一下这段代码与我原来的代码有何不同吗?这不就是另一种写同样东西(在二进制级别)但具有更逻辑类型的方法吗? |
我必须回过头来看看我做了什么才能确定,但这是我记得的。 当我使用 AVRstudio 版本 4(使用 gcc libc v1.6.7)编译时,原始形式的代码失败了。原始代码没有检测到返回的 -1。我认为通过调用它 unsigned char 它知道可能的 0xFF 作为有效的 ASCII 返回值,而不是忽略它认为是代字号 (0x7F)。-1 转换是为了确保每个人仍然占用 8 位,而不是更多。 我可能有部分错误,但我认为这就是正在发生的事情。 我希望你不会去新的 C++ 连线系列。我不是 C++ 的忠实粉丝,我的开发环境也不支持它 :(。我知道你将它用于 Twister。 请随意使用我通过 TinyG 发送给您的任何 XIO 代码。它实现了一个非常完整的 stdio 系统,仅在 Atmel 设备上表现得像 Unix。我会很快将所有内容发布在 github 上,但如果您需要更新,请告诉我。 奥尔登 |
好的,谢谢你的详细信息。我会调查一下。我绝对不会 有趣的细节:当我为 twister 将 grbl 移植到 c++ 时,编译后的 在 2011 年 5 月 31 日星期二,aldenhart
|
您可能需要 XIO 代码中的许多代码,即使您不需要或不需要它们。让我做一个简短的清理,并将其放在 github 上,就像我几个月来一直想做的那样。 奥尔登 2011 年 5 月 31 日下午 2:41,simen 写道:
|
无论哪种方式,我都会喜欢。谢谢! 2011 年 5 月 31 日星期二晚上 9:21,aldenhart
|
你睡觉吗?现在在奥斯陆几点钟了? 奥尔登 2011 年 5 月 31 日下午 3:32,simen 写道:
|
呵呵。现在是 22:05。我和我最小的儿子在家(斯堪的纳维亚 2011 年 5 月 31 日星期二晚上 10:03,aldenhart
|
泗门、
我不确定我这样做是否正确,因为我在边缘工作但它推回了主人。我还在习惯github。
不管怎样,我做了一些改变并测试了它们——它们在 Uno 和 grblshield v3 上工作(你有一个 v2 来了——如果还没有的话)。变化是:
对不起,如果我搞砸了推/拉请求。我将不得不检查如何推到边缘(当我从 master 分叉和克隆时)。我可能需要克隆边缘。