ВОПРОС grblHAL 20250910 отсутствуют параметры $14 $17

Dizzy

МЕСТНЫЙ
ПРОВЕРЕННЫЙ
Регистрация
03.02.2025
Сообщения
31
Реакции
15
Баллы
18
Город
Брест
Имя
Дмитрий
Собственно, сабж. Брал из main ветки. Кто знает, как включить? Четвертый день не могу понять логики их наличия.
 
Собственно, сабж. Брал из main ветки. Кто знает, как включить? Четвертый день не могу понять логики их наличия.
Дефолтные назначения сделаны для НЗ. Я эти назначения заменял в прошивке на $14=70, $17=70.

$14: Invert control inputs as bitfield:
1 - Feed hold (2)
2 - Cycle start (4)
6 - EStop (64)
Inverts the control signals (active low).
NOTE: Block delete, Optional stop, EStop and Probe connected are optional signals, availability is driver dependent.
$17: Pullup disable control inputs as bitfield:
1 - Feed hold (2)
2 - Cycle start (4)
6 - EStop (64)
Disable the control signals pullup resistors. Potentially enables pulldown resistor if available.
NOTE: Block delete, Optional stop and EStop are optional signals, availability is driver dependent.
 
is_setting_available выдает false в этом кусочке:

case Setting_ControlInvertMask:
case Setting_ControlPullUpDisableMask:
available = hal.signals_cap.bits & ~(control_signals_t){ .probe_triggered = On }.bits;
break;
 
Последнее редактирование:
is_setting_available выдает false в этом кусочке:

case Setting_ControlInvertMask:
case Setting_ControlPullUpDisableMask:
available = hal.signals_cap.bits & ~(control_signals_t){ .probe_triggered = On }.bits;
break;
Потому, что:

By default, grblHAL sets all input pins to normal-low operation with their internal pull-up resistors
enabled. This simplifies the wiring for users by requiring only a normally closed (NC) switch connected
to ground. It is not recommended to use normally-open (NO) switches as this increases the risk
of electrical noise spuriously triggering the inputs. If normally-open (NO) switches are used the
logic of the input signals should be be inverted with the invert settings below.
The following options disable the internal pull-up resistors, and switches must be now connect to Vcc
instead of ground.

Измени $6

Также может помочь
#define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 70
#define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 70

Подключение пробника
1768861121968.png
 
Измени $6

Также может помочь
#define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 70
#define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 70
$6=1 - без изменений
DEFAULT_CONTROL_SIGNALS_INVERT_MASK в любом значении имеет тот же результат.
Отключать подтяжки мне не нужно.
 
Последнее редактирование:
$6=1 - без изменений
DEFAULT_CONTROL_SIGNALS_INVERT_MASK в любом значении имеет тот же результат.
Отключать подтяжки мне не нужно.
Попробуй все входные сигналы подключить так (без выключателей, соответствующее пины через 4.7к на землю)
1768861449168.png
#define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 70
#define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 70
 
Последнее редактирование:
Уже. Иначе, сработка estop не дает вообще ничего сделать.
статус сейчас такой:
<Idle|MPos:0.000,0.000,0.000|Bf:100,512|FS:0,0|Pn:O>
Ваши сообщения автоматически объединены:

Все. Нашел! В driver_init() добавил такое:

Код:
#if CONTROL_ENABLE & CONTROL_HALT
    hal.signals_cap.e_stop = On;
#endif
#if CONTROL_ENABLE & CONTROL_FEED_HOLD
    hal.signals_cap.feed_hold = On;
#endif
#if CONTROL_ENABLE & CONTROL_CYCLE_START
    hal.signals_cap.cycle_start = On;
#endif
 
Последнее редактирование:
Там еще полезно добавить опцию hard stop для пробника. Чтобы не было ошибок позиционирования и измерений из-за неправильного алгоритма торможения. Опциональную, для низких скоростей, а предел скорости задать дополнительным $. Если по-простому, то для жесткого торможения пробника достаточно добавить несколько строчек кода.

C++:
-----------in gc_probe_t mc_probe_cycle (float *target, plan_line_data_t *pl_data, gc_parser_flags_t parser_flags)------

if(pl_data->feed_rate <= settings.probe_hard_stop_feed && !parser_flags.probe_is_away) {
    settings.probe.apply_hard_stop = true;
}
else {
    settings.probe.apply_hard_stop = false;
}

-----------in ISR_CODE void ISR_FUNC(stepper_driver_interrupt_handler)(void)---------

if (sys.probing_state == Probing_Active && hal.probe.get_state().triggered) {
    sys.probing_state = Probing_Off;
    memcpy(sys.probe_position, sys.position, sizeof(sys.position));
    if(settings.probe.apply_hard_stop) {
        report_probe_parameters();
        st_reset();           
        plan_reset();         
        plan_sync_position();
        state_set(STATE_IDLE); 
    }
    else {

#ifdef MINIMIZE_PROBE_OVERSHOOT
bit_true(sys.rt_exec_state, EXEC_MOTION_CANCEL_FAST);
#else
bit_true(sys.rt_exec_state, EXEC_MOTION_CANCEL);
#endif
}
}//if (sys.probing_state == Probing_Active && hal.probe.get_state().triggered) {
 
Там еще полезно добавить опцию hard stop для пробника. Чтобы не было ошибок позиционирования и измерений из-за неправильного алгоритма торможения. Опциональную, для низких скоростей, а предел скорости задать дополнительным $. Если по-простому, то для жесткого торможения пробника достаточно добавить несколько строчек кода.
Я еще с usb не разгребал авгиевы конюшни. К слову, от grblHAL только ядро. Драйвер - экспериментальный, железо - дикий микс f1xx, f3xx и чего-то еще, стандартные библиотеки с багами и много неизведанного. На данный момент, вроде, работает почти все. Нужен подопытный кролик в виде реального железа.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать