Начинающий » 06 мар 2018, 14:35
Покопался в прошивке Marlin и узнал следующее:
В файле pins.h объявляется часть пинов, и есть ссылка на файл специфичный для используемой платы, в моем случае pins_MKS_13.h, где объявляется еще часть пинов, и есть ссылка на файл pins_RAMPS.h, где объявляются остальные пины.
Соответствие номеров пинов в марлине, портам микроконтроллера Mega1280/Mega2560 прописано в файле fastio_1280.h, на который ссылается файл fastio.h, т.к. используется контроллер Mega2560. Соответствие прописано в комментарии в самом верху и значения из строки 1280 равны значениям строки Port.
Для управления цифровыми пинами которые на рисунке с распиновкой платы обозначаются как D1,D2,...D50,... используются команды прописанные в файле fastio_1280.h
READ(IO); WRITE(IO,V); TOGGLE(IO); SET_INPUT(IO); SET_OUTPUT(IO); SET_INPUT_PULLUP(IO); GET_INPUT(IO); GET_OUTPUT(IO);
Причем доступными из 5 вольтовых, в моем случае оказались только цифровые пины D2,D15,D19, а также аналоговый пин A11, который реагирует только как цифровой, и ШИМ сигнал не выдает, даже с командой M42, остальные аналоговые пины A5,A6,A12,A15 никак не реагируют ни на одну команду, ни на тот же код M42 ни на
SET_OUTPUT(12);
WRITE(12,HIGH);
ни на
pinMode(12, OUTPUT);
analogWrite(12, 255);
которые используются в команде M42, реакции ноль, причем если присмотреться, то пины A15 и D15 соответствуют одному и тому же порту на микроконтроллере платы и пину в марлине, а именно 15, однако когда я подаю высокий или низкий логический уровень на 15 пин, реагирует только вывод D15 на плате, а на выводе A15 стабильно идет высокий уровень сигнала с подтяжкой :/
Также думаю стоит отметить, что при использовании свободных пинов стоит просматривать файлы pins.h; pins_MKS_13.h; pins_RAMPS.h, потому что если там свободные пины уже переназначены через директиву #define, то на ваши команды эти пины могут не отреагировать, пока вы эту директиву не закомментируете, в частности у меня было именно так, когда я переназначал выход под нагреватель экструдера. Однако с аналоговыми пинами совершенно другая история как я понимаю, если не прав, то пожалуйста поправьте.
Если кто в курсе как с аналоговыми пинами работать напишите плиз, а то совсем непонятная ситуация складывается, пины есть и не задействованы никак, но использовать их не получается, даже если в коде прошивки все ссылки на них закомментировать.
Также прилагаю схему принципиальную электрическую для платы 2560, хотя конечно в основном пины на разных версиях плат совпадать будут врятли, а также нормальную картинку самой платы 2560 с пинами.
Также хочется спросить почему на пинах шаговых двигателей, когда шаговики отключены, нет напряжения вообще, даже когда пытаюсь двигать каретку по Z без подключенного шаговика напряжение на обеих катушках по 0 вольт, неужели Marlin контролирует наличие двигателя по потреблению тока?
- Вложения
-
MKS_BASE_PINS.pdf
- (141 КиБ) Скачиваний: 0
-
arduino-mega2560-schematic Принципиальная электрическая схема для arduino 2560.pdf
- (41.76 КиБ) Скачиваний: 0
Принтер TevoTarantula
Прошивка Marlin 1.1.9
Слайсер Slic3r/PrusaSlicer
Пластик ABS