Почему я не вижу эффекта от команды M42 на Марлине?

Я пытаюсь использовать один из GPIO RAMPS для управления внешним устройством, для которого требуется сигнал логического уровня низкого тока 5 В от Marlin. Чтобы сделать это программно, мое программное обеспечение хоста (Octoprint) отправляет команду M42. Я использую следующий синтаксис:

M42 P4 S255

в соответствии с распиновкой на следующем изображении:

Однако вывод, по-видимому, не доведен до логического HIGH уровня. Есть ли конфигурация на уровне прошивки, которую также нужно выполнить, или мой синтаксис/контакт неверен?

, 👍3

Обсуждение

Опубликуйте свои настройки прошивки. Также проверьте свой источник для платы. Если это дешевая фальшивая плата..., @StarWind0

@StarWind Я свяжусь с поставщиком принтера относительно источника платы. Нет никаких элементов конфигурации, специфичных для pins или GPIO, которые я вижу в "Конфигурации".h или Configuration_adv.h`., @nanofarad

Я бы попробовал M42 P4 S0 на случай, если он каким-то образом перевернут. Если так, то тогда и только тогда я буду беспокоиться о том, почему., @Ecnerwal

Помог ли вообще ответ Марка. Если да, пожалуйста, не могли бы вы отметить это как принятое. Если это не так, и вы решили свою проблему, не могли бы вы опубликовать ответ и принять его, пожалуйста. Как бета-сайт, мы должны свести наш список вопросов без ответов к минимуму. Спасибо, @Greenonline

@Greenonline К сожалению, принтер больше не находится в моем распоряжении (я больше не работаю в этой лаборатории и вообще нахожусь в другом городе в нескольких часах езды), и проблема была решена кем-то другим неизвестным мне способом. Ответ Марка действительно кажется разумным, но я не могу подтвердить, что он работает-должен ли я выбрать его в любом случае?, @nanofarad

Может быть, не тогда, в таком случае. Спасибо за обновление. Я не знаю, что делать в этой ситуации... похоже, что навсегда останется неясным, сработало это или нет. Не волнуйтесь :-), @Greenonline


2 ответа


5

Я посмотрел на текущий код Marlin, и команда 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 одному из них. Если проблема в этом, команда должна возвращать ошибку. Если ошибки нет, я бы внимательно посмотрел на аппаратное обеспечение.


,

0

Возможно, это связано с тем, что сервоприводные контакты не подключены к 5 В. используйте перемычку, как показано на рисунке

,

Влияет ли это на способность управлять GPIO? Мне не нужен источник питания 5 В, только сигнал TTL., @nanofarad

Я не могу сказать наверняка. Завтра я проверю свою плату. Если вы хотите проверить работу " M42 "с помощью marlin, отправьте "M42 S255", так как контакт не указан, по умолчанию "LED_PIN" (контакт 13, светодиод RAMPS прикреплен к этому контакту.) контакт будет включен. Вы можете отправить "M42 P20 S255" и получить вывод gpio с 20-го вывода (в разделе I2C вашего изображения вывод 20 или 21). Я это проверил. это работает., @Athul

Несмотря на это, это не вызывает особой озабоченности; У меня уже несколько лет не было доступа к рассматриваемому принтеру (с тех пор, как я закончил/переехал), но я подозреваю, что, поскольку atmega2560 выводит контакты из своего внутреннего источника питания, установка этой перемычки приведет к питанию фиксированного вывода 5 В, но не повлияет на вывод ввода-вывода/сигнала., @nanofarad

Возможно, этот контакт уже используется прошивкой для каких-то других целей, например, включены сервоприводы, @Athul