diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 198f6160..e2afaa64 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -147,135 +147,6 @@ #define FILAMENT_PVA 2 #define FILAMENT_UNDEFINED 255 -// look here for descriptions of G-codes: http://linuxcnc.org/handbook/gcode/g-code.html -// http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes - -//Implemented Codes -//------------------- - -// PRUSA CODES -// P F - Returns FW versions -// P R - Returns revision of printer - -// G0 -> G1 -// G1 - Coordinated Movement X Y Z E -// G2 - CW ARC -// G3 - CCW ARC -// G4 - Dwell S or P -// G10 - retract filament according to settings of M207 -// G11 - retract recover filament according to settings of M208 -// G28 - Home all Axis -// G29 - Detailed Z-Probe, probes the bed at 3 or more points. Will fail if you haven't homed yet. -// G30 - Single Z Probe, probes bed at current XY location. -// G31 - Dock sled (Z_PROBE_SLED only) -// G32 - Undock sled (Z_PROBE_SLED only) -// G80 - Automatic mesh bed leveling -// G81 - Print bed profile -// G90 - Use Absolute Coordinates -// G91 - Use Relative Coordinates -// G92 - Set current position to coordinates given - -// M Codes -// M0 - Unconditional stop - Wait for user to press a button on the LCD -// M1 - Same as M0 -// M17 - Enable/Power all stepper motors -// M18 - Disable all stepper motors; same as M84 -// M20 - List SD card -// M21 - Init SD card -// M22 - Release SD card -// M23 - Select SD file (M23 filename.g) -// M24 - Start/resume SD print -// M25 - Pause SD print -// M26 - Set SD position in bytes (M26 S12345) -// M27 - Report SD print status -// M28 - Start SD write (M28 filename.g) -// M29 - Stop SD write -// M30 - Delete file from SD (M30 filename.g) -// M31 - Output time since last M109 or SD card start to serial -// M32 - Select file and start SD print (Can be used _while_ printing from SD card files): -// syntax "M32 /path/filename#", or "M32 S !filename#" -// Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include). -// The '#' is necessary when calling from within sd files, as it stops buffer prereading -// M42 - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used. -// M73 - Show percent done and print time remaining -// M80 - Turn on Power Supply -// M81 - Turn off Power Supply -// M82 - Set E codes absolute (default) -// M83 - Set E codes relative while in Absolute Coordinates (G90) mode -// M84 - Disable steppers until next move, -// or use S to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout. -// M85 - Set inactivity shutdown timer with parameter S. To disable set zero (default) -// M86 - Set safety timer expiration time with parameter S; M86 S0 will disable safety timer -// M92 - Set axis_steps_per_unit - same syntax as G92 -// M104 - Set extruder target temp -// M105 - Read current temp -// M106 - Fan on -// M107 - Fan off -// M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating -// Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling -// IF AUTOTEMP is enabled, S B F. Exit autotemp by any M109 without F -// M112 - Emergency stop -// M113 - Get or set the timeout interval for Host Keepalive "busy" messages -// M114 - Output current position to serial port -// M115 - Capabilities string -// M117 - display message -// M119 - Output Endstop status to serial port -// M126 - Solenoid Air Valve Open (BariCUDA support by jmil) -// M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil) -// M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil) -// M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil) -// M140 - Set bed target temp -// M150 - Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work. -// M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating -// Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling -// M200 D- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). -// M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) -// M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!! -// M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec -// M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) in mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate -// M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk -// M206 - set additional homing offset -// M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting -// M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec] -// M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction. -// M218 - set hotend offset (in mm): T X Y -// M220 S- set speed factor override percentage -// M221 S- set extrude factor override percentage -// M226 P S- Wait until the specified pin reaches the state required -// M240 - Trigger a camera to take a photograph -// M250 - Set LCD contrast C (value 0..63) -// M280 - set servo position absolute. P: servo index, S: angle or microseconds -// M300 - Play beep sound S P -// M301 - Set PID parameters P I and D -// M302 - Allow cold extrudes, or set the minimum extrude S. -// M303 - PID relay autotune S sets the target temperature. (default target temperature = 150C) -// M304 - Set bed PID parameters P I and D -// M400 - Finish all moves -// M401 - Lower z-probe if present -// M402 - Raise z-probe if present -// M404 - N Enter the nominal filament width (3mm, 1.75mm ) or will display nominal filament width without parameters -// M405 - Turn on Filament Sensor extrusion control. Optional D to set delay in centimeters between sensor and extruder -// M406 - Turn off Filament Sensor extrusion control -// M407 - Displays measured filament diameter -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -// M503 - print the current settings (from memory not from EEPROM) -// M509 - force language selection on next restart -// M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) -// M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] -// M605 - Set dual x-carriage movement mode: S [ X R ] -// M860 - Wait for PINDA thermistor to reach target temperature. -// M861 - Set / Read PINDA temperature compensation offsets -// M900 - Set LIN_ADVANCE options, if enabled. See Configuration_adv.h for details. -// M907 - Set digital trimpot motor current using axis codes. -// M908 - Control digital trimpot directly. -// M350 - Set microstepping mode. -// M351 - Toggle MS1 MS2 pins directly. - -// M928 - Start SD logging (M928 filename.g) - ended by M29 -// M999 - Restart after being stopped by error - //Stepper Movement Variables //=========================================================================== @@ -3302,7 +3173,136 @@ extern uint8_t st_backlash_x; extern uint8_t st_backlash_y; #endif //BACKLASH_Y - +//! @brief Parse and process commands +//! +//! look here for descriptions of G-codes: http://linuxcnc.org/handbook/gcode/g-code.html +//! http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes +//! +//! Implemented Codes +//! ------------------- +//! +//!@n PRUSA CODES +//!@n P F - Returns FW versions +//!@n P R - Returns revision of printer +//! +//!@n G0 -> G1 +//!@n G1 - Coordinated Movement X Y Z E +//!@n G2 - CW ARC +//!@n G3 - CCW ARC +//!@n G4 - Dwell S or P +//!@n G10 - retract filament according to settings of M207 +//!@n G11 - retract recover filament according to settings of M208 +//!@n G28 - Home all Axis +//!@n G29 - Detailed Z-Probe, probes the bed at 3 or more points. Will fail if you haven't homed yet. +//!@n G30 - Single Z Probe, probes bed at current XY location. +//!@n G31 - Dock sled (Z_PROBE_SLED only) +//!@n G32 - Undock sled (Z_PROBE_SLED only) +//!@n G80 - Automatic mesh bed leveling +//!@n G81 - Print bed profile +//!@n G90 - Use Absolute Coordinates +//!@n G91 - Use Relative Coordinates +//!@n G92 - Set current position to coordinates given +//! +//!@n M Codes +//!@n M0 - Unconditional stop - Wait for user to press a button on the LCD +//!@n M1 - Same as M0 +//!@n M17 - Enable/Power all stepper motors +//!@n M18 - Disable all stepper motors; same as M84 +//!@n M20 - List SD card +//!@n M21 - Init SD card +//!@n M22 - Release SD card +//!@n M23 - Select SD file (M23 filename.g) +//!@n M24 - Start/resume SD print +//!@n M25 - Pause SD print +//!@n M26 - Set SD position in bytes (M26 S12345) +//!@n M27 - Report SD print status +//!@n M28 - Start SD write (M28 filename.g) +//!@n M29 - Stop SD write +//!@n M30 - Delete file from SD (M30 filename.g) +//!@n M31 - Output time since last M109 or SD card start to serial +//!@n M32 - Select file and start SD print (Can be used _while_ printing from SD card files): +//! syntax "M32 /path/filename#", or "M32 S !filename#" +//! Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include). +//! The '#' is necessary when calling from within sd files, as it stops buffer prereading +//!@n M42 - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used. +//!@n M73 - Show percent done and print time remaining +//!@n M80 - Turn on Power Supply +//!@n M81 - Turn off Power Supply +//!@n M82 - Set E codes absolute (default) +//!@n M83 - Set E codes relative while in Absolute Coordinates (G90) mode +//!@n M84 - Disable steppers until next move, +//! or use S to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout. +//!@n M85 - Set inactivity shutdown timer with parameter S. To disable set zero (default) +//!@n M86 - Set safety timer expiration time with parameter S; M86 S0 will disable safety timer +//!@n M92 - Set axis_steps_per_unit - same syntax as G92 +//!@n M104 - Set extruder target temp +//!@n M105 - Read current temp +//!@n M106 - Fan on +//!@n M107 - Fan off +//!@n M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating +//! Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling +//! IF AUTOTEMP is enabled, S B F. Exit autotemp by any M109 without F +//!@n M112 - Emergency stop +//!@n M113 - Get or set the timeout interval for Host Keepalive "busy" messages +//!@n M114 - Output current position to serial port +//!@n M115 - Capabilities string +//!@n M117 - display message +//!@n M119 - Output Endstop status to serial port +//!@n M126 - Solenoid Air Valve Open (BariCUDA support by jmil) +//!@n M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil) +//!@n M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil) +//!@n M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil) +//!@n M140 - Set bed target temp +//!@n M150 - Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work. +//!@n M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating +//! Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling +//!@n M200 D- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). +//!@n M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) +//!@n M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!! +//!@n M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec +//!@n M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) in mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate +//!@n M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk +//!@n M206 - set additional homing offset +//!@n M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting +//!@n M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec] +//!@n M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction. +//!@n M218 - set hotend offset (in mm): T X Y +//!@n M220 S- set speed factor override percentage +//!@n M221 S- set extrude factor override percentage +//!@n M226 P S- Wait until the specified pin reaches the state required +//!@n M240 - Trigger a camera to take a photograph +//!@n M250 - Set LCD contrast C (value 0..63) +//!@n M280 - set servo position absolute. P: servo index, S: angle or microseconds +//!@n M300 - Play beep sound S P +//!@n M301 - Set PID parameters P I and D +//!@n M302 - Allow cold extrudes, or set the minimum extrude S. +//!@n M303 - PID relay autotune S sets the target temperature. (default target temperature = 150C) +//!@n M304 - Set bed PID parameters P I and D +//!@n M400 - Finish all moves +//!@n M401 - Lower z-probe if present +//!@n M402 - Raise z-probe if present +//!@n M404 - N Enter the nominal filament width (3mm, 1.75mm ) or will display nominal filament width without parameters +//!@n M405 - Turn on Filament Sensor extrusion control. Optional D to set delay in centimeters between sensor and extruder +//!@n M406 - Turn off Filament Sensor extrusion control +//!@n M407 - Displays measured filament diameter +//!@n M500 - stores parameters in EEPROM +//!@n M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +//!@n M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//!@n M503 - print the current settings (from memory not from EEPROM) +//!@n M509 - force language selection on next restart +//!@n M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) +//!@n M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] +//!@n M605 - Set dual x-carriage movement mode: S [ X R ] +//!@n M860 - Wait for PINDA thermistor to reach target temperature. +//!@n M861 - Set / Read PINDA temperature compensation offsets +//!@n M900 - Set LIN_ADVANCE options, if enabled. See Configuration_adv.h for details. +//!@n M907 - Set digital trimpot motor current using axis codes. +//!@n M908 - Control digital trimpot directly. +//!@n M350 - Set microstepping mode. +//!@n M351 - Toggle MS1 MS2 pins directly. +//! +//!@n M928 - Start SD logging (M928 filename.g) - ended by M29 +//!@n M999 - Restart after being stopped by error void process_commands() { if (!buflen) return; //empty command @@ -3344,21 +3344,21 @@ void process_commands() #ifdef TMC2130 else if (strncmp_P(CMDBUFFER_CURRENT_STRING, PSTR("CRASH_"), 6) == 0) { - if(code_seen("CRASH_DETECTED")) + if(code_seen("CRASH_DETECTED")) //! CRASH_DETECTED { uint8_t mask = 0; if (code_seen('X')) mask |= X_AXIS_MASK; if (code_seen('Y')) mask |= Y_AXIS_MASK; crashdet_detected(mask); } - else if(code_seen("CRASH_RECOVER")) + else if(code_seen("CRASH_RECOVER")) //! CRASH_RECOVER crashdet_recover(); - else if(code_seen("CRASH_CANCEL")) + else if(code_seen("CRASH_CANCEL")) //! CRASH_CANCEL crashdet_cancel(); } else if (strncmp_P(CMDBUFFER_CURRENT_STRING, PSTR("TMC_"), 4) == 0) { - if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_WAVE_"), 9) == 0) + if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_WAVE_"), 9) == 0) //! TMC_SET_WAVE_ { uint8_t axis = *(CMDBUFFER_CURRENT_STRING + 13); axis = (axis == 'E')?3:(axis - 'X'); @@ -3368,7 +3368,7 @@ void process_commands() tmc2130_set_wave(axis, 247, fac); } } - else if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_STEP_"), 9) == 0) + else if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_STEP_"), 9) == 0) //! TMC_SET_STEP_ { uint8_t axis = *(CMDBUFFER_CURRENT_STRING + 13); axis = (axis == 'E')?3:(axis - 'X'); @@ -3379,7 +3379,7 @@ void process_commands() tmc2130_goto_step(axis, step & (4*res - 1), 2, 1000, res); } } - else if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_CHOP_"), 9) == 0) + else if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_CHOP_"), 9) == 0) //! TMC_SET_CHOP_ { uint8_t axis = *(CMDBUFFER_CURRENT_STRING + 13); axis = (axis == 'E')?3:(axis - 'X'); @@ -3430,22 +3430,22 @@ void process_commands() } #endif //BACKLASH_Y #endif //TMC2130 - else if (code_seen("FSENSOR_RECOVER")) { + else if (code_seen("FSENSOR_RECOVER")) { //! FSENSOR_RECOVER fsensor_restore_print_and_continue(); } else if(code_seen("PRUSA")){ - if (code_seen("Ping")) { //PRUSA Ping + if (code_seen("Ping")) { //! PRUSA Ping if (farm_mode) { PingTime = millis(); //MYSERIAL.print(farm_no); MYSERIAL.println(": OK"); } } - else if (code_seen("PRN")) { + else if (code_seen("PRN")) { //! PRUSA PRN printf_P(_N("%d"), status_number); - }else if (code_seen("FAN")) { + }else if (code_seen("FAN")) { //! PRUSA FAN printf_P(_N("E0:%d RPM\nPRN0:%d RPM\n"), 60*fan_speed[0], 60*fan_speed[1]); - }else if (code_seen("fn")) { + }else if (code_seen("fn")) { //! PRUSA fn if (farm_mode) { printf_P(_N("%d"), farm_no); } @@ -3454,20 +3454,20 @@ void process_commands() } } - else if (code_seen("thx")) + else if (code_seen("thx")) //! PRUSA thx { no_response = false; } - else if (code_seen("uvlo")) + else if (code_seen("uvlo")) //! PRUSA uvlo { eeprom_update_byte((uint8_t*)EEPROM_UVLO,0); enquecommand_P(PSTR("M24")); } - else if (code_seen("MMURES")) + else if (code_seen("MMURES")) //! PRUSA MMURES { mmu_reset(); } - else if (code_seen("RESET")) { + else if (code_seen("RESET")) { //! PRUSA RESET // careful! if (farm_mode) { #ifdef WATCHDOG @@ -3483,7 +3483,7 @@ void process_commands() else { MYSERIAL.println("Not in farm mode."); } - }else if (code_seen("fv")) { + }else if (code_seen("fv")) { //! PRUSA fv // get file version #ifdef SDSUPPORT card.openFile(strchr_pointer + 3,true); @@ -3498,33 +3498,33 @@ void process_commands() #endif // SDSUPPORT - } else if (code_seen("M28")) { + } else if (code_seen("M28")) { //! PRUSA M28 trace(); prusa_sd_card_upload = true; card.openFile(strchr_pointer+4,false); - } else if (code_seen("SN")) { + } else if (code_seen("SN")) { //! PRUSA SN gcode_PRUSA_SN(); - } else if(code_seen("Fir")){ + } else if(code_seen("Fir")){ //! PRUSA Fir SERIAL_PROTOCOLLN(FW_VERSION_FULL); - } else if(code_seen("Rev")){ + } else if(code_seen("Rev")){ //! PRUSA Rev SERIAL_PROTOCOLLN(FILAMENT_SIZE "-" ELECTRONICS "-" NOZZLE_TYPE ); - } else if(code_seen("Lang")) { + } else if(code_seen("Lang")) { //! PRUSA Lang lang_reset(); - } else if(code_seen("Lz")) { + } else if(code_seen("Lz")) { //! PRUSA Lz EEPROM_save_B(EEPROM_BABYSTEP_Z,0); - } else if(code_seen("Beat")) { + } else if(code_seen("Beat")) { //! PRUSA Beat // Kick farm link timer kicktime = millis(); - } else if(code_seen("FR")) { + } else if(code_seen("FR")) { //! PRUSA FR // Factory full reset factory_reset(0); } @@ -4004,7 +4004,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 76: //PINDA probe temperature calibration + case 76: //! G76 - PINDA probe temperature calibration { #ifdef PINDA_THERMISTOR if (true) @@ -4263,12 +4263,9 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) #ifdef DIS case 77: { - //G77 X200 Y150 XP100 YP15 XO10 Y015 - - //for 9 point mesh bed leveling G77 X203 Y196 XP3 YP3 XO0 YO0 - - - //G77 X232 Y218 XP116 YP109 XO-11 YO0 + //! G77 X200 Y150 XP100 YP15 XO10 Y015 + //! for 9 point mesh bed leveling G77 X203 Y196 XP3 YP3 XO0 YO0 + //! G77 X232 Y218 XP116 YP109 XO-11 YO0 float dimension_x = 40; float dimension_y = 40; @@ -4307,12 +4304,12 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) * mesh to compensate for variable bed height * * The S0 report the points as below - * + * @code{.unparsed} * +----> X-axis * | * | * v Y-axis - * + * @endcode */ case 80: @@ -4745,7 +4742,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 98: // G98 (activate farm mode) + case 98: //! G98 (activate farm mode) farm_mode = 1; PingTime = millis(); eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode); @@ -4754,7 +4751,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); break; - case 99: // G99 (deactivate farm mode) + case 99: //! G99 (deactivate farm mode) farm_mode = 0; lcd_printer_connected(); eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode); @@ -5000,7 +4997,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } } break; - case 44: // M44: Prusa3D: Reset the bed skew and offset calibration. + case 44: //! M44: Prusa3D: Reset the bed skew and offset calibration. // Reset the baby step value and the baby step applied flag. calibration_status_store(CALIBRATION_STATUS_ASSEMBLED); @@ -5014,7 +5011,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) world2machine_revert_to_uncorrected(); break; - case 45: // M45: Prusa3D: bed skew and offset with manual Z up + case 45: //! M45: Prusa3D: bed skew and offset with manual Z up { int8_t verbosity_level = 0; bool only_Z = code_seen('Z'); @@ -5054,14 +5051,14 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) */ case 47: - // M47: Prusa3D: Show end stops dialog on the display. + //! M47: Prusa3D: Show end stops dialog on the display. KEEPALIVE_STATE(PAUSED_FOR_USER); lcd_diag_show_end_stops(); KEEPALIVE_STATE(IN_HANDLER); break; #if 0 - case 48: // M48: scan the bed induction sensor points, print the sensor trigger coordinates to the serial line for visualization on the PC. + case 48: //! M48: scan the bed induction sensor points, print the sensor trigger coordinates to the serial line for visualization on the PC. { // Disable the default update procedure of the display. We will do a modal dialog. lcd_update_enable(false); @@ -5096,23 +5093,22 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } #endif -// M48 Z-Probe repeatability measurement function. -// -// Usage: M48 -// -// This function assumes the bed has been homed. Specificaly, that a G28 command -// as been issued prior to invoking the M48 Z-Probe repeatability measurement function. -// Any information generated by a prior G29 Bed leveling command will be lost and need to be -// regenerated. -// -// The number of samples will default to 10 if not specified. You can use upper or lower case -// letters for any of the options EXCEPT n. n must be in lower case because Marlin uses a capital -// N for its communication protocol and will get horribly confused if you send it a capital N. -// #ifdef ENABLE_AUTO_BED_LEVELING #ifdef Z_PROBE_REPEATABILITY_TEST - + //! M48 Z-Probe repeatability measurement function. + //! + //! Usage: M48 + //! + //! This function assumes the bed has been homed. Specificaly, that a G28 command + //! as been issued prior to invoking the M48 Z-Probe repeatability measurement function. + //! Any information generated by a prior G29 Bed leveling command will be lost and need to be + //! regenerated. + //! + //! The number of samples will default to 10 if not specified. You can use upper or lower case + //! letters for any of the options EXCEPT n. n must be in lower case because Marlin uses a capital + //! N for its communication protocol and will get horribly confused if you send it a capital N. + //! case 48: // M48 Z-Probe repeatability { #if Z_MIN_PIN == -1 @@ -5578,7 +5574,7 @@ Sigma_Exit: break; #if defined(FAN_PIN) && FAN_PIN > -1 - case 106: //M106 Fan On + case 106: //!M106 Sxxx Fan On S 0 .. 255 if (code_seen('S')){ fanSpeed=constrain(code_value(),0,255); } @@ -5707,7 +5703,7 @@ Sigma_Exit: } } break; - case 110: // M110 - reset line pos + case 110: //! M110 N - reset line pos if (code_seen('N')) gcode_LastN = code_value_long(); break; @@ -5754,10 +5750,10 @@ Sigma_Exit: case 114: // M114 gcode_M114(); break; - case 120: // M120 + case 120: //! M120 - Disable endstops enable_endstops(false) ; break; - case 121: // M121 + case 121: //! M121 - Enable endstops enable_endstops(true) ; break; case 119: // M119 @@ -5928,9 +5924,9 @@ Sigma_Exit: } break; case 204: - // M204 acclereration settings. - // Supporting old format: M204 S[normal moves] T[filmanent only moves] - // and new format: M204 P[printing moves] R[filmanent only moves] T[travel moves] (as of now T is ignored) + //! M204 acclereration settings. + //!@n Supporting old format: M204 S[normal moves] T[filmanent only moves] + //!@n and new format: M204 P[printing moves] R[filmanent only moves] T[travel moves] (as of now T is ignored) { if(code_seen('S')) { // Legacy acceleration format. This format is used by the legacy Marlin, MK2 or MK3 firmware, @@ -6314,11 +6310,11 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 403: //M403 set filament type (material) for particular extruder and send this information to mmu + case 403: //! M403 set filament type (material) for particular extruder and send this information to mmu { - //currently three different materials are needed (default, flex and PVA) - //add storing this information for different load/unload profiles etc. in the future - //firmware does not wait for "ok" from mmu + //! currently three different materials are needed (default, flex and PVA) + //! add storing this information for different load/unload profiles etc. in the future + //!firmware does not wait for "ok" from mmu if (mmu_enabled) { uint8_t extruder = 255; @@ -6479,13 +6475,13 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; #endif //FILAMENTCHANGEENABLE - case 601: + case 601: //! M601 - Pause print { lcd_pause_print(); } break; - case 602: { + case 602: { //! M602 - Resume print lcd_resume_print(); } break; @@ -6644,13 +6640,13 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) #ifdef TMC2130 - case 910: // M910 TMC2130 init + case 910: //! M910 - TMC2130 init { tmc2130_init(); } break; - case 911: // M911 Set TMC2130 holding currents + case 911: //! M911 - Set TMC2130 holding currents { if (code_seen('X')) tmc2130_set_current_h(0, code_value()); if (code_seen('Y')) tmc2130_set_current_h(1, code_value()); @@ -6659,7 +6655,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 912: // M912 Set TMC2130 running currents + case 912: //! M912 - Set TMC2130 running currents { if (code_seen('X')) tmc2130_set_current_r(0, code_value()); if (code_seen('Y')) tmc2130_set_current_r(1, code_value()); @@ -6668,13 +6664,13 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 913: // M913 Print TMC2130 currents + case 913: //! M913 - Print TMC2130 currents { tmc2130_print_currents(); } break; - case 914: // M914 Set normal mode + case 914: //! M914 - Set normal mode { tmc2130_mode = TMC2130_MODE_NORMAL; update_mode_profile(); @@ -6682,7 +6678,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 915: // M915 Set silent mode + case 915: //! M915 - Set silent mode { tmc2130_mode = TMC2130_MODE_SILENT; update_mode_profile(); @@ -6690,7 +6686,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 916: // M916 Set sg_thrs + case 916: //! M916 - Set sg_thrs { if (code_seen('X')) tmc2130_sg_thr[X_AXIS] = code_value(); if (code_seen('Y')) tmc2130_sg_thr[Y_AXIS] = code_value(); @@ -6701,7 +6697,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 917: // M917 Set TMC2130 pwm_ampl + case 917: //! M917 - Set TMC2130 pwm_ampl { if (code_seen('X')) tmc2130_set_pwm_ampl(0, code_value()); if (code_seen('Y')) tmc2130_set_pwm_ampl(1, code_value()); @@ -6710,7 +6706,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) } break; - case 918: // M918 Set TMC2130 pwm_grad + case 918: //! M918 - Set TMC2130 pwm_grad { if (code_seen('X')) tmc2130_set_pwm_grad(0, code_value()); if (code_seen('Y')) tmc2130_set_pwm_grad(1, code_value()); @@ -6721,7 +6717,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) #endif //TMC2130 - case 350: // M350 Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. + case 350: //! M350 - Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. { #ifdef TMC2130 if(code_seen('E')) @@ -6757,7 +6753,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) #endif //TMC2130 } break; - case 351: // M351 Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low. + case 351: //! M351 - Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low. { #if defined(X_MS1_PIN) && X_MS1_PIN > -1 if(code_seen('S')) switch((int)code_value()) @@ -6775,23 +6771,23 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) #endif } break; - case 701: //M701: load filament + case 701: //! M701 - load filament { if (mmu_enabled && code_seen('E')) tmp_extruder = code_value(); gcode_M701(); } break; - case 702: + case 702: //! M702 [U C] - { if (mmu_enabled) { if (code_seen('U')) - extr_unload_used(); //unload all filaments which were used in current print + extr_unload_used(); //! if "U" unload all filaments which were used in current print else if (code_seen('C')) - extr_unload(); //unload just current filament + extr_unload(); //! if "C" unload just current filament else - extr_unload_all(); //unload all filaments + extr_unload_all(); //! otherwise unload all filaments } else unload_filament(); @@ -6811,7 +6807,13 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) mcode_in_progress = 0; } } // end if(code_seen('M')) (end of M codes) - + //! T - select extruder in case of multi extruder printer + //! select filament in case of MMU_V2 + //! if extruder is "?", open menu to let the user select extruder/filament + //! + //! For MMU_V2: + //! @n T Gcode to extrude must follow immediately to load to extruder wheels + //! @n T? Gcode to extrude doesn't have to follow, load to extruder wheels is done automatically else if(code_seen('T')) { int index; @@ -6954,45 +6956,45 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) switch((int)code_value()) { #ifdef DEBUG_DCODES - case -1: // D-1 - Endless loop + case -1: //! D-1 - Endless loop dcode__1(); break; - case 0: // D0 - Reset + case 0: //! D0 - Reset dcode_0(); break; - case 1: // D1 - Clear EEPROM + case 1: //! D1 - Clear EEPROM dcode_1(); break; - case 2: // D2 - Read/Write RAM + case 2: //! D2 - Read/Write RAM dcode_2(); break; #endif //DEBUG_DCODES #ifdef DEBUG_DCODE3 - case 3: // D3 - Read/Write EEPROM + case 3: //! D3 - Read/Write EEPROM dcode_3(); break; #endif //DEBUG_DCODE3 #ifdef DEBUG_DCODES - case 4: // D4 - Read/Write PIN + case 4: //! D4 - Read/Write PIN dcode_4(); break; - case 5: // D5 - Read/Write FLASH + case 5: //! D5 - Read/Write FLASH // dcode_5(); break; break; - case 6: // D6 - Read/Write external FLASH + case 6: //! D6 - Read/Write external FLASH dcode_6(); break; - case 7: // D7 - Read/Write Bootloader + case 7: //! D7 - Read/Write Bootloader dcode_7(); break; - case 8: // D8 - Read/Write PINDA + case 8: //! D8 - Read/Write PINDA dcode_8(); break; - case 9: // D9 - Read/Write ADC + case 9: //! D9 - Read/Write ADC dcode_9(); break; - case 10: // D10 - XYZ calibration = OK + case 10: //! D10 - XYZ calibration = OK dcode_10(); break; #ifdef TMC2130 - case 2130: // D9125 - TMC2130 + case 2130: //! D2130 - TMC2130 dcode_2130(); break; #endif //TMC2130 #ifdef FILAMENT_SENSOR - case 9125: // D9125 - FILAMENT_SENSOR + case 9125: //! D9125 - FILAMENT_SENSOR dcode_9125(); break; #endif //FILAMENT_SENSOR