开源改变世界

Mega 2560 的 Grbl #714

推推 grbl 2年前 (2023-01-23) 389次浏览

打开
MartinLedesma 打开了这个问题 2019 年 9 月 3 日 · 8条评论
打开

Mega 2560 的 Grbl#714

MartinLedesma 打开了这个问题 2019 年 9 月 3 日 · 8条评论

注释

Mega 2560 的 Grbl #714

你好!我正在证明 arduino MEGA 2560 + RAMPS 1.4 + Grbl – mega 但我无法让步进电机移动!我使用了 XLoader 和 Universal GCode Sender。我已经用 Arduino IDE 上传的简单代码证明了,电机工作了。拜托,我需要一些帮助!

Mega 2560 的 Grbl #714

@adammhaile为什么 mega 有自己的?

Mega 2560 的 Grbl #714

@wdunn001不确定。只是指出来。

Mega 2560 的 Grbl #714

@adammhaile为什么 mega 有自己的?

与 Uno 不同的引脚分配等,因此需要更改一些内容。

Mega 2560 的 Grbl #714

实际上,整个处理器是不同的——更多/不同的外围设备等。Uno 使用 ATMega328,Mega 使用 ATMega2560。

Mega 2560 的 Grbl #714
wdunn001 评论了 2019 年 11 月 12 日  

@bdurbrow处理器对代码库来说无关紧要,它只是一个不同的编译目标。

Mega 2560 的 Grbl #714
wdunn001 评论了 2019 年 11 月 12 日  

与 Uno 不同的引脚分配等,因此需要更改一些内容。

任何关于为每个引脚分配添加编译目标检查的难度的估计?

我在想一个配置文件
if (compile target == ‘2560’) { pinForX = 1}
else {
pinForX = 5
}
或对更多目标使用 switchcase。
然后在整个应用程序中使用 pinForX 变量。

这可能比我想象的要难得多,哈哈,这不是我的驾驶室,但我愿意提供帮助。

Mega 2560 的 Grbl #714
黑眉 评论了 2019 年 11 月 12 日  

芯片之间的差异不仅仅是引出线。定时器不同,串口也不同。代码库可以通过#ifdef指令统一吗?是的……但是……这并没有真正提供优势;考虑到 ARM 版本将进行重大重写;并且AVR版本在这一点上被认为是成熟的产品(只修复主要错误;据我们所知,没有任何重大错误)。换句话说,当它们稳定并且没有使用新功能进行扩展时,让它们成为相同的代码体并不能提供优势。

此外,FWIW,除非你小心,否则使用常规控制流关键字(if、switch 等)最终可能会生成在运行时而不是编译时发生的测试;使用预处理器使这不可能发生。对于依赖于实时性能的代码库,作为一般编程风格的问题,最好采取避免这种潜在陷阱的方法。

喜欢 (0)