开源改变世界

将代码移植到 Arduino #2

推推 grbl 3年前 (2022-10-30) 333次浏览 0个评论
关闭
汉兰达01 开了这个issue 2010 年 3 月 21 日 · 31 条评论
关闭

将代码移植到 Arduino#2

汉兰达01 开了这个issue on 21 Mar 2010 · 31 条评论

注释

将代码移植到 Arduino #2

寻求一些建议,

我应该使用不同的编译器,上传器。你在用什么?它是否需要硬件上的某种其他类型的基本固件,这与 Arduino Mega 附带的不同。

我有程序员记事本 [WinAVR] 来查看代码,但这似乎不能编译和加载到硬件。

所以,我目前正在将 Grbl 代码复制到 Arduino 软件中,然后将其加载到我的 Arduino Mega 硬件中并运行它。我必须禁用某些代码行才能让它运行。似乎 Arduino 附带了 Wiring.h 文件。它似乎与:#include “wiring_serial.h”、beginSerial 等…函数相冲突。我正在四处寻找是否可以禁用它。

我想我可能还需要做一些其他的调整,因为我在 ATMega1280 上运行。我认为您的代码适用于 ATMega168。我想我可以弄清楚这一点。只是一些与串行相关的不同标签。

将代码移植到 Arduino #2

我对复制到 Arduino 中的代码进行了一些调整。我在串行程序的末尾添加了 2 号,它们中的大多数都可以工作。这让我了解了我无法弄清楚的 Arduino 图书馆。我现在面临的唯一挑战是“SIGNAL(SIG_USART_RECV)”中断似乎在 Arduino 中不起作用。我要么调整了一些东西,要么它与某个地方可能发生在隐藏的 Arduino 库中的中断过​​程相冲突。我将对其进行更多修改并提供更新。

将代码移植到 Arduino #2
作者

汉兰达01 评论 on 26 Mar 2010

以下在 Arduino 中禁用 Arduino 的串行功能,以便 Grbl 串行工作。
(尽管仍然有中断挑战。我将尝试一个裸最小串行程序来尝试解决这个问题)

// 定义 HardwareSerial_h 以抑制 Arduino 标准串行类的加载
#define HardwareSerial_h

将代码移植到 Arduino #2

我做了最简单的程序,并弄清楚为什么我无法在 Arduino Mega 上获得中断“SIGNAL(SIG_USART_RECV)”。我不得不给它加一个 0。“SIGNAL(SIG_USART0_RECV)”有效!

将代码移植到 Arduino #2

更新!!!!迈向成功的第一步。我已经使用 Grbl 在我的 x 轴上进行了第一次移动。我已经成功地左右移动了它。

在 Arduino 中:我发现手动输入命令有问题。它不会发送触发 gcode 行运行的回车符“r/n/”。所以我在一行gcode触发器运行的末尾临时做了“*”条目。

现在我已经运行了基础知识,我正在考虑创建一个 gui。你目前在用什么?

我开始学习 python、tcl/tk 和 opengl,以便我可以使用 Linux EMC2 Axis GUI 界面并对其进行修改以发送串行代码行。

将代码移植到 Arduino #2

进度更新

我已经学习了一些 Python 教程,并且正在拼凑一个我自己的简单 USB Axis 版本,它可以将数据发送到 Simen grbl / Arduino 板。不过还有很多东西要学。

使用 python 我已经想出了如何:

  • 对来自 Arduino 板的数据进行串行 USB 读取。写不应该很难弄清楚。
  • 做 OpenGL 3D 图形程序,我可以在其中绘制和旋转东西
  • 做文本编辑器,我可以在其中打开编辑和保存文件。

我想我现在已经弄清楚了基本组件。接下来我需要将这些部分放在一起并对文件进行一些文本字符串处理。

(我还没有从 emc 轴代码中使用太多。它非常大,上次看它时我很难找到路。也许稍后。)

将代码移植到 Arduino #2
成员

四门 评论 2010 年 5 月 13 日

很抱歉我之前没有回复。需要让 github 向我发送有关问题的更新。直到现在才注意到。

我个人使用此存储库的 ./scripts-folder 中的 ruby​​-scripts。控制台使用 socat 为 grbl 提供交互式 shell。stream 是一个小型 ruby​​ 程序,用于将 gcode 文件流式传输到 Grbl。它工作得很好,我已经使用这个基本设置成功地完成了一些铣削工作——但一个合适的桌面客户端当然会好得多。

将代码移植到 Arduino #2

你好汉兰达,
你有在 Arduino Mega 上运行 grbl 吗?
我的串行通信没有成功…

将代码移植到 Arduino #2
成员

四门 评论 2011 年 4 月 9 日

我已将 Grbl 的不同变体移植到 mega 和 c++。见
https://github.com/simen/twister。它不是龙门 CNC 驱动程序,因此您不能
按原样使用它(它使用 scara 臂并适用于 3D 沉积打印),但可以使用 随 Arduino 分发
的 C++ 库处理串行通信和所有内容,并且运行良好。

回复晚了非常抱歉。我们突然找到了我们的梦想家园并买下了它。
Grbl 开发暂停到 6 月。

2011 年 3 月 22 日星期二上午 12:39,buddhafragt <
reply@reply.github.com > 写道:

你好汉兰达,
你有在 Arduino Mega 上运行 grbl 吗?
我的串行通信没有成功…

直接回复此邮件或在 GitHub 上查看:
https ://github.com/simen/grbl/issues/2#comment_900863

将代码移植到 Arduino #2

您好 Simen,
感谢您的回复,
我做了一些修改以在 Arduino DIE 中运行代码,但至少我
收到了一个我不明白的编译器错误消息:

/Applications/Arduino.app/Contents/Resources/Java/libraries/inc/stepper.c:
在函数“st_init”中:
/Applications/Arduino.app/Contents/Resources/Java/libraries/inc/stepper.c :
22 8 : error: ‘TCCR2A’ undeclared (first use in this function)
/Applications/Arduino.app/Contents/Resources/Java/libraries/inc/stepper.c:22
8: error: (每个未声明的标识符只报告一次
/Applications /Arduino.app/Contents/Resources/Java/libraries/inc/stepper.c:22
8:错误:对于它出现的每个函数。)/ Applications/
Arduino.app /Contents/Resources/Java/libraries/inc/stepper .c:22
9: 错误: ‘TCCR2B’ undeclared (first use in this function)
/Applications/Arduino.app/Contents/Resources/Java/libraries/inc/stepper.c:22
9:错误:“CS21”未声明(首次在此函数中使用)
/Applications/Arduino.app/Contents/Resources/Java/libraries/inc/stepper.c:23
0:错误:“TIMSK2”未声明(首次在此使用函数)
/Applications/Arduino.app/Contents/Resources/Java/libraries/inc/stepper.c:23
0:错误:未声明“TOIE2”(在此函数中首次使用)

stepper.c 未在代码中声明…. ??

问候
迈克尔

上午 08.04.2011 20:51 Uhr schrieb “simen” unter
reply@reply.github.com

我已将 Grbl 的不同变体移植到 mega 和 c++。见
https://github.com/simen/twister。它不是龙门 CNC 驱动程序,因此您不能
按原样使用它(它使用 scara 臂并适用于 3D 沉积打印),但可以使用 随 Arduino 分发
的 C++ 库处理串行通信和所有内容,并且运行良好。

回复晚了非常抱歉。我们突然找到了我们的梦想家园并买下了它。
Grbl 开发暂停到 6 月。

2011 年 3 月 22 日星期二上午 12:39,buddhafragt <
reply@reply.github.com > 写道:

你好汉兰达,
你有在 Arduino Mega 上运行 grbl 吗?
我的串行通信没有成功…

直接回复此邮件或在 GitHub 上查看:
https ://github.com/simen/grbl/issues/2#comment_900863

将代码移植到 Arduino #2

我忘了说我尝试了 TWISTER….
确定这里不适合询问有关 TWISTER 的问题…

将代码移植到 Arduino #2

你好,

这么晚才回复很抱歉。我没有直接让我的 grbl 运行。已经有一段时间了……但是我所做的是对其进行了一些修改/微小的更改/加上添加了一些首选项,并且我制作了一个略有不同的版本。我讨厌偏离基地,但我做到了。

日期:2011 年 3 月 21 日星期一 16:39:41 -0700
发件人:reply@reply.github.com
收件人:gooder01@hotmail.com
主题:回复:[GitHub] 将代码移植到 Arduino [simen/grbl GH-2 ]

你好汉兰达,
你有在 Arduino Mega 上运行 grbl 吗?
我的串行通信没有成功…

直接回复此邮件或在 GitHub 上查看:
https ://github.com/simen/grbl/issues/2#comment_900863

将代码移植到 Arduino #2

我在 Arduino Mega 上修改后的 grbl 版本并进行了一些额外的更改,位于:https
://github.com/Highlander01/Highlander01HMI 它与 grbl 基本相同,但有所不同。它也可能是 Simens grbl 背后的几个版本。我最近没有做任何补充。

日期:2011 年 3 月 21 日星期一 16:39:41 -0700
发件人:reply@reply.github.com
收件人:gooder01@hotmail.com
主题:回复:[GitHub] 将代码移植到 Arduino [simen/grbl GH-2 ]

你好汉兰达,
你有在 Arduino Mega 上运行 grbl 吗?
我的串行通信没有成功…

直接回复此邮件或在 GitHub 上查看:
https ://github.com/simen/grbl/issues/2#comment_900863

将代码移植到 Arduino #2

你好汉兰达,

感谢您分享您的修改!
我今天试试!

最好的问候
迈克尔

Am 28.04.2011 5:25 Uhr schrieb “Highlander01” unter
reply@reply.github.com

我在 Arduino Mega 上修改后的 grbl 版本并进行了一些额外
更改的副本位于:https
://github.com/Highlander01/Highlander01HMI 它与 grbl 基本相同,但有所不同。它也可能是
Simens grbl 背后的几个版本。我最近没有做任何补充。

日期:2011 年 3 月 21 日星期一 16:39:41 -0700
发件人:reply@reply.github.com
收件人:gooder01@hotmail.com
主题:回复:[GitHub] 将代码移植到 Arduino [simen/grbl GH-2 ]

你好汉兰达,
你有在 Arduino Mega 上运行 grbl 吗?
我的串行通信没有成功…

直接回复此邮件或在 GitHub 上查看:
https ://github.com/simen/grbl/issues/2#comment_900863

将代码移植到 Arduino #2

西门你好!

我尝试了从 github 下载的 Twister。

位我从编译器收到一条错误消息:

serial_protocol.cc:在函数’void sp_process()’中:
serial_protocol.cc:84:错误:’char_counter’未在此范围内声明
serial_protocol.cc:86:错误:’printByte’未在此范围内声明
serial_protocol.cc :87: 错误: ‘printString’ 未在此范围内声明

似乎缺少一个库,对吗?

顺便提一句。我使用 AVR Studio 4.1

此致

迈克尔·齐根

将代码移植到 Arduino #2
成员

四门 评论 2012 年 10 月 22 日

抱歉,Twister 是使用 AVR-GCC 构建的,这是一个完全不同的工具链。我使用
Arduino 应用程序包中提供的那个。

在 2012 年 10 月 21 日星期日下午 12:41,Michael notifications@github.com写道:

西门你好!

我尝试了从 github 下载的 Twister。

位我从编译器收到一条错误消息:

serial_protocol.cc:在函数’void sp_process()’中:
serial_protocol.cc:84:错误:’char_counter’未在此范围内声明
serial_protocol.cc:86:错误:’printByte’未在此范围内声明
serial_protocol.cc :87: 错误: ‘printString’ 未在此范围内声明

似乎缺少一个库,对吗?

顺便提一句。我使用 AVR Studio 4.1

此致

迈克尔·齐根


直接回复此邮件或在 GitHub 上查看 https://github.com/ /issues/2 #issuecomment-9641477。

将代码移植到 Arduino #2

simen> AVR Studio 使用 WinAVR,事实上,它是为 Windows 编译的 avr-gcc :-) 此外,报告的错误很可能是所述文件中的错字:它可能应该读取line_counter而不是char_counter. 其他两个错误是由 Arduino 的不完整重构引起的:使用 ofprint*()而不是Serial.print().

将代码移植到 Arduino #2
成员

四门 评论 2012 年 10 月 22 日

我猜你是对的,@csdexter. 这个项目并不是真正的公共消费(你可能需要了解很多关于电机配置的知识才能立即使用它),事实证明我没有推动最新的变化。我刚刚做了,现在编译得很好。我真的很抱歉@buddhafragt

将代码移植到 Arduino #2 西门 重新打开了这个 2012 年 10 月 22 日
将代码移植到 Arduino #2
成员

四门 评论 2012 年 10 月 22 日

让我们清楚这一点@buddhafragt: Twister不是Grbl 到 Mega 的端口。它是来自早期版本的 Grbl 的前叉,旨在驱动两个步进电机,这些步进电机已在髋关节处连接成 scara 臂配置,作为超便宜的 XY 工作台替代品。我已经成功地使用它使用早期的 makerbot 打印头构建了一个零件,但它非常非常具有实验性!

将代码移植到 Arduino #2

我也尝试在 AVR Studio 和 Arduino 0.23 中编译它,但编译器错误完全相同。
解决方案@csdexter提供不解决问题…
我认为问题是 ‘char_counter’ ‘printByte’ 和 ‘printString’ 实际上是在任何地方声明的,所以我认为只是缺少一个库。
@simen,您为 GRBL 使用了哪种 og IDE/编译器?
AVR Studio 为我工作,但我尝试将它移植到 Arduino IDE 并进行一些修改,它可以编译,但编译的程序有一些意外错误(EEPROM 写入)。

将代码移植到 Arduino #2

@simen
我知道 Twister 还没有准备好使用,但是我尝试在 grbl 中添加一个 c++ 库,很麻烦,没有成功。
所以我想我可以从你的twister编码中学习如何制作它!

将代码移植到 Arduino #2
成员

四门 评论 2012 年 10 月 22 日

@buddhafragt你看到我对缺失补丁的评论了吗?尝试拉最新版本并重新编译!

将代码移植到 Arduino #2

谢谢,用 Arduino IDE 编译:-)!

将代码移植到 Arduino #2

我看到 grbl 正在使用 Arduino IDE 和 Arduino MEGA 编译“开箱即用”,这是怎么回事?
grbl 现在是否与 Mega 兼容?我现在没有真正测试程序。
仅采取警告:
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../.. /avr/bin/ld:警告:符号“rx_buffer”的大小从 serial.co 中的 128 更改为 core.a 中的 132(HardwareSerial.cpp.o)

缓冲区大小是否重要?

有趣的是,使用 UNO,我遇到了编译器错误:
core.a(HardwareSerial.cpp.o): In function __vector_18': /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/HardwareSerial.cpp:81: multiple definition of__vector_18′
serial.co:serial.c:157: first defined here

将代码移植到 Arduino #2

就像我之前说的,grbl 不使用 Arduino。由于 Arduino 使用了一些用户未知的 AVR 资源(现在想到 Timer0)并定义了一些 grbl 已经具有的功能(UART),因此 Arduino IDE 中的编译和/或链接预计会失败——即使他们没有,生成的二进制文件应该是不可用的。

我不知道 Arduino 开发人员是否真的为不使用 Arduino API 的源代码实现了检测算法(即空的 .ino 用例,例如 Teacup),以便自动禁用所有 Arduino 部件并且生成的二进制文件是正确的。

将代码移植到 Arduino #2
成员

四门 评论 2012 年 10 月 23 日

如果 Twister 或 Grbl 在 Arduino IDE 下编译,我不知道!我认为它包括我们不使用的库。它应该是使用项目中的 makefile 构建的。

将代码移植到 Arduino #2
贡献者

Protoneer 评论 2013 年 3 月 13 日

您好,我创建了一个 GRBL 的 Arduino 库。它基本上只是封装了当前设置,但使其与 Arduino IDE 兼容/可上传。

我对这个端口的想法是利用 Arduino 的硬件范围并使 GRBL 在更大范围的板上工作。

目前图书馆有两个例子。一个用于 UNO,一个用于 Duemilanove。目前配置相同,但定义了不同的名称,可用于更改每个板的配置设置。

https://github.com/Protoneer/GRBL-Arduino-Library

将代码移植到 Arduino #2

@Protoneer: 做得好!您需要做什么才能让 IDE 像库一样工作?有什么大的变化还是小的变化?我认为这将是对主存储库的一个很好的注入,作为一种更简单的上传固件的方法。

将代码移植到 Arduino #2
贡献者

Protoneer 评论 2013 年 3 月 14 日

就像生活中所有的艰难思考一样。直到你破解它然后它很容易回头才很难。:)

我在过去几天提出的拉取请求是大部分更改。

解决时间最长的事情是我不断遇到的链接问题。现在听起来可能很傻,但谁知道文件名需要重命名为 CPP 才能在 ARDUINO IDE 中工作?!?!?!??

将代码移植到 Arduino #2

@Protoneer它在文档中说:Arduino IDE 只处理 C++ 的一些怪癖,例如草图中没有原型(因为 IDE 会自动注入它们)。库必须由 .cpp 和 .h 文件组成,其中一对 .h/.cpp 文件的名称与文件夹完全相同(并且与库完全相同)。

该文件夹可能包含两个特殊文件夹和一个特殊文件:“examples”、“utility”和“keywords.txt”。第二个可能包含 .cpp 和 .c 文件的任意组合,编译时将遵循其类型(即 .cpp 的 avr-g++ 和 .c 的 avr-gcc)。

我将停在这里,无需使用 Arduino 文档中的引号向线程发送垃圾邮件;-)

将代码移植到 Arduino #2
贡献者

Protoneer 评论 2013 年 3 月 14 日

哈哈哈……我想到了RTFM。:)

好吧,这些点已经连接起来了,所以让我们制作更酷的东西……

将代码移植到 Arduino #2

当然,如果用 C++ 编译一个文件并打算从 C 代码链接到它,你需要一个好的旧extern "C" {东西。

将代码移植到 Arduino #2
喜欢 (0)

您必须 登录 才能发表评论!