Nomar记录一段历史
为什么我在 Marlin 上看不到 M42 命令的效果?

我正在尝试使用 RAMPS GPIO 之一来控制需要来自 Marlin 的 5V 低电流逻辑电平信号的外部设备。为了以编程方式执行此操作,我的主机软件 (Octoprint) 正在发送 M42 命令。我使用以下语法:

 M42 P4 S255

根据下图中的引脚排列:

在此处输入图片说明

但是,该引脚似乎没有被驱动到逻辑高电平。我是否还需要进行固件级配置,或者我的语法/引脚号不正确?

发布您的固件设置。还要验证您的电路板来源。如果是便宜的仿冒板...
@StarWind 我将与打印机供应商就电路板来源进行跟进。我在 `Configuration.h` 或 `Configuration_adv.h` 中没有看到特定于引脚或 GPIO 的配置元素。
我会尝试 M42 P4 S0 以防万一它以某种方式倒置。如果是这样,那么并且只有这样我才会担心为什么。
马克的回答是否有帮助。如果是这样,请您将其标记为已接受。如果没有,并且您已经解决了您的问题,请您发布答案并接受。作为测试版网站,我们需要将未回答的问题列表保持在最低限度。谢谢
@Greenonline 不幸的是,我不再拥有打印机(我不再在那个实验室工作,并且完全在不同的城市几个小时之外),并且其他人以我不知道的方式解决了这个问题。马克的回答似乎很明智,但我无法确认它是否有效——我应该选择它吗?
也许不是,在那种情况下。感谢您的更新。我不知道在这种情况下该怎么办……它是否有效似乎永远不确定。不用担心:-)

2个回答

我查看了当前的 Marlin 代码,除非您尝试使用的引脚被列为“SENSITIVE_PINS”列表,否则 P24 命令应该可以正常工作:

 #define SENSITIVE_PINS { 0, 1, \ X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \ Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \ Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \ PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, FAN1_PIN, FAN2_PIN, CONTROLLER_FAN_PIN, \ _E0_PINS _E1_PINS _E2_PINS _E3_PINS _E4_PINS BED_PINS \ _H0_PINS _H1_PINS _H2_PINS _H3_PINS _H4_PINS \ _X2_PINS _Y2_PINS _Z2_PINS \ X_MS1_PIN, X_MS2_PIN, Y_MS1_PIN, Y_MS2_PIN, Z_MS1_PIN, Z_MS2_PIN \ }

这些引脚是特定于打印机的;因此,如果无法访问您的 Marlin 版本,我无法查看引脚 4 是否对应于其中之一。如果这是问题所在,则该命令应该返回错误。如果没有错误,我会仔细查看硬件。

可能是因为伺服引脚没有连接到 5V。如图所示使用跳线

在此处输入图片说明

这是否会影响驱动 GPIO 的能力?我不需要5V电源,只需要一个TTL信号。
我不能肯定地说。明天我将检查我的董事会。如果您想使用 marlin 检查 `M42` 的工作情况,请发送“M42 S255”,因为没有给出引脚编号,默认情况下,`LED_PIN`(引脚编号 13,RAMPS LED 连接到该引脚。)引脚将打开。您可以发送“M42 P20 S255”并从第 20 个引脚(在您的图像 I2C 部分引脚 20 或 21)获得 gpio 输出。我已经检查过了。它有效。
无论如何,这不是一个强烈的担忧。我已经很多年没有接触过有问题的打印机了(自从我毕业/搬家后),但我怀疑是因为 atmega2560 从其内部电源驱动引脚,设置该跳线将为固定的 5V 引脚供电,但是不影响 IO/信号引脚。
可能是该引脚已被固件用于其他目的,例如启用伺服

随机文章