Ксения (28.10.2018 13:04, просмотров: 223) ответил boka17 на Я скоро изучу ваш принтер окончательно :)
Инициализацию EEPROM я не делала, поскольку не знаю, чем ее требуется инициализировать - готовые прошивки информации о содержимом EEPROM не содержат, а в интернет-рассказах бывалых никто не говорит, что это надо делать. Кроме того, мне кажется маловероятным, чтобы пустая EEPROM мешала только прохождению команды G0, а другим командам исполняться не мешала, т.к. исполнение команды G0 - не то место, где уместно проверять содержимое EEPROM'а (слишком уж часто эта команда используется в деле).
Согласно тексту, вышибает меня вот в том месте, т.к. MSG_ERR_STOPPED и есть то сообщение, которое я получаю:
inline bool IsStopped() { return !Running; }
...
// Movement commands alert when stopped
if (IsStopped()) {
char* gpos = strchr(command, 'G');
if (gpos) {
const int codenum = strtol(gpos + 1, NULL, 10);
switch (codenum) {
case 0:
case 1:
case 2:
case 3:
SERIAL_ERRORLNPGM(MSG_ERR_STOPPED); // errer: "Printer stopped due to errors. Fix the error and use M999 to restart"
LCD_MESSAGEPGM(MSG_STOPPED);
break;
}
}
}
Именно на командах G0-G3 (case 0-3) я это сообщение об ошибке получаю, тогда как остальных выполняются без ошибок. Это указывает, что я нахожусь в состоянии Stopped из-за непрошедшего до конца Startup'а.
Для выхода из состоянии Stopped существует команда:
M999 - Restart after being stopped by error
Именно ее предлагает использовать мое сообщение об ошибке:
error: Printer stopped due to errors. Fix the error and use M999 to restart.
Эта команда и в самом деле должна снять со стопа, т.к. делает "Running = true"
inline void gcode_M999() {
Running = true;
lcd_reset_alert_level();
if (parser.boolval('S')) return;
// gcode_LastN = Stopped_gcode_LastN;
FlushSerialRequestResend();
}
Однако ее выполнение снова дает то же сообщение об ошибке, но где это происходит - непонятно.