Пока что получилось сделать так чтоб мой код F1 понял принтер и пропищал, изменения в прошивке Marlin минимальны, в файле Marlin_main.cpp
В конце обработчика
switch (parser.command_letter) { прописываем свой вариант с вызовом нашего обработчика команды gcode_F1()
Код:
case 'F': switch (parser.codenum){ //!!!!
case 1:
gcode_F1();
break;
}
break;
затем когда прописываются обработчики команд, в конце после всех обработчиков прописываем свой обработчик
Код:
inline void gcode_F1() //!!!!
{
//PORTD=PORTD|(1<<50); ни в коем случае не разкомментируйте и не пишите ничего подобного, сожжете плату или МК, т.к. физически все порты МК имеют до 16 пинов
// а до 17 и выше, например до 50 как тут это уже идет эмуляция в марлине за счет программы
BUZZ(1500, 50);
}
После этого в файле gcode.cpp прописываем в строке нашу литеру для команд
F, потому что если этого не сделать, то парсер при обработке будет выдавать сообщение неизвестная команда
Код:
// Bail if the letter is not G, M, or T
switch (letter) { case 'G': case 'M': case 'T': case 'F': break; default: return; }
Это все что нужно сделать, если кому интересно выкладываю сами файлы просто для наглядности, если будете делать нечто подобное то рекомендую править файлы вашей прошивки, т.к. как я понял прошивки даже недалекие друг от друга в дате релиза, по коду могут отличаться, поэтому при простом копировании моих файлов в вашу прошивку она может стать просто не работоспособной. Все изменения можно будет найти если нажать ctrl+F и для поиска ввести !!!! ,я так мечу в файлах изменения которые проводил, на комментарии не обращайте внимания пишу для себя.
Также хочу отметить важную деталь с управлением пинами я еще не разобрался, но понял четко то что следующих конструкций в обработчиках команд быть
НЕ ДОЛЖНОКод:
//PORTD=PORTD|(1<<50); ни в коем случае не разкомментируйте и не пишите ничего подобного, сожжете плату или МК, т.к. физически все порты МК имеют до 16 пинов
// а до 17 и выше, например до 50 как тут это уже идет эмуляция в марлине за счет программы