开源改变世界!!

发送“$H”时检测到错误:(ALARM:9) Homing fail… 在激光雕刻机上 #1340

推推 grbl 2年前 (2023-01-28) 327次浏览
打开
xeno108 开了这个issue 2020 年 1 月 9 日 · 2 条评论
打开

发送“$H”时检测到错误:(ALARM:9) Homing fail… 在激光雕刻机上#1340

xeno108 开了这个issue 2020 年 1 月 9 日 · 2 条评论

注释

发送“$H”时检测到错误:(ALARM:9) Homing fail... 在激光雕刻机上 #1340

“发送‘$H’时检测到错误:(ALARM:9)归位失败。无法在搜索距离内找到限位开关。尝试增加最大行程,减少牵引距离,或检查接线。流式传输已暂停。”

我从互联网上购买了一台 DIY 激光雕刻机。我拔出 ardiuno nano 并放入我自己的。我想在不破坏原始控制器的情况下自定义设置。

我希望能够向项目添加限位开关(如果可能的话,以后的项目将是为我的外壳盖添加一个安全开关)。

当我连接时,我可以在 x 和 y 中慢跑。我也可以激活激光。否则状态为“就绪”。当我 $H 时,状态变为“忙碌”并且电机锁定。没有动静。

因为它是激光,所以我没有归位 Z,只有 X 和 Y。

我的参数如下:
$$
$0=10
$1=25
$2=0
$3=0
$4=0
$5=0
$6=0
$10=1
$11=1.000
$12=0.002
$13=0
$20=0
$21=0
$22=1
$ 23 = 0 $ 24 =
25.000 $ 25 =
500.000 $ 26 =
250
$ 27 = 1.000
$ 30 = 1000 $
31 = 0
$ 32 = 0 10.000 $130=500.000 $131=500.000 $132=200.000 好

我的 config.h 文件在下面。

我有一个 Cronos 板,其中包含纳米和电机控制器 (2)。看起来与 eleksmaker 相似。

有人知道为什么它不运行吗?我四处搜索,发现 CNC 和 z 有类似的东西,但激光没有。

谢谢。

/*
config.h –
Grbl 的编译时配置部分

版权所有 (c) 2012-2015 Sungeun K. Jeon
版权所有 (c) 2009-2011 Simen Svale Skogsrud

Grbl 是免费软件:您可以根据自由软件基金会
发布的 GNU 通用公共许可证条款重新分发和/或修改它,许可证
版本 3,或
(由您选择)任何更新版本。

Grbl 的分发是希望它有用,
但不提供任何保证;
甚至没有针对特定用途的适销性或适用性的默示保证。有关详细信息,请参阅
GNU 通用公共许可证。

您应该
随 Grbl 一起收到 GNU 通用公共许可证的副本。如果没有,请参阅http://www.gnu.org/licenses/
*/

// 此文件包含 Grbl 内部系统的编译时配置。在大多数情况下,
// 用户不需要直接修改这些,但它们是出于特定需要,即
// 性能调整或针对非典型机器进行调整。

// 重要提示:此处的任何更改都需要完全重新编译源代码才能传播它们。

#ifndef config_h
#define config_h
#include “grbl.h” // 用于 Arduino IDE 兼容性。

// 默认设置。复位 EEPROM 时使用。在 defaults.h 中更改为所需名称
#define DEFAULTS_GENERIC

//串口波特率
#define BAUD_RATE 115200

// 默认 CPU 映射。Grbl 官方仅支持 Arduino Uno。其他处理器类型
// 可能存在于用户提供的模板中或用户直接在 cpu_map.h 中定义
#define CPU_MAP_ATMEGA328P // Arduino Uno CPU

// 定义实时命令特殊字符。这些字符是直接从
// 串行读取数据流中“挑选出来”的,不会传递给 grbl 行执行解析器。选择
不存在且不得存在于流式 g 代码程序中的字符。
// 如果每个用户设置可用,则可以使用 ASCII 控制字符。此外,扩展的 ASCII 代码 (>127),从来
不在 // g 代码程序中,可能会被选择用于接口程序。
// 注意:如果更改,请手动更新 report.c 中的帮助消息。
#define CMD_STATUS_REPORT ‘?’
#define CMD_FEED_HOLD ‘!’
#define CMD_CYCLE_START ‘~’
#define CMD_RESET 0x18 // ctrl-x。
#define CMD_SAFETY_DOOR ‘@’

// 如果启用归位,归位初始化锁定在上电时将 Grbl 设置为警报状态。这会强制
// 用户在执行任何其他操作之前执行归位循环(或覆盖锁定)。//这
主要是提醒用户回家的安全功能,因为 Grbl 不知道位置。

// 注释掉 XXX
//#define HOMING_INIT_LOCK //注释掉

// 使用位掩码定义归位循环模式。归位循环首先执行搜索模式
// 以快速接合限位开关,然后是较慢的定位模式,并以短暂的
// 拉动动作结束以脱离限位开关。以下 HOMING_CYCLE_x 定义
按 // 从后缀 0 开始的顺序执行,并仅完成指定轴的归位例程。如果
//定义中省略了一个轴,它不会回家,系统也不会更新它的位置。
// 这意味着这允许使用非标准笛卡尔机器的用户,例如车床(x 然后 z,
// 没有 y),根据他们的需要配置归位循环行为。
// 注意:归位循环旨在允许共享限制引脚,如果轴不在同一个
// 循环中,但这需要在 cpu_map.h 文件中更改一些引脚设置。例如,默认归位
//循环可以与 X 或 Y 限制引脚共享 Z 限制引脚,因为它们处于不同的循环中。
// 通过共享一个引脚,可以释放宝贵的 IO 引脚用于其他目的。理论上,所有轴限制引脚
// 可以减少到一个引脚,如果所有轴都以单独的周期归位,反之亦然,所有三个轴
// 在单独的引脚上,但在一个周期内归位。另外,需要注意的是,硬限制的功能
//不会受到引脚共享的影响。
// 注意:为传统的 3 轴数控机床设置默认值。Z 轴首先清除,然后是 X 和 Y。

// 更改了此 XXX
//#define HOMING_CYCLE_0 (1<<Z_AXIS) // 要求:首先移动 Z 以清除工作空间。
//#define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS)) // 可选:然后同时移动 X、Y。

// #define HOMING_CYCLE_2 // 可选:取消注释并添加轴掩码以启用

// 对此
#define HOMING_CYCLE_0 (1<<X_AXIS)
#define HOMING_CYCLE_1 (1<<Y_AXIS)

// 在机器最初点动到限位开关后执行的归位循环数。
// 这有助于防止超调并提高可重复性。这个值应该是 1 或
// 更大。
#define N_HOMING_LOCATE_CYCLE 2 // 整数 (1-128)

// 归位后,Grbl 默认将整个机器空间设置为负空间,这是典型的
// 对于专业 CNC 机器,无论限位开关位于何处。取消注释此
//定义以强制 Grbl 始终将机器原点设置在归位位置,尽管切换方向。

// 取消注释此 XXX
#define HOMING_FORCE_SET_ORIGIN // 取消注释以启用。

// Grbl 在启动时执行的块数。这些块存储在 EEPROM 中,其中大小
// 和地址在 settings.h 中定义。使用当前设置,最多可以
// 存储和执行 2 个启动块。这些启动块通常用于
根据用户偏好设置 g 代码 // 解析器状态。
#define N_STARTUP_LINE 2 // 整数 (1-2)

// Grbl 为某些值类型打印的浮动小数点数。这些设置
// 由 CNC 机器中的现实和常见观察值确定。例如,位置
// 值不能小于 0.001 毫米或 0.0001 英寸,因为机器在物理上不能比
// 更精确。因此,可能不需要更改这些,但如果需要,可以在此处更改。
// 注意:必须是从 0 到 ~4 的整数值。超过 4 个可能会出现舍入误差。
#define N_DECIMAL_COORDVALUE_INCH 4 // 以英寸为单位的坐标或位置值
#define N_DECIMAL_COORDVALUE_MM 3 // 以毫米为单位的坐标或位置值
#define N_DECIMAL_RATEVALUE_INCH 1 // 以英寸/分钟为单位的速率或速度值
#define N_DECIMAL_RATEVALUE_MM 0 // 以毫米/分钟为单位的速率或速度值
#define N_DECIMAL_SETTINGVALUE 3 // 浮点设置值的小数

// 如果您的机器有两个平行连接到一个轴的限位开关,您将需要启用
// 此功能。由于这两个开关共享一个引脚,Grbl 无法判断
// 启用了哪个。此选项仅影响归位,如果使用限位,Grbl 将
// 发出警报并强制用户手动断开限位开关。否则,如果
每个轴都有一个 // 限位开关,请不要启用此选项。通过保持禁用状态,您可以
在限位开关上执行 // 归位循环,而不必将机器从其上移开。
// #define LIMITS_TWO_SWITCHES_ON_AXES

// 允许 GRBL 跟踪和报告 gcode 行号。启用这意味着计划缓冲区
// 从 18 或 16 开始为 plan_block_t 结构中的附加行号数据腾出空间
// #define USE_LINE_NUMBERS // 默认情况下禁用。取消注释以启用。

// 允许 GRBL 报告实时进给率。启用这意味着 GRBL 将在
每次状态更新时报告更多 // 数据。
// 注意:这是实验性的,并不是 100% 有效。也许稍后修复或重构。
// #define REPORT_REALTIME_RATE // 默认禁用。取消注释以启用。

// 探测周期成功后,此选项通过自动生成的消息立即提供探测坐标的反馈。如果禁用,用户仍然可以
通过 Grbl ‘$#’ 打印参数访问最后一个探针 // 坐标。
#define MESSAGE_PROBE_COORDINATES // 默认启用。评论禁用。

// 通过 Arduino Uno 上的喷雾冷却剂 g 代码命令 M7 启用第二个冷却剂控制引脚
// 模拟引脚 4。仅当您需要第二个冷却剂控制引脚时才使用此选项。
// 注意:无论如何,模拟引脚 3 上的 M8 溢流冷却剂控制引脚仍将起作用。
// #define ENABLE_M7 // 默认禁用。取消注释以启用。

// 此选项使进给保持输入充当安全门开关。安全门在触发时
// 立即强制暂停进给,然后安全地使机器断电。恢复被阻止,直到
// 安全门重新接合。到时,Grbl 将重新启动机器,然后继续
//之前的刀具路径,就好像什么都没发生过一样。
// #define ENABLE_SAFETY_DOOR_INPUT_PIN // 默认禁用。取消注释以启用。

// 在安全门开关被切换和恢复后,此设置设置了开机延迟
// 在恢复主轴和冷却剂与恢复循环之间。
// 注意:延迟值以毫秒为单位定义,从零到 65,535。
#define SAFETY_DOOR_SPINDLE_DELAY 4000
#define SAFETY_DOOR_COOLANT_DELAY 1000

// 启用 CoreXY 运动学。仅与 CoreXY 机器一起使用。
// 重要提示:如果启用归位,则必须将上面的归位循环#defines 重新配置为
// #define HOMING_CYCLE_0 (1<<X_AXIS) 和#define HOMING_CYCLE_1 (1<<Y_AXIS)
// 注意:此配置选项会改变运动X 和 Y 轴的操作原理
// 定义在 ( http://corexy.com/theory.html )。假设电机的定位和接线与
//描述的完全一致,否则,运动可能会朝奇怪的方向移动。Grbl 要求 CoreXY A 和 B 电机
//内部每毫米步数相同。
// #define COREXY // 默认禁用。取消注释以启用。

// 反转控制命令引脚的引脚逻辑。这实质上意味着启用此选项时
//您可以使用常闭开关,而不是默认的常开开关。
// 注意:如果您需要反转单个控制引脚,请禁用此宏并简单地更改
// cpu_map.h 文件中的 CONTROL_INVERT_MASK 定义。
// #define INVERT_ALL_CONTROL_PINS // 默认禁用。取消注释以启用。

// 根据以下掩码反转选择限制引脚状态。这会影响所有限制引脚功能,
//例如硬限制和归位。但是,这与总体反转限制设置不同。
//此构建选项将仅反转此处定义的限制引脚,然后反转限制设置
//将应用于所有这些。当用户
在他们的机器上安装了一组混合的限位销时,这很有用 // 常开(NO)和常闭(NC)开关。
// 注意:请不要使用它,除非你有需要它的情况。
// #define INVERT_LIMIT_PIN_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)) // 默认禁用。取消注释以启用。

// 将主轴使能引脚从低电平禁用/高电平启用反转为低电平启用/高电平禁用。有用
// 对于一些预制的电子板。
// 注意:如果启用 VARIABLE_SPINDLE(默认),则此选项无效,因为 PWM 输出和
// 主轴启用组合到一个引脚。如果您需要此选项和主轴速度 PWM,
//取消注释下面的配置选项 USE_SPINDLE_DIR_AS_ENABLE_PIN。
// #define INVERT_SPINDLE_ENABLE_PIN // 默认禁用。取消注释以启用。

// 在状态报告中启用控制引脚状态反馈。数据显示为
// 控制引脚端口(0(低)或 1(高))的简单二进制,被屏蔽以仅显示输入引脚。// 端口上的非控制引脚
将始终显示 0 值。有关引脚位图,请参见 cpu_map.h。与限制引脚报告一样,
//我们不建议启用此选项。尝试仅将其用于设置新的 CNC。
// #define REPORT_CONTROL_PIN_STATE // 默认禁用。取消注释以启用。

// 当 Grbl 电源循环或使用 Arduino 重置按钮硬重置时,Grbl 默认启动时没有警报
。这是为了让新用户尽可能简单地开始使用 Grbl。当归位
// 启用并且用户安装了限位开关时,Grbl 将在警报状态下启动以指示
// Grbl 不知道其位置并在继续之前强制用户回家。此选项强制
// Grbl 始终初始化为 ALARM 状态,无论是否归位。此选项更适合
// 喜欢这种电源循环行为的 OEM 和 LinuxCNC 用户。
// #define FORCE_INITIALIZATION_ALARM // 默认禁用。取消注释以启用。

// ———————————————- ————————————–
// 高级配置选项:

// 为 GUI 启用最小报告反馈模式,其中人类可读的字符串不那么重要。
// 这节省了将近 2KB 的闪存空间,并可能留出足够的空间来安装其他/未来的功能。
// GUI 需要为 Grbl 发回的错误代码安装一个查找表。
// 注意:此功能是新的和实验性的。确保您使用的 GUI 支持此模式。
// #define REPORT_GUI_MODE // 默认禁用。取消注释以启用。

// 加速管理子系统的时间分辨率。较高的数字提供更平滑的
// 加速,在以非常高的进给率运行的机器上尤其明显,但可能会对
// 性能产生负面影响。此参数的正确值取决于机器,因此建议
// 仅根据需要将其设置得尽可能高。近似成功值的范围很广,从 50 到 200 或更多。
// 注意:更改此值还会更改步段缓冲区中某个段的执行时间。
// 当增加这个值时,这会在段缓冲区中存储更少的总时间,反之亦然。确保
// 增加/减少步段缓冲区以解决这些变化。
#define ACCELERATION_TICKS_PER_SECOND 100

// 自适应多轴步进平滑 (AMASS) 是一项高级功能,顾名思义,
// 平滑多轴运动的步进。此功能可平滑运动,特别是在
10kHz 以下的低步//频率下,多轴运动的轴之间的混叠会导致可听见
的//噪音并震动您的机器。在更低的步进频率下,AMASS 适应并提供更好
的 // 步进平滑。有关 AMASS 系统工作的更多详细信息,请参阅 stepper.c。
#define ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING // 默认启用。评论禁用。

// 设置允许写入 Grbl 设置的最大步进速率。此选项启用错误
// 检查设置模块以防止设置值超过此限制。//最大
步进速率严格受 CPU 速度限制,如果
使用以 16MHz 运行 // 的 AVR 以外的其他东西,则会发生变化。
// 注意:目前禁用,如果闪存空间允许,将启用。
// #define MAX_STEP_RATE_HZ 30000 // 赫兹

// 默认情况下,Grbl 将所有输入引脚设置为正常高电平操作,并
启用其内部上拉电阻。这通过只需要一个接地开关来简化用户的接线,
//尽管它建议用户在低通滤波器中采取额外的接线步骤以减少
//由引脚检测到的电噪声。如果用户在 Grbl 设置中反转引脚,这只会翻转
//哪个高读数或低读数表示活动信号。在正常操作中,这意味着用户
// 需要连接一个常开开关,但如果反转,这意味着用户应该连接一个
// 常闭开关。
// 以下选项禁用内部上拉电阻,将引脚设置为正常低电平
// 操作,开关现在必须连接到 Vcc 而不是接地。这也翻转了
// 反转引脚 Grbl 设置的含义,其中反转设置现在意味着用户应该连接
// 常开开关,反之亦然。
// 注意:与该功能关联的所有引脚都被禁用,即 XYZ 限制引脚,而不是单个轴。
// 警告:当上拉被禁用时,这需要使用下拉电阻进行额外布线!
//#define DISABLE_LIMIT_PIN_PULL_UP
//#define DISABLE_PROBE_PIN_PULL_UP
//#define DISABLE_CONTROL_PIN_PULL_UP

// 设置应用刀具长度偏移的轴。假设主轴始终平行于
//选定的轴,刀具朝向负方向。换句话说,
从当前位置减去正 // 工具长度偏移值。
#define TOOL_LENGTH_OFFSET_AXIS Z_AXIS // 默认 z 轴。有效值为 X_AXIS、Y_AXIS 或 Z_AXIS。

// 为不同的 RPM 值启用可变主轴输出电压。在 Arduino Uno 上,主轴
//启用引脚将输出 5V 以实现最大 RPM,具有 256 个中间电平,禁用时为 0V。
// 注意:对 Arduino Unos 很重要!启用后,Z 限位引脚 D11 和主轴启用引脚 D12 切换!
// 可变主轴输出电压需要引脚 D11 上的硬件 PWM 输出。
#define VARIABLE_SPINDLE // 默认启用。评论禁用。

// 仅由变量主轴输出使用。这些参数设置最大和最小主轴速度
//“S”g 代码值以对应于最大和最小引脚电压。在最大和最小主轴速度之间有 256 个离散和
// 等分的电压箱。因此,对于 5V 引脚、1000
// 最大转速和 250 分钟转速,将为以下“S”命令设置主轴输出电压:
//“S1000”@ 5V、“S250”@0.02V 和“S625” ” @ 2.5V(中档)。禁用时该引脚输出 0V。
#define SPINDLE_MAX_RPM 1000.0 // 最大主轴转速。该值等于 PWM 上的 100% 占空比。
#define SPINDLE_MIN_RPM 0.0 // 最小主轴转速。该值等于 PWM 的 (1/256) 占空比。

// 仅由可变主轴输出使用。这会强制 PWM 输出在启用时为最小占空比。
// 禁用时,PWM 引脚仍将读取 0V。大多数用户不需要此选项,但它可能
// 在某些情况下有用。此设置不会更新最小主轴 RPM 计算。任何
低于此值的 // 主轴 RPM 输出都将设置为此值。
// #define MINIMUM_SPINDLE_PWM 5 // 默认禁用。取消注释以启用。整数(0-255)

// 默认情况下,在 328p(Uno)上,Grbl 将可变主轴 PWM 和启用组合到一个引脚中以帮助
// 保留 I/O 引脚。对于某些设置,这些可能需要是单独的引脚。此配置选项使用
// 主轴方向引脚 (D13) 作为单独的主轴使能引脚以及引脚 D11 上的主轴速度 PWM。
// 注意:此配置选项仅适用于启用 VARIABLE_SPINDLE 和 328p 处理器 (Uno)。
// 注意:没有方向销,主轴顺时针 M4 g 代码命令将被删除。M3 和 M5 仍然有效。
// 注意:小心!Arduino 引导加载程序在加电时切换 D13 引脚。如果你用
// 一个程序员来烧录 Grbl(你可以使用一个备用的 Arduino 作为“Arduino 作为 ISP”。在网上搜索如何连接它。),
// 这个 D13 LED 切换应该消失。我们还没有测试过这个。请报告进展情况!
// #define USE_SPINDLE_DIR_AS_ENABLE_PIN // 默认禁用。取消注释以启用。

// 启用此功能后,Grbl 会发回它收到的行的回显,该行已经过预解析(空格
// 已删除,大写字母,无注释)并将由 Grbl 立即执行。//回声不会
在行缓冲区溢出时发送,但应该发送给 Grbl 的所有正常行。例如,如果用户
// 发送行 ‘g1 x1.032 y2.45(测试评论)’,Grbl 将以 ‘[echo: G1X1.032Y2.45]’ 的形式回显。
// 注意:仅将其用于调试目的!!回显时,这会占用宝贵的资源并会影响
// 性能。如果正常操作绝对需要,串行写入缓冲区应该大大增加
//以帮助最小化串行写入协议中的传输等待。
// #define REPORT_ECHO_LINE_RECEIVED // 默认禁用。取消注释以启用。

// 最小规划器连接速度。设置规划器计划在
// 每个缓冲区块连接处的默认最小连接速度,除了从缓冲区的其余部分和末尾开始,它们始终为
// 零。该值控制机器通过路口的移动速度,而不考虑加速度
// 限制或相邻块线移动方向之间的角度。这对于不能
//容忍工具停留一瞬间的机器很有用,即 3d 打印机或激光切割机。如果使用,此值
//不应大于零或机器工作所需的最小值。
#define MINIMUM_JUNCTION_SPEED 0.0 //(毫米/分钟)

// 设置规划器允许的最小进给率。低于它的任何值都将设置为此最小值
//。这也确保计划的运动始终完成并解决任何浮点
// 舍入错误。虽然不推荐,但低于 1.0 毫米/分钟的值可能适用于
// 较小的机器,可能为 0.1 毫米/分钟,但您的成功可能因多种因素而异。
#define MINIMUM_FEED_RATE 1.0 //(毫米/分钟)

// 在精确弧形轨迹之前通过小角度近似进行的弧形生成迭代次数
// 使用昂贵的 sin() 和 cos() 计算进行校正。
如果弧生成的准确性存在问题,则此参数可能会降低,或者如果弧执行
// 因过多的触发计算而陷入困境,则可能会增加。
#define N_ARC_CORRECTION 12 // 整数 (1-255)

// arc G2/3 g 代码标准在定义上是有问题的。
当圆弧处于半圆 (pi) 或全圆 (2 pi) 时,基于半径的弧有可怕的数值// 错误。基于偏移的弧更准确
// 但当弧是全圆 (2
 pi) 时仍然存在问题。
当基于偏移的圆弧被命令为整圆时,这定义了浮点问题,但
由于数值舍入和精度问题而被解释为极小的圆弧,机器 epsilon (1.2e-7rad)。
// 此定义值设置机器 epsilon 截止值以确定圆弧是否为整圆。
// 注意:调整此值时要非常小心。它应该总是大于 1.2e-7 但不能太大
// 比这大得多。默认设置应捕获大多数(如果不是全部)全弧错误情况。
#define ARC_ANGULAR_TRAVEL_EPSILON 5E-7 // 浮点数(弧度)

// 在停留期间执行的时间延迟增量。默认值设置为 50 毫秒,这提供了
// 大约 55 分钟的最大时间延迟,对于大多数应用程序来说已经足够了。增加
// 此延迟将线性增加最大停留时间,但也会降低
// 运行时命令执行的响应能力,例如状态报告,因为这些是在每个停留之间执行的
// 时间步长。另外,请记住,Arduino 延迟计时器对于长时间延迟不是很准确。
#define DWELL_TIME_STEP 50 // 整数 (1-255)(毫秒)

// 通过创建
//另一个中断(Timer2 比较)来管理方向引脚设置和相应步进脉冲之间的延迟。主 Grbl 中断(Timer1 比较)
//设置方向引脚,并且不会像在
//正常操作中那样立即设置步进器引脚。
Timer2 比较器接下来会在步进//脉冲延迟时间后触发以设置步进器引脚,并且 Timer2 溢出将完成步进脉冲,除非现在延迟
//步进脉冲时间加上步进脉冲延迟。(感谢 langwadt 的想法!)
// 注意:取消注释以启用。推荐的延迟必须 > 3us,并且在添加
// 用户提供的步进脉冲时间时,总时间不得超过 127us。上报成功
// 某些设置的值范围为 5 到 20us。
// #define STEP_PULSE_DELAY 10 // 以微秒为单位的步进脉冲延迟。默认禁用。

// 在任何给定时间规划器缓冲区中要规划的线性运动的数量。// Grbl 使用的绝大多数
RAM 都基于此缓冲区大小。仅在有额外
// 可用 RAM 时才增加,例如为 Mega 或 Sanguino 重新编译时。或者,如果 Arduino
// 由于缺少可用 RAM 而开始崩溃,或者如果 CPU 在
执行时难以跟上规划新的传入动作,则减少。
// #define BLOCK_BUFFER_SIZE 18 // 取消注释以覆盖 planner.h 中的默认值。

// 控制步骤执行算法// 和规划器块之间的中间步骤段缓冲区的大小。
每个段都是在ACCELERATION_TICKS_PER_SECOND 定义的 // 固定时间内以恒定速度执行的一组步骤。它们的计算使得规划
器 // 块速度曲线被精确跟踪。
这个缓冲区的大小决定了其他 Grbl 进程有多少步// 执行提前期必须计算和做他们的事情
// 在必须返回并重新填充这个缓冲区之前,目前是大约 50 毫秒的步进移动。
// #define SEGMENT_BUFFER_SIZE 6 // 取消注释以覆盖 stepper.h 中的默认值。

// 要执行的串行输入流的行缓冲区大小。此外,控制
每个启动块的大小,因为它们每个都存储为这个大小的字符串。确保
// 考虑到 settings.h 中定义的内存地址处的可用 EEPROM 和
// 所需启动块的数量。
// 注意:除极端情况外,80 个字符不是问题,但行缓冲区大小
// 可能太小,g 代码块可能会被截断。正式地,g 代码标准
// 支持最多 256 个字符。
在未来的版本中,当我们知道可以重新投入多少额外的内存空间时,这个默认值将会增加。
// #define LINE_BUFFER_SIZE 80 // 取消注释以覆盖 protocol.h 中的默认值

//串口发送和接收缓冲区大小。接收缓冲区通常用作另一个流
// 缓冲区来存储传入的块,以便在 Grbl 准备好时进行处理。大多数流
// 接口将字符计数并跟踪每个块发送到每个块响应。因此,
如果流式传输需要更深的接收缓冲区并且
// 内存允许,则增加接收缓冲区。发送缓冲区主要处理 Grbl 中的消息。仅当发送大
// 消息并且 Grbl 开始停顿,等待发送其余消息时才增加。
// 注意:缓冲区大小值必须大于零且小于 256。
// #define RX_BUFFER_SIZE 128 // 取消注释以覆盖 serial.h 中的默认值
// #define TX_BUFFER_SIZE 64

// 切换串行通信的 XON/XOFF 软件流控制。未正式支持
// 由于涉及当前 Arduinos 上的 Atmega8U2 USB 转串口芯片的问题。// 这些芯片上的固件
不支持 XON/XOFF 流控制字符,并且
芯片中的中间缓冲区 // 会导致标准终端程序出现延迟和溢出问题。但是,
// 使用专门编程的 UI 来管理此延迟问题已被确认有效。
// 此外,较旧的基于 FTDI FT232RL 的 Arduinos(Duemilanove)已知可与标准
//终端程序一起使用,因为它们的固件正确管理这些 XON/XOFF 字符。在任何
// 情况下,请向 grbl 管理员报告任何成功!
// #define ENABLE_XONXOFF // 默认禁用。取消注释以启用。

// 用于硬限位开关的简单软件去抖动功能。启用后,中断
// 监控硬限位开关引脚将使 Arduino 的看门狗定时器在
大约 32 毫秒的延迟后重新检查 // 限位引脚状态。这可以帮助 CNC 机器解决
// 有问题的硬限位开关的错误触发,但它不会解决
// 来自外部源的信号电缆上的电气干扰问题。建议首先
// 使用屏蔽信号电缆,其屏蔽层接地(旧 USB/计算机电缆
// 工作良好且价格便宜),并将低通电路连接到每个限制引脚。
// #define ENABLE_SOFTWARE_DEBOUNCE // 默认禁用。取消注释以启用。

// 当处理器检测到引脚// 在硬限位 ISR 例程中发生变化时,强制 Grbl 检查硬限位开关的状态。默认情况下,Grbl 会
在任何引脚更改时触发硬限制 // 警报,因为弹跳开关会导致这样的状态检查
// 误读引脚。当触发硬限制时,它们应该是 100% 可靠的,这就是
// 默认禁用此选项的原因。仅当您的系统/电子设备可以保证
// 开关不会反弹时,我们才建议启用此选项。这将有助于防止
// 当机器脱离开关时触发硬限制。
// 注意:如果启用了 SOFTWARE_DEBOUNCE,则此选项无效。
// #define HARD_LIMIT_FORCE_STATE_CHECK // 默认禁用。取消注释以启用。

// ———————————————- ————————————–
// 定义值的编译时错误检查:

#ifndef HOMING_CYCLE_0
#error “所需的 HOMING_CYCLE_0 未定义。”
#万一

#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(VARIABLE_SPINDLE)
#error “USE_SPINDLE_DIR_AS_ENABLE_PIN 只能在启用 VARIABLE_SPINDLE 的情况下使用”
#endif

#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(CPU_MAP_ATMEGA328P)
#error “USE_SPINDLE_DIR_AS_ENABLE_PIN 只能用于 328p 处理器”
#endif

// ———————————————- ————————————–

喜欢 (0)