Настройка Marlin; дополнительный вывод после перемещения G0/G1

Этот вопрос касается Anet A8 с настроенной прошивкой Marlin 1.1.9.

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

Какой раздел обрабатывает обработку G-кода и есть ли уже доступный вариант для выполнения этой работы?

В принципе, я пытаюсь использовать Anet A8 в качестве системы позиционирования с компьютерным управлением. Это включает в себя некоторые другие элементы, которые необходимо активировать в стационарном состоянии. Требование таково: G0 X10 Y10 после завершения: установите высокий и низкий пин после задержки 10 мс. это после каждого движения. Кроме того, если бы я мог добавить свой собственный G-код, чтобы сохранить исходную операцию, было бы идеально.

, 👍3


1 ответ


Лучший ответ:

2

Какой раздел обрабатывает обработку G-кода?

В прошивке Marlin G-код обрабатывается процедурой void process_parsed_command() в файле Marlin_main.cpp

Мне нужно сгенерировать дополнительный цифровой выход

G-код, который может задать значение порта, - это M42.

Вы можете написать процедуру, которая планирует определенный порт после перемещения G0 или G1, перекомпилировать и загрузить встроенное ПО.


,

Если я отредактирую функцию gcode_G0_G1() в marlin_main.cpp и записывайте непосредственно в регистры AVR DDR и ПОРТ для переключения контактов, используемых для привода экструдера. Поскольку я не использую экструдер в системе, все будет в порядке? Что мне нужно, так это функция блокировки до завершения команд G0/G1 Достигнет ли этого добавление planner.synchronize(); в конец функции. Вместо отправки M400 следует команда., @Ahe

@Ahe Это, вероятно, не будет проблемой, так как вы их не используете. Но я не знаю, сбрасываются ли эти порты какой-либо функцией или около того. Вы могли бы прокомментировать назначение контакта экструдера в "pins_ANET_10.h", чтобы быть уверенным, но, пожалуйста, попробуйте, возможно, эти определения констант портов используются где-то в коде. Просто поищите в базе кода, я подозреваю, что у вас есть некоторый опыт программирования, чтобы разобраться в этом. Удачи!, @0scar

@Ahe, Возможно, вы захотите взглянуть на G-код "Финишные ходы" "M400". Если бы вы установили размер буфера G-кода равным 1 и вводили "M400" после каждой команды G1 / G0, вы могли бы переключить свой контакт, например, с помощью "M42 P123 S255 - > G4 P10 - > > M42 P123 S0", при этом 123-ваш цифровой контакт., @towe