Nomar记录一段历史
有没有人使用 Shield Buddy(代替 Arduino Mega2560)作为 RAMPS 1.4 主机板?

我已经读过几次1 Arduino Mega 可能很难执行 3D 打印机控制所需的任务,因为 AVR 芯片正在发挥其极限,这就是为什么一些制造商已经放弃了 ATmega2560,以进行定制(和集成)使用 ARM 处理器的控制器板。

刚刚在 Arduino SE 网站上看到了这个问题的最新答案, Arduino 的多线程,我想知道是否有人将Shield Buddy与标准 RAMPS 1.4 板结合使用?

盾牌伙伴

它与 Arduino Mega 引脚兼容(和 Arduino IDE 兼容 - 一旦安装了适当的附加组件),但它具有更快的三核处理器。显然只会使用一个核心,而其他两个则闲置,但即便如此,性能显然要好得多。

请参阅使用 ShieldBuddy TC275 将多核带入 Arduino 世界

如果有人有使用这块板的经验,我想知道它是否成功?我不明白为什么它不应该,尽管 Marlin 固件需要重新编译 Aurix TC275 处理器。会看到任何改善吗?值得支付 89 英镑的高价吗?


1其中一个地方是3D 打印:电子板

虽然他们为他们打算做的事情工作,但有一些限制。圆弧和圆的编程有点奇怪,将这些板用于笛卡尔 3D 打印机以外的东西——例如数控机床或激光切割机——有点不寻常。

这不仅仅是重新编译 Marlin 的问题。你需要重写它的大部分。它可能与 Arduino IDE 兼容,但这并不意味着您可以在其上运行用于 AtMega2560 的固件。如果您设法让它进行编译,则所有时序(例如发送到步进电机的脉冲的时序)都将关闭。
@TomvanderZanden - 哦,好的,谢谢。我还没有看过 Marlin 的源代码,所以我不知道。
我目前正在尝试将 Marlin RC6 移植到 ShieldBuddy。我已经设法编译了大部分,并且我已经将很多 AVR 汇编程序转换为 C(TC275 非常快,以至于不需要汇编代码!)我遇到的困难是中断。我可以看到串行接收有一个中断,步进驱动程序有一个 timer0 中断。还有其他人吗?另外,timer0 中断的运行频率是多少?我正在 Eclipse 中完成这项工作,但使用的是 Arduino/ShieldBuddy HAL。我欢迎任何人可以提供的任何帮助!!!
@MikeBeach 这不是真正提出此类问题的地方。
@MikeBeach - 干得好,我肯定想听听工作进展如何。一旦你开始工作,你应该发布我的问题的答案...... :-) 但是,与此同时,你的问题 _may_ 更适合 StackExchange Arduino,那里有一些聪明的人,他们可能知道答案(尽管它们可能更面向 ATmega)……或者失败了,也许是 StackOverflow?

1个回答

这并不像你建议的那么简单。

您不能只是为另一台设备重新编译 Marlin。你需要重写它的大部分。它可能与 Arduino IDE 兼容,但这并不意味着您可以在其上运行用于 AtMega2560 的固件。如果您设法让它进行编译,则所有时序(例如发送到步进电机的脉冲的时序)都将关闭。

作为一些例子,这里有一些来自 Marlin 的代码会被破坏,因为它们是直接用 AVR 汇编编写的:

 #define DELAY_1_NOP __asm__("nop\n\t") #define DELAY_2_NOP __asm__("nop\n\t" "nop\n\t") [...] // ensure 100ns delay - a bit extra is fine asm("nop");//50ns on 20Mhz, 62.5ns on 16Mhz asm("nop");//50ns on 20Mhz, 62.5ns on 16Mhz [...] #define MultiU24X32toH16(intRes, longIn1, longIn2) \ asm volatile ( \ "clr r26 \n\t" \ "mul %A1, %B2 \n\t" \ "mov r27, r1 \n\t" \ "mul %B1, %C2 \n\t" \ "movw %A0, r0 \n\t" \ "mul %C1, %C2 \n\t" \ "add %B0, r0 \n\t" \ "mul %C1, %B2 \n\t" \ "add %A0, r0 \n\t" \ "adc %B0, r1 \n\t" \

随机文章