ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
879321 Топик полностью
Ксения (28.10.2018 13:04, просмотров: 222) ответил 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(); } Однако ее выполнение снова дает то же сообщение об ошибке, но где это происходит - непонятно.