Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1
This commit is contained in:
		
							
								
								
									
										2
									
								
								Marlin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Marlin/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| *.o | ||||
| applet/ | ||||
| @@ -8,25 +8,28 @@ | ||||
| //User specified version info of THIS file to display in [Pronterface, etc] terminal window during startup. | ||||
| //Implementation of an idea by Prof Braino to inform user that any changes made | ||||
| //to THIS file by the user have been successfully uploaded into firmware. | ||||
| #define STRING_VERSION_CONFIG_H "2012-02-08j" //Personal revision number for changes to THIS file. | ||||
| #define STRING_CONFIG_H_AUTHOR "scuba82" //Who made the changes. | ||||
| #define STRING_VERSION_CONFIG_H "2012-02-25" //Personal revision number for changes to THIS file. | ||||
| #define STRING_CONFIG_H_AUTHOR "erik" //Who made the changes. | ||||
|  | ||||
| // This determines the communication speed of the printer | ||||
| //#define BAUDRATE 250000 | ||||
| #define BAUDRATE 115200 | ||||
| #define BAUDRATE 250000 | ||||
| //#define BAUDRATE 115200 | ||||
|  | ||||
| //// The following define selects which electronics board you have. Please choose the one that matches your setup | ||||
| // MEGA/RAMPS up to 1.2 = 3, | ||||
| // RAMPS 1.3 = 33 | ||||
| // Gen6 = 5, | ||||
| // Gen7 custom (Alfons3 Version) = 10 "https://github.com/Alfons3/Generation_7_Electronics" | ||||
| // Gen7 v1.1, v1.2 = 11 | ||||
| // Gen7 v1.3 = 12 | ||||
| // Gen7 v1.4 = 13 | ||||
| // MEGA/RAMPS up to 1.2 = 3 | ||||
| // RAMPS 1.3 = 33 (Power outputs: Extruder, Bed, Fan) | ||||
| // RAMPS 1.3 = 34 (Power outputs: Extruder0, Extruder1, Bed) | ||||
| // Gen6 = 5 | ||||
| // Gen6 deluxe = 51 | ||||
| // Sanguinololu 1.2 and above = 62 | ||||
| // Ultimaker = 7, | ||||
| // Gen7 custom (Alfons3 Version) = 77, "https://github.com/Alfons3/Generation_7_Electronics" | ||||
| // Gen7 v1.1, v1.2 = 78 | ||||
| // Gen7 v1.3 = 79 | ||||
| // Teensylu = 8, | ||||
| // Ultimaker = 7 | ||||
| // Teensylu = 8 | ||||
| // Gen3+ =9 | ||||
| #define MOTHERBOARD 77 | ||||
| #define MOTHERBOARD 7 | ||||
|  | ||||
| //=========================================================================== | ||||
| //=============================Thermal Settings  ============================ | ||||
| @@ -44,14 +47,14 @@ | ||||
| // 6 is EPCOS 100k | ||||
| // 7 is 100k Honeywell thermistor 135-104LAG-J01 | ||||
|  | ||||
| #define TEMP_SENSOR_0 6 | ||||
| #define TEMP_SENSOR_0 -1 | ||||
| #define TEMP_SENSOR_1 0 | ||||
| #define TEMP_SENSOR_2 0 | ||||
| #define TEMP_SENSOR_BED 1 | ||||
| #define TEMP_SENSOR_BED 0 | ||||
|  | ||||
| // Actual temperature must be close to target for this long before M109 returns success | ||||
| #define TEMP_RESIDENCY_TIME 30  // (seconds) | ||||
| #define TEMP_HYSTERESIS 3       // (C<EFBFBD>) range of +/- temperatures considered "close" to the target one | ||||
| #define TEMP_RESIDENCY_TIME 10	// (seconds) | ||||
| #define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one | ||||
|  | ||||
| // The minimal temperature defines the temperature below which the heater will not be enabled It is used | ||||
| // to check that the wiring to the thermistor is not broken.  | ||||
| @@ -69,6 +72,7 @@ | ||||
| #define HEATER_2_MAXTEMP 275 | ||||
| #define BED_MAXTEMP 150 | ||||
|  | ||||
|  | ||||
| // PID settings: | ||||
| // Comment the following line to disable PID and enable bang-bang. | ||||
| #define PIDTEMP | ||||
| @@ -111,9 +115,9 @@ | ||||
| #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors | ||||
|  | ||||
| // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. | ||||
| const bool X_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops.  | ||||
| const bool Y_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops.  | ||||
| const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops.  | ||||
| const bool X_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops.  | ||||
| const bool Y_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops.  | ||||
| const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops.  | ||||
|  | ||||
| // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 | ||||
| #define X_ENABLE_ON 0 | ||||
| @@ -127,9 +131,9 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t | ||||
| #define DISABLE_Z false | ||||
| #define DISABLE_E false // For all extruders | ||||
|  | ||||
| #define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true | ||||
| #define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true | ||||
| #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false | ||||
| #define INVERT_Z_DIR false     // for Mendel set to false, for Orca set to true | ||||
| #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true | ||||
| #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false | ||||
| #define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false | ||||
| #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false | ||||
| @@ -140,19 +144,24 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t | ||||
| #define Y_HOME_DIR -1 | ||||
| #define Z_HOME_DIR -1 | ||||
|  | ||||
| #define min_software_endstops false //If true, axis won't move to coordinates less than zero. | ||||
| #define min_software_endstops true //If true, axis won't move to coordinates less than HOME_POS. | ||||
| #define max_software_endstops true  //If true, axis won't move to coordinates greater than the defined lengths below. | ||||
| #define X_MAX_LENGTH 205 | ||||
| #define Y_MAX_LENGTH 205 | ||||
| #define Z_MAX_LENGTH 200 | ||||
|  | ||||
| // The position of the homing switches. Use MAX_LENGTH * -0.5 if the center should be 0, 0, 0 | ||||
| #define X_HOME_POS 0 | ||||
| #define Y_HOME_POS 0 | ||||
| #define Z_HOME_POS 0 | ||||
|  | ||||
| //// MOVEMENT SETTINGS | ||||
| #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E | ||||
| #define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min) | ||||
|  | ||||
| // default settings  | ||||
|  | ||||
| #define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,2560,760*1.1}                    // default steps per unit for ultimaker  | ||||
| #define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200*8/3,760*1.1}                    // default steps per unit for ultimaker  | ||||
| #define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 45}    // (mm/sec)     | ||||
| #define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot. | ||||
|  | ||||
| @@ -173,22 +182,32 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t | ||||
| // 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. | ||||
| //define this to enable eeprom support | ||||
| #define EEPROM_SETTINGS | ||||
| //#define EEPROM_SETTINGS | ||||
| //to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: | ||||
| // please keep turned on if you can. | ||||
| #define EEPROM_CHITCHAT | ||||
| //#define EEPROM_CHITCHAT | ||||
|  | ||||
| //LCD and SD support | ||||
| //#define ULTRA_LCD  //general lcd support, also 16x2 | ||||
| #define SDSUPPORT // Enable SD Card Support in Hardware Console | ||||
| //#define SDSUPPORT // Enable SD Card Support in Hardware Console | ||||
|  | ||||
| #define ULTIPANEL | ||||
| //#define ULTIPANEL | ||||
| #ifdef ULTIPANEL | ||||
|   #define NEWPANEL  //enable this if you have a click-encoder panel | ||||
|   #define SDSUPPORT | ||||
|   #define ULTRA_LCD | ||||
|   #define LCD_WIDTH 20 | ||||
|   #define LCD_HEIGHT 4 | ||||
|  | ||||
| // Preheat Constants | ||||
|   #define PLA_PREHEAT_HOTEND_TEMP 180  | ||||
|   #define PLA_PREHEAT_HPB_TEMP 70 | ||||
|   #define PLA_PREHEAT_FAN_SPEED 255		// Insert Value between 0 and 255 | ||||
|  | ||||
|   #define ABS_PREHEAT_HOTEND_TEMP 240 | ||||
|   #define ABS_PREHEAT_HPB_TEMP 100 | ||||
|   #define ABS_PREHEAT_FAN_SPEED 255		// Insert Value between 0 and 255 | ||||
|  | ||||
| #else //no panel but just lcd  | ||||
|   #ifdef ULTRA_LCD | ||||
|     #define LCD_WIDTH 16 | ||||
|   | ||||
| @@ -25,9 +25,6 @@ | ||||
| // if CooldownNoWait is defined M109 will not wait for the cooldown to finish | ||||
| #define CooldownNoWait true | ||||
|  | ||||
| //Do not wait for M109 to finish when printing from SD card | ||||
| //#define STOP_HEATING_WAIT_WHEN_SD_PRINTING | ||||
|  | ||||
| #ifdef PIDTEMP | ||||
|   // this adds an experimental additional term to the heatingpower, proportional to the extrusion speed. | ||||
|   // if Kc is choosen well, the additional required power due to increased melting should be compensated. | ||||
| @@ -59,6 +56,11 @@ | ||||
| #define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed | ||||
| #define EXTRUDER_RUNOUT_EXTRUDE 100 | ||||
|  | ||||
| //These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. | ||||
| //The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" | ||||
| #define TEMP_SENSOR_AD595_OFFSET 0.0 | ||||
| #define TEMP_SENSOR_AD595_GAIN   1.0 | ||||
|  | ||||
| //=========================================================================== | ||||
| //=============================Mechanical Settings=========================== | ||||
| //=========================================================================== | ||||
| @@ -74,7 +76,7 @@ | ||||
| #define X_HOME_RETRACT_MM 5  | ||||
| #define Y_HOME_RETRACT_MM 5  | ||||
| #define Z_HOME_RETRACT_MM 1  | ||||
| #define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. | ||||
| //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. | ||||
|  | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
|  | ||||
| @@ -148,6 +150,12 @@ | ||||
|  | ||||
| const int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement | ||||
|  | ||||
| // If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted | ||||
| // You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT  | ||||
| // in the pins.h file.  When using a push button pulling the pin to ground this will need inverted.  This setting should | ||||
| // be commented out otherwise | ||||
| #define SDCARDDETECTINVERTED  | ||||
|  | ||||
| //=========================================================================== | ||||
| //=============================Buffers           ============================ | ||||
| //=========================================================================== | ||||
|   | ||||
| @@ -67,28 +67,28 @@ | ||||
| const uint8_t PROGMEM port_to_mode_PGM[] = | ||||
| { | ||||
| 	NOT_A_PORT, | ||||
|     &DDRA, | ||||
| 	&DDRB, | ||||
| 	&DDRC, | ||||
| 	&DDRD, | ||||
|         (uint8_t) &DDRA, | ||||
| 	(uint8_t) &DDRB, | ||||
| 	(uint8_t) &DDRC, | ||||
| 	(uint8_t) &DDRD, | ||||
| }; | ||||
|  | ||||
| const uint8_t PROGMEM port_to_output_PGM[] = | ||||
| { | ||||
| 	NOT_A_PORT, | ||||
| 	&PORTA, | ||||
| 	&PORTB, | ||||
| 	&PORTC, | ||||
| 	&PORTD, | ||||
| 	(uint8_t) &PORTA, | ||||
| 	(uint8_t) &PORTB, | ||||
| 	(uint8_t) &PORTC, | ||||
| 	(uint8_t) &PORTD, | ||||
| }; | ||||
|  | ||||
| const uint8_t PROGMEM port_to_input_PGM[] = | ||||
| { | ||||
| 	NOT_A_PORT, | ||||
| 	&PINA, | ||||
| 	&PINB, | ||||
| 	&PINC, | ||||
| 	&PIND, | ||||
| 	(uint8_t) &PINA, | ||||
| 	(uint8_t) &PINB, | ||||
| 	(uint8_t) &PINC, | ||||
| 	(uint8_t) &PIND, | ||||
| }; | ||||
|  | ||||
| const uint8_t PROGMEM digital_pin_to_port_PGM[] = | ||||
|   | ||||
| @@ -61,7 +61,7 @@ SRC =  $(ARDUINO)/pins_arduino.c $(ARDUINO)/wiring.c \ | ||||
| 	$(ARDUINO)/wiring_pulse.c \ | ||||
| 	$(ARDUINO)/wiring_shift.c $(ARDUINO)/WInterrupts.c | ||||
| CXXSRC = $(ARDUINO)/WMath.cpp $(ARDUINO)/WString.cpp\ | ||||
| 	$(ARDUINO)/Print.cpp Marlin.cpp MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp stepper.cpp temperature.cpp cardreader.cpp | ||||
| 	$(ARDUINO)/Print.cpp applet/Marlin.cpp MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp stepper.cpp temperature.cpp cardreader.cpp | ||||
| FORMAT = ihex | ||||
|  | ||||
|  | ||||
| @@ -138,6 +138,8 @@ all: build sizeafter | ||||
| build: elf hex  | ||||
|  | ||||
| applet/$(TARGET).cpp: $(TARGET).pde $(MAKEFILE) | ||||
|  | ||||
| applet/%.cpp: %.pde | ||||
| # Here is the "preprocessing". | ||||
| # It creates a .cpp file based with the same name as the .pde file. | ||||
| # On top of the new .cpp file comes the WProgram.h header. | ||||
| @@ -145,11 +147,11 @@ applet/$(TARGET).cpp: $(TARGET).pde $(MAKEFILE) | ||||
| # Then the .cpp file will be compiled. Errors during compile will | ||||
| # refer to this new, automatically generated, file.  | ||||
| # Not the original .pde file you actually edit... | ||||
| 	@echo "  WR    applet/$(TARGET).cpp" | ||||
| 	@test -d applet || mkdir applet | ||||
| 	@echo '#include "WProgram.h"' > applet/$(TARGET).cpp | ||||
| 	@cat $(TARGET).pde >> applet/$(TARGET).cpp | ||||
| 	@cat $(ARDUINO)/main.cpp >> applet/$(TARGET).cpp | ||||
| 	@echo "  WR    $@" | ||||
| 	@test -d $(dir $@) || mkdir $(dir $@) | ||||
| 	@echo '#include "WProgram.h"' > $@ | ||||
| 	@cat $< >> $@ | ||||
| 	@cat $(ARDUINO)/main.cpp >> $@ | ||||
|  | ||||
| elf: applet/$(TARGET).elf | ||||
| hex: applet/$(TARGET).hex | ||||
|   | ||||
| @@ -175,7 +175,6 @@ extern float homing_feedrate[]; | ||||
| extern bool axis_relative_modes[]; | ||||
| extern float current_position[NUM_AXIS] ; | ||||
| extern float add_homeing[3]; | ||||
| extern bool stop_heating_wait; | ||||
|  | ||||
| // Handling multiple extruders pins | ||||
| extern uint8_t active_extruder; | ||||
|   | ||||
| @@ -35,8 +35,9 @@ | ||||
| #include "cardreader.h" | ||||
| #include "watchdog.h" | ||||
| #include "EEPROMwrite.h" | ||||
| #include "language.h" | ||||
|  | ||||
| #define VERSION_STRING  "1.0.0 RC1" | ||||
| #define VERSION_STRING  "1.0.0 RC2" | ||||
|  | ||||
| // look here for descriptions of gcodes: http://linuxcnc.org/handbook/gcode/g-code.html | ||||
| // http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes | ||||
| @@ -97,7 +98,8 @@ | ||||
| // M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2  also sets minimum segment time in ms (B20000) to prevent buffer underruns 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 | ||||
| // M206 - set additional homeing offset | ||||
| // M220 - set speed factor override percentage S:factor in percent | ||||
| // M220 S<factor in percent>- set speed factor override percentage | ||||
| // M221 S<factor in percent>- set extrude factor override percentage | ||||
| // M240 - Trigger a camera to take a photograph | ||||
| // M301 - Set PID parameters P I and D | ||||
| // M302 - Allow cold extrudes | ||||
| @@ -125,10 +127,10 @@ bool axis_relative_modes[] = AXIS_RELATIVE_MODES; | ||||
| volatile int feedmultiply=100; //100->1 200->2 | ||||
| int saved_feedmultiply; | ||||
| volatile bool feedmultiplychanged=false; | ||||
| volatile int extrudemultiply=100; //100->1 200->2 | ||||
| float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 }; | ||||
| float add_homeing[3]={0,0,0}; | ||||
| uint8_t active_extruder = 0; | ||||
| bool stop_heating_wait=false; | ||||
|  | ||||
| //=========================================================================== | ||||
| //=============================private variables============================= | ||||
| @@ -249,6 +251,16 @@ void setup() | ||||
|   MYSERIAL.begin(BAUDRATE); | ||||
|   SERIAL_PROTOCOLLNPGM("start"); | ||||
|   SERIAL_ECHO_START; | ||||
|  | ||||
|   // Check startup - does nothing if bootloader sets MCUSR to 0 | ||||
|   byte mcu = MCUSR; | ||||
|   if(mcu & 1) SERIAL_ECHOLNPGM("PowerUp"); | ||||
|   if(mcu & 2) SERIAL_ECHOLNPGM("External Reset"); | ||||
|   if(mcu & 4) SERIAL_ECHOLNPGM("Brown out Reset"); | ||||
|   if(mcu & 8) SERIAL_ECHOLNPGM("Watchdog Reset"); | ||||
|   if(mcu & 32) SERIAL_ECHOLNPGM("Software Reset"); | ||||
|   MCUSR=0; | ||||
|  | ||||
|   SERIAL_ECHOPGM("Marlin: "); | ||||
|   SERIAL_ECHOLNPGM(VERSION_STRING); | ||||
|   #ifdef STRING_VERSION_CONFIG_H | ||||
| @@ -331,9 +343,13 @@ void get_command() | ||||
|     serial_char = MYSERIAL.read(); | ||||
|     if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) )  | ||||
|     { | ||||
|       if(!serial_count) return; //if empty line | ||||
|       if(!serial_count) { //if empty line | ||||
|         comment_mode = false; //for new command | ||||
|         return; | ||||
|       } | ||||
|       cmdbuffer[bufindw][serial_count] = 0; //terminate string | ||||
|       if(!comment_mode){ | ||||
|         comment_mode = false; //for new command | ||||
|         fromsd[bufindw] = false; | ||||
|         if(strstr(cmdbuffer[bufindw], "N") != NULL) | ||||
|         { | ||||
| @@ -410,9 +426,7 @@ void get_command() | ||||
|         } | ||||
|         bufindw = (bufindw + 1)%BUFSIZE; | ||||
|         buflen += 1; | ||||
|  | ||||
|       } | ||||
|       comment_mode = false; //for new command | ||||
|       serial_count = 0; //clear buffer | ||||
|     } | ||||
|     else | ||||
| @@ -446,10 +460,9 @@ void get_command() | ||||
|         card.checkautostart(true); | ||||
|          | ||||
|       } | ||||
|       if(serial_char=='\n') | ||||
|          comment_mode = false; //for new command | ||||
|       if(!serial_count) | ||||
|       { | ||||
|         comment_mode = false; //for new command | ||||
|         return; //if empty line | ||||
|       } | ||||
|       cmdbuffer[bufindw][serial_count] = 0; //terminate string | ||||
| @@ -458,6 +471,7 @@ void get_command() | ||||
|         buflen += 1; | ||||
|         bufindw = (bufindw + 1)%BUFSIZE; | ||||
|       }      | ||||
|       comment_mode = false; //for new command | ||||
|       serial_count = 0; //clear buffer | ||||
|     } | ||||
|     else | ||||
| @@ -476,10 +490,12 @@ float code_value() | ||||
| {  | ||||
|   return (strtod(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL));  | ||||
| } | ||||
|  | ||||
| long code_value_long()  | ||||
| {  | ||||
|   return (strtol(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL, 10));  | ||||
| } | ||||
|  | ||||
| bool code_seen(char code_string[]) //Return True if the string was found | ||||
| {  | ||||
|   return (strstr(cmdbuffer[bufindr], code_string) != NULL);  | ||||
| @@ -490,6 +506,7 @@ bool code_seen(char code) | ||||
|   strchr_pointer = strchr(cmdbuffer[bufindr], code); | ||||
|   return (strchr_pointer != NULL);  //Return True if a character was found | ||||
| } | ||||
|  | ||||
| #define HOMEAXIS(LETTER) \ | ||||
|   if ((LETTER##_MIN_PIN > -1 && LETTER##_HOME_DIR==-1) || (LETTER##_MAX_PIN > -1 && LETTER##_HOME_DIR==1))\ | ||||
|     { \ | ||||
| @@ -498,22 +515,22 @@ bool code_seen(char code) | ||||
|     destination[LETTER##_AXIS] = 1.5 * LETTER##_MAX_LENGTH * LETTER##_HOME_DIR; \ | ||||
|     feedrate = homing_feedrate[LETTER##_AXIS]; \ | ||||
|     plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); \ | ||||
|     st_synchronize();\ | ||||
|     \ | ||||
|     current_position[LETTER##_AXIS] = 0;\ | ||||
|     plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);\ | ||||
|     destination[LETTER##_AXIS] = -LETTER##_HOME_RETRACT_MM * LETTER##_HOME_DIR;\ | ||||
|     plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); \ | ||||
|     st_synchronize();\ | ||||
|     \ | ||||
|     destination[LETTER##_AXIS] = 2*LETTER##_HOME_RETRACT_MM * LETTER##_HOME_DIR;\ | ||||
|     feedrate = homing_feedrate[LETTER##_AXIS]/2 ;  \ | ||||
|     plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); \ | ||||
|     st_synchronize();\ | ||||
|     \ | ||||
|     current_position[LETTER##_AXIS] = (LETTER##_HOME_DIR == -1) ? 0 : LETTER##_MAX_LENGTH;\ | ||||
|     plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);\ | ||||
|     current_position[LETTER##_AXIS] = (LETTER##_HOME_DIR == -1) ? LETTER##_HOME_POS : LETTER##_MAX_LENGTH;\ | ||||
|     destination[LETTER##_AXIS] = current_position[LETTER##_AXIS];\ | ||||
|     feedrate = 0.0;\ | ||||
|     st_synchronize();\ | ||||
|     plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);\ | ||||
|     endstops_hit_on_purpose();\ | ||||
|   } | ||||
|  | ||||
| @@ -567,7 +584,7 @@ void process_commands() | ||||
|       feedrate = 0.0; | ||||
|       home_all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2]))); | ||||
|       #ifdef QUICK_HOME | ||||
|       if( code_seen(axis_codes[0]) && code_seen(axis_codes[1]) )  //first diagonal move | ||||
|       if( code_seen(axis_codes[X_AXIS]) && code_seen(axis_codes[Y_AXIS]) )  //first diagonal move | ||||
|       { | ||||
|         current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0;   | ||||
|  | ||||
| @@ -576,17 +593,17 @@ void process_commands() | ||||
|         feedrate = homing_feedrate[X_AXIS];  | ||||
|         if(homing_feedrate[Y_AXIS]<feedrate) | ||||
|           feedrate =homing_feedrate[Y_AXIS];  | ||||
|         prepare_move();  | ||||
|         plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); | ||||
|         st_synchronize(); | ||||
|      | ||||
|         current_position[X_AXIS] = (X_HOME_DIR == -1) ? 0 : X_MAX_LENGTH; | ||||
|         current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? 0 : Y_MAX_LENGTH; | ||||
|         current_position[X_AXIS] = (X_HOME_DIR == -1) ? X_HOME_POS : X_MAX_LENGTH; | ||||
|         current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? Y_HOME_POS : Y_MAX_LENGTH; | ||||
|         plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); | ||||
|         destination[X_AXIS] = current_position[X_AXIS]; | ||||
|         destination[Y_AXIS] = current_position[Y_AXIS]; | ||||
|         plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); | ||||
|         feedrate = 0.0; | ||||
|         st_synchronize(); | ||||
|         plan_set_position(0, 0, current_position[Z_AXIS], current_position[E_AXIS]); | ||||
|         current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0; | ||||
|         endstops_hit_on_purpose(); | ||||
|       } | ||||
|       #endif | ||||
| @@ -599,23 +616,31 @@ void process_commands() | ||||
|       if((home_all_axis) || (code_seen(axis_codes[Y_AXIS]))) { | ||||
|        HOMEAXIS(Y); | ||||
|       } | ||||
|  | ||||
|        | ||||
|       if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) { | ||||
|         HOMEAXIS(Z); | ||||
|       } | ||||
|        | ||||
|       if(code_seen(axis_codes[X_AXIS]))  | ||||
|       { | ||||
|         current_position[0]=code_value()+add_homeing[0]; | ||||
|         if(code_value_long() != 0) { | ||||
|           current_position[X_AXIS]=code_value()+add_homeing[0]; | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       if(code_seen(axis_codes[Y_AXIS])) { | ||||
|         current_position[1]=code_value()+add_homeing[1]; | ||||
|         if(code_value_long() != 0) { | ||||
|           current_position[Y_AXIS]=code_value()+add_homeing[1]; | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       if(code_seen(axis_codes[Z_AXIS])) { | ||||
|         current_position[2]=code_value()+add_homeing[2]; | ||||
|         if(code_value_long() != 0) { | ||||
|           current_position[Z_AXIS]=code_value()+add_homeing[2]; | ||||
|         } | ||||
|       } | ||||
|       plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); | ||||
|        | ||||
|       #ifdef ENDSTOPS_ONLY_FOR_HOMING | ||||
|         enable_endstops(false); | ||||
|       #endif | ||||
| @@ -880,7 +905,6 @@ void process_commands() | ||||
|           } | ||||
|           manage_heater(); | ||||
|           LCD_STATUS; | ||||
|         if(stop_heating_wait) break; | ||||
|         #ifdef TEMP_RESIDENCY_TIME | ||||
|             /* start/restart the TEMP_RESIDENCY_TIME timer whenever we reach target temp for the first time | ||||
|               or when current temp falls outside the hysteresis after target temp was reached */ | ||||
| @@ -1112,8 +1136,14 @@ void process_commands() | ||||
|       } | ||||
|     } | ||||
|     break; | ||||
|      | ||||
|      | ||||
|     case 221: // M221 S<factor in percent>- set extrude factor override percentage | ||||
|     { | ||||
|       if(code_seen('S'))  | ||||
|       { | ||||
|         extrudemultiply = code_value() ; | ||||
|       } | ||||
|     } | ||||
|     break; | ||||
|  | ||||
|     #ifdef PIDTEMP | ||||
|     case 301: // M301 | ||||
| @@ -1265,11 +1295,10 @@ void get_arc_coordinates() | ||||
|  | ||||
| void prepare_move() | ||||
| { | ||||
|    | ||||
|   if (min_software_endstops) { | ||||
|     if (destination[X_AXIS] < 0) destination[X_AXIS] = 0.0; | ||||
|     if (destination[Y_AXIS] < 0) destination[Y_AXIS] = 0.0; | ||||
|     if (destination[Z_AXIS] < 0) destination[Z_AXIS] = 0.0; | ||||
|     if (destination[X_AXIS] < X_HOME_POS) destination[X_AXIS] = X_HOME_POS; | ||||
|     if (destination[Y_AXIS] < Y_HOME_POS) destination[Y_AXIS] = Y_HOME_POS; | ||||
|     if (destination[Z_AXIS] < Z_HOME_POS) destination[Z_AXIS] = Z_HOME_POS; | ||||
|   } | ||||
|  | ||||
|   if (max_software_endstops) { | ||||
| @@ -1277,7 +1306,7 @@ void prepare_move() | ||||
|     if (destination[Y_AXIS] > Y_MAX_LENGTH) destination[Y_AXIS] = Y_MAX_LENGTH; | ||||
|     if (destination[Z_AXIS] > Z_MAX_LENGTH) destination[Z_AXIS] = Z_MAX_LENGTH; | ||||
|   } | ||||
|  | ||||
|    | ||||
|   plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply/60/100.0, active_extruder); | ||||
|   for(int8_t i=0; i < NUM_AXIS; i++) { | ||||
|     current_position[i] = destination[i]; | ||||
|   | ||||
| @@ -67,28 +67,28 @@ | ||||
| const uint8_t PROGMEM port_to_mode_PGM[] = | ||||
| { | ||||
| 	NOT_A_PORT, | ||||
|     &DDRA, | ||||
| 	&DDRB, | ||||
| 	&DDRC, | ||||
| 	&DDRD, | ||||
| 	(uint8_t) (uint16_t) &DDRA, | ||||
| 	(uint8_t) (uint16_t) &DDRB, | ||||
| 	(uint8_t) (uint16_t) &DDRC, | ||||
| 	(uint8_t) (uint16_t) &DDRD, | ||||
| }; | ||||
|  | ||||
| const uint8_t PROGMEM port_to_output_PGM[] = | ||||
| { | ||||
| 	NOT_A_PORT, | ||||
| 	&PORTA, | ||||
| 	&PORTB, | ||||
| 	&PORTC, | ||||
| 	&PORTD, | ||||
| 	(uint8_t) (uint16_t) &PORTA, | ||||
| 	(uint8_t) (uint16_t) &PORTB, | ||||
| 	(uint8_t) (uint16_t) &PORTC, | ||||
| 	(uint8_t) (uint16_t) &PORTD, | ||||
| }; | ||||
|  | ||||
| const uint8_t PROGMEM port_to_input_PGM[] = | ||||
| { | ||||
| 	NOT_A_PORT, | ||||
| 	&PINA, | ||||
| 	&PINB, | ||||
| 	&PINC, | ||||
| 	&PIND, | ||||
| 	(uint8_t) (uint16_t) &PINA, | ||||
| 	(uint8_t) (uint16_t) &PINB, | ||||
| 	(uint8_t) (uint16_t) &PINC, | ||||
| 	(uint8_t) (uint16_t) &PIND, | ||||
| }; | ||||
|  | ||||
| const uint8_t PROGMEM digital_pin_to_port_PGM[] = | ||||
|   | ||||
| @@ -58,8 +58,8 @@ extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; | ||||
| #define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) | ||||
| #define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) | ||||
| #define analogInPinToBit(P) (P) | ||||
| #define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_output_PGM + (P))) ) | ||||
| #define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_input_PGM + (P))) ) | ||||
| #define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_mode_PGM + (P))) ) | ||||
| #define portOutputRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_output_PGM + (P))) ) | ||||
| #define portInputRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_input_PGM + (P))) ) | ||||
| #define portModeRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_mode_PGM + (P))) ) | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -27,7 +27,7 @@ | ||||
| #include <math.h> | ||||
| #include <avr/io.h> | ||||
| #include <avr/interrupt.h> | ||||
| #include <avr/delay.h> | ||||
| #include <util/delay.h> | ||||
| #include <stdio.h> | ||||
| #include <stdarg.h> | ||||
|  | ||||
|   | ||||
| @@ -447,9 +447,6 @@ void CardReader::printingHasFinished() | ||||
|  st_synchronize(); | ||||
|  quickStop(); | ||||
|  sdprinting = false; | ||||
|  #ifdef STOP_HEATING_WAIT_FOR_SD_PRINTING | ||||
|  stop_heating_wait=true; | ||||
|  #endif | ||||
|  if(SD_FINISHED_STEPPERRELEASE) | ||||
|  { | ||||
|    //finishAndDisableSteppers(); | ||||
|   | ||||
							
								
								
									
										339
									
								
								Marlin/language.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										339
									
								
								Marlin/language.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,339 @@ | ||||
| #ifndef LANGUAGE_H | ||||
| #define LANGUAGE_H | ||||
|  | ||||
| // Languages | ||||
| // 1  Custom (For you to add your own messages) | ||||
| // 2  English  | ||||
| // 3  French	(Waiting translation) | ||||
| // 4  German	(Waiting translation) | ||||
| // 5  Etc | ||||
|  | ||||
| #define LANGUAGE_CHOICE 1  // Pick your language from the list above | ||||
|  | ||||
| #if LANGUAGE_CHOICE == 1 | ||||
|  | ||||
| // LCD Menu Messages | ||||
|  | ||||
| 	#define WELCOME_MSG "RepRap Ready." | ||||
| 	#define MSG_SD_INSERTED "Card Ready" | ||||
| 	#define MSG_SD_REMOVED "Card Initiate" | ||||
| 	#define MSG_MAIN " Main \003" | ||||
| 	#define MSG_AUTOSTART " Autostart" | ||||
| 	#define MSG_DISABLE_STEPPERS " Disable Steppers" | ||||
| 	#define MSG_AUTO_HOME " Auto Home" | ||||
| 	#define MSG_SET_ORIGIN " Set Origin" | ||||
| 	#define MSG_PREHEAT_PLA " Preheat PLA" | ||||
| 	#define MSG_PREHEAT_ABS " Preheat ABS" | ||||
| 	#define MSG_COOLDOWN " Cooldown" | ||||
| 	#define MSG_EXTRUDE " Extrude" | ||||
|         #define MSG_MOVE_AXIS " Move Axis      \x7E" | ||||
| 	#define MSG_SPEED " Speed:" | ||||
| 	#define MSG_NOZZLE " \002Nozzle:" | ||||
| 	#define MSG_BED " \002Bed:" | ||||
| 	#define MSG_FAN_SPEED " Fan speed:" | ||||
| 	#define MSG_FLOW " Flow:" | ||||
| 	#define MSG_CONTROL " Control \003" | ||||
| 	#define MSG_MIN " \002 Min:" | ||||
| 	#define MSG_MAX " \002 Max:" | ||||
| 	#define MSG_FACTOR " \002 Fact:" | ||||
| 	#define MSG_AUTOTEMP " Autotemp:" | ||||
| 	#define MSG_ON "On " | ||||
| 	#define MSG_OFF "Off" | ||||
| 	#define MSG_PID_P " PID-P: " | ||||
| 	#define MSG_PID_I " PID-I: " | ||||
| 	#define MSG_PID_D " PID-D: " | ||||
| 	#define MSG_PID_C " PID-C: " | ||||
| 	#define MSG_ACC  " Acc:" | ||||
| 	#define MSG_VXY_JERK " Vxy-jerk: " | ||||
| 	#define MSG_VMAX " Vmax " | ||||
| 	#define MSG_X "x:" | ||||
| 	#define MSG_Y "y:" | ||||
| 	#define MSG_Z "z:" | ||||
| 	#define MSG_E "e:" | ||||
| 	#define MSG_VMIN " Vmin:" | ||||
| 	#define MSG_VTRAV_MIN " VTrav min:" | ||||
| 	#define MSG_AMAX " Amax " | ||||
| 	#define MSG_A_RETRACT " A-retract:" | ||||
| 	#define MSG_XSTEPS " Xsteps/mm:" | ||||
| 	#define MSG_YSTEPS " Ysteps/mm:" | ||||
| 	#define MSG_ZSTEPS " Zsteps/mm:" | ||||
| 	#define MSG_ESTEPS " Esteps/mm:" | ||||
| 	#define MSG_MAIN_WIDE " Main        \003" | ||||
| 	#define MSG_TEMPERATURE_WIDE " Temperature \x7E" | ||||
| 	#define MSG_MOTION_WIDE " Motion      \x7E" | ||||
| 	#define MSG_STORE_EPROM " Store EPROM" | ||||
| 	#define MSG_LOAD_EPROM " Load EPROM" | ||||
| 	#define MSG_RESTORE_FAILSAFE " Restore Failsafe" | ||||
| 	#define MSG_REFRESH "\004Refresh" | ||||
| 	#define MSG_WATCH " Watch   \003" | ||||
| 	#define MSG_PREPARE " Prepare \x7E" | ||||
| 	#define MSG_CONTROL_ARROW " Control \x7E" | ||||
| 	#define MSG_TUNE " Tune    \x7E" | ||||
| 	#define MSG_STOP_PRINT " Stop Print   \x7E" | ||||
| 	#define MSG_CARD_MENU " Card Menu    \x7E" | ||||
| 	#define MSG_NO_CARD " No Card" | ||||
| 	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Something is wrong in the MenuStructure." | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #if LANGUAGE_CHOICE == 2 | ||||
|  | ||||
| // LCD Menu Messages | ||||
|  | ||||
| 	#define WELCOME_MSG "UltiMARLIN Ready." | ||||
| 	#define MSG_SD_INSERTED "Card inserted" | ||||
| 	#define MSG_SD_REMOVED "Card removed" | ||||
| 	#define MSG_MAIN " Main \003" | ||||
| 	#define MSG_AUTOSTART " Autostart" | ||||
| 	#define MSG_DISABLE_STEPPERS " Disable Steppers" | ||||
| 	#define MSG_AUTO_HOME " Auto Home" | ||||
| 	#define MSG_SET_ORIGIN " Set Origin" | ||||
| 	#define MSG_PREHEAT " Preheat" | ||||
| 	#define MSG_COOLDOWN " Cooldown" | ||||
| 	#define MSG_EXTRUDE " Extrude" | ||||
|         #define MSG_MOVE_AXIS " Move Axis      \x7E" | ||||
| 	#define MSG_SPEED " Speed:" | ||||
| 	#define MSG_NOZZLE " \002Nozzle:" | ||||
| 	#define MSG_BED " \002Bed:" | ||||
| 	#define MSG_FAN_SPEED " Fan speed:" | ||||
| 	#define MSG_FLOW " Flow:" | ||||
| 	#define MSG_CONTROL " Control \003" | ||||
| 	#define MSG_MIN " \002 Min:" | ||||
| 	#define MSG_MAX " \002 Max:" | ||||
| 	#define MSG_FACTOR " \002 Fact:" | ||||
| 	#define MSG_AUTOTEMP " Autotemp:" | ||||
| 	#define MSG_ON "On " | ||||
| 	#define MSG_OFF "Off" | ||||
| 	#define MSG_PID_P " PID-P: " | ||||
| 	#define MSG_PID_I " PID-I: " | ||||
| 	#define MSG_PID_D " PID-D: " | ||||
| 	#define MSG_PID_C " PID-C: " | ||||
| 	#define MSG_ACC  " Acc:" | ||||
| 	#define MSG_VXY_JERK " Vxy-jerk: " | ||||
| 	#define MSG_VMAX " Vmax " | ||||
| 	#define MSG_X "x:" | ||||
| 	#define MSG_Y "y:" | ||||
| 	#define MSG_Z "z:" | ||||
| 	#define MSG_E "e:" | ||||
| 	#define MSG_VMIN " Vmin:" | ||||
| 	#define MSG_VTRAV_MIN " VTrav min:" | ||||
| 	#define MSG_AMAX " Amax " | ||||
| 	#define MSG_A_RETRACT " A-retract:" | ||||
| 	#define MSG_XSTEPS " Xsteps/mm:" | ||||
| 	#define MSG_YSTEPS " Ysteps/mm:" | ||||
| 	#define MSG_ZSTEPS " Zsteps/mm:" | ||||
| 	#define MSG_ESTEPS " Esteps/mm:" | ||||
| 	#define MSG_MAIN_WIDE " Main        \003" | ||||
| 	#define MSG_TEMPERATURE_WIDE " Temperature \x7E" | ||||
| 	#define MSG_MOTION_WIDE " Motion      \x7E" | ||||
| 	#define MSG_STORE_EPROM " Store EPROM" | ||||
| 	#define MSG_LOAD_EPROM " Load EPROM" | ||||
| 	#define MSG_RESTORE_FAILSAFE " Restore Failsafe" | ||||
| 	#define MSG_REFRESH "\004Refresh" | ||||
| 	#define MSG_WATCH " Watch   \003" | ||||
| 	#define MSG_PREPARE " Prepare \x7E" | ||||
| 	#define MSG_CONTROL_ARROW " Control \x7E" | ||||
| 	#define MSG_TUNE " Tune    \x7E" | ||||
| 	#define MSG_STOP_PRINT " Stop Print   \x7E" | ||||
| 	#define MSG_CARD_MENU " Card Menu    \x7E" | ||||
| 	#define MSG_NO_CARD " No Card" | ||||
| 	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Something is wrong in the MenuStructure." | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #if LANGUAGE_CHOICE == 3 | ||||
|  | ||||
| // LCD Menu Messages | ||||
|  | ||||
| 	#define WELCOME_MSG "RepRap Ready." | ||||
| 	#define MSG_SD_INSERTED "Card Ready" | ||||
| 	#define MSG_SD_REMOVED "Card Initiate" | ||||
| 	#define MSG_MAIN " Main \003" | ||||
| 	#define MSG_AUTOSTART " Autostart" | ||||
| 	#define MSG_DISABLE_STEPPERS " Disable Steppers" | ||||
| 	#define MSG_AUTO_HOME " Auto Home" | ||||
| 	#define MSG_SET_ORIGIN " Set Origin" | ||||
| 	#define MSG_PREHEAT " Preheat" | ||||
| 	#define MSG_COOLDOWN " Cooldown" | ||||
| 	#define MSG_EXTRUDE " Extrude" | ||||
|         #define MSG_MOVE_AXIS " Move Axis      \x7E" | ||||
| 	#define MSG_SPEED " Speed:" | ||||
| 	#define MSG_NOZZLE " \002Nozzle:" | ||||
| 	#define MSG_BED " \002Bed:" | ||||
| 	#define MSG_FAN_SPEED " Fan speed:" | ||||
| 	#define MSG_FLOW " Flow:" | ||||
| 	#define MSG_CONTROL " Control \003" | ||||
| 	#define MSG_MIN " \002 Min:" | ||||
| 	#define MSG_MAX " \002 Max:" | ||||
| 	#define MSG_FACTOR " \002 Fact:" | ||||
| 	#define MSG_AUTOTEMP " Autotemp:" | ||||
| 	#define MSG_ON "On " | ||||
| 	#define MSG_OFF "Off" | ||||
| 	#define MSG_PID_P " PID-P: " | ||||
| 	#define MSG_PID_I " PID-I: " | ||||
| 	#define MSG_PID_D " PID-D: " | ||||
| 	#define MSG_PID_C " PID-C: " | ||||
| 	#define MSG_ACC  " Acc:" | ||||
| 	#define MSG_VXY_JERK " Vxy-jerk: " | ||||
| 	#define MSG_VMAX " Vmax " | ||||
| 	#define MSG_X "x:" | ||||
| 	#define MSG_Y "y:" | ||||
| 	#define MSG_Z "z:" | ||||
| 	#define MSG_E "e:" | ||||
| 	#define MSG_VMIN " Vmin:" | ||||
| 	#define MSG_VTRAV_MIN " VTrav min:" | ||||
| 	#define MSG_AMAX " Amax " | ||||
| 	#define MSG_A_RETRACT " A-retract:" | ||||
| 	#define MSG_XSTEPS " Xsteps/mm:" | ||||
| 	#define MSG_YSTEPS " Ysteps/mm:" | ||||
| 	#define MSG_ZSTEPS " Zsteps/mm:" | ||||
| 	#define MSG_ESTEPS " Esteps/mm:" | ||||
| 	#define MSG_MAIN_WIDE " Main        \003" | ||||
| 	#define MSG_TEMPERATURE_WIDE " Temperature \x7E" | ||||
| 	#define MSG_MOTION_WIDE " Motion      \x7E" | ||||
| 	#define MSG_STORE_EPROM " Store EPROM" | ||||
| 	#define MSG_LOAD_EPROM " Load EPROM" | ||||
| 	#define MSG_RESTORE_FAILSAFE " Restore Failsafe" | ||||
| 	#define MSG_REFRESH "\004Refresh" | ||||
| 	#define MSG_WATCH " Watch   \003" | ||||
| 	#define MSG_PREPARE " Prepare \x7E" | ||||
| 	#define MSG_CONTROL_ARROW " Control \x7E" | ||||
| 	#define MSG_TUNE " Tune    \x7E" | ||||
| 	#define MSG_STOP_PRINT " Stop Print   \x7E" | ||||
| 	#define MSG_CARD_MENU " Card Menu    \x7E" | ||||
| 	#define MSG_NO_CARD " No Card" | ||||
| 	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Something is wrong in the MenuStructure." | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #if LANGUAGE_CHOICE == 4 | ||||
|  | ||||
| // LCD Menu Messages | ||||
|  | ||||
| 	#define WELCOME_MSG "RepRap Ready." | ||||
| 	#define MSG_SD_INSERTED "Card Ready" | ||||
| 	#define MSG_SD_REMOVED "Card Initiate" | ||||
| 	#define MSG_MAIN " Main \003" | ||||
| 	#define MSG_AUTOSTART " Autostart" | ||||
| 	#define MSG_DISABLE_STEPPERS " Disable Steppers" | ||||
| 	#define MSG_AUTO_HOME " Auto Home" | ||||
| 	#define MSG_SET_ORIGIN " Set Origin" | ||||
| 	#define MSG_PREHEAT " Preheat" | ||||
| 	#define MSG_COOLDOWN " Cooldown" | ||||
| 	#define MSG_EXTRUDE " Extrude" | ||||
|         #define MSG_MOVE_AXIS " Move Axis      \x7E" | ||||
| 	#define MSG_SPEED " Speed:" | ||||
| 	#define MSG_NOZZLE " \002Nozzle:" | ||||
| 	#define MSG_BED " \002Bed:" | ||||
| 	#define MSG_FAN_SPEED " Fan speed:" | ||||
| 	#define MSG_FLOW " Flow:" | ||||
| 	#define MSG_CONTROL " Control \003" | ||||
| 	#define MSG_MIN " \002 Min:" | ||||
| 	#define MSG_MAX " \002 Max:" | ||||
| 	#define MSG_FACTOR " \002 Fact:" | ||||
| 	#define MSG_AUTOTEMP " Autotemp:" | ||||
| 	#define MSG_ON "On " | ||||
| 	#define MSG_OFF "Off" | ||||
| 	#define MSG_PID_P " PID-P: " | ||||
| 	#define MSG_PID_I " PID-I: " | ||||
| 	#define MSG_PID_D " PID-D: " | ||||
| 	#define MSG_PID_C " PID-C: " | ||||
| 	#define MSG_ACC  " Acc:" | ||||
| 	#define MSG_VXY_JERK " Vxy-jerk: " | ||||
| 	#define MSG_VMAX " Vmax " | ||||
| 	#define MSG_X "x:" | ||||
| 	#define MSG_Y "y:" | ||||
| 	#define MSG_Z "z:" | ||||
| 	#define MSG_E "e:" | ||||
| 	#define MSG_VMIN " Vmin:" | ||||
| 	#define MSG_VTRAV_MIN " VTrav min:" | ||||
| 	#define MSG_AMAX " Amax " | ||||
| 	#define MSG_A_RETRACT " A-retract:" | ||||
| 	#define MSG_XSTEPS " Xsteps/mm:" | ||||
| 	#define MSG_YSTEPS " Ysteps/mm:" | ||||
| 	#define MSG_ZSTEPS " Zsteps/mm:" | ||||
| 	#define MSG_ESTEPS " Esteps/mm:" | ||||
| 	#define MSG_MAIN_WIDE " Main        \003" | ||||
| 	#define MSG_TEMPERATURE_WIDE " Temperature \x7E" | ||||
| 	#define MSG_MOTION_WIDE " Motion      \x7E" | ||||
| 	#define MSG_STORE_EPROM " Store EPROM" | ||||
| 	#define MSG_LOAD_EPROM " Load EPROM" | ||||
| 	#define MSG_RESTORE_FAILSAFE " Restore Failsafe" | ||||
| 	#define MSG_REFRESH "\004Refresh" | ||||
| 	#define MSG_WATCH " Watch   \003" | ||||
| 	#define MSG_PREPARE " Prepare \x7E" | ||||
| 	#define MSG_CONTROL_ARROW " Control \x7E" | ||||
| 	#define MSG_TUNE " Tune    \x7E" | ||||
| 	#define MSG_STOP_PRINT " Stop Print   \x7E" | ||||
| 	#define MSG_CARD_MENU " Card Menu    \x7E" | ||||
| 	#define MSG_NO_CARD " No Card" | ||||
| 	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Something is wrong in the MenuStructure." | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #if LANGUAGE_CHOICE == 5 | ||||
|  | ||||
| // LCD Menu Messages | ||||
|  | ||||
| 	#define WELCOME_MSG "RepRap Ready." | ||||
| 	#define MSG_SD_INSERTED "Card Ready" | ||||
| 	#define MSG_SD_REMOVED "Card Initiate" | ||||
| 	#define MSG_MAIN " Main \003" | ||||
| 	#define MSG_AUTOSTART " Autostart" | ||||
| 	#define MSG_DISABLE_STEPPERS " Disable Steppers" | ||||
| 	#define MSG_AUTO_HOME " Auto Home" | ||||
| 	#define MSG_SET_ORIGIN " Set Origin" | ||||
| 	#define MSG_PREHEAT " Preheat" | ||||
| 	#define MSG_COOLDOWN " Cooldown" | ||||
| 	#define MSG_EXTRUDE " Extrude" | ||||
|         #define MSG_MOVE_AXIS " Move Axis      \x7E" | ||||
| 	#define MSG_SPEED " Speed:" | ||||
| 	#define MSG_NOZZLE " \002Nozzle:" | ||||
| 	#define MSG_BED " \002Bed:" | ||||
| 	#define MSG_FAN_SPEED " Fan speed:" | ||||
| 	#define MSG_FLOW " Flow:" | ||||
| 	#define MSG_CONTROL " Control \003" | ||||
| 	#define MSG_MIN " \002 Min:" | ||||
| 	#define MSG_MAX " \002 Max:" | ||||
| 	#define MSG_FACTOR " \002 Fact:" | ||||
| 	#define MSG_AUTOTEMP " Autotemp:" | ||||
| 	#define MSG_ON "On " | ||||
| 	#define MSG_OFF "Off" | ||||
| 	#define MSG_PID_P " PID-P: " | ||||
| 	#define MSG_PID_I " PID-I: " | ||||
| 	#define MSG_PID_D " PID-D: " | ||||
| 	#define MSG_PID_C " PID-C: " | ||||
| 	#define MSG_ACC  " Acc:" | ||||
| 	#define MSG_VXY_JERK " Vxy-jerk: " | ||||
| 	#define MSG_VMAX " Vmax " | ||||
| 	#define MSG_X "x:" | ||||
| 	#define MSG_Y "y:" | ||||
| 	#define MSG_Z "z:" | ||||
| 	#define MSG_E "e:" | ||||
| 	#define MSG_VMIN " Vmin:" | ||||
| 	#define MSG_VTRAV_MIN " VTrav min:" | ||||
| 	#define MSG_AMAX " Amax " | ||||
| 	#define MSG_A_RETRACT " A-retract:" | ||||
| 	#define MSG_XSTEPS " Xsteps/mm:" | ||||
| 	#define MSG_YSTEPS " Ysteps/mm:" | ||||
| 	#define MSG_ZSTEPS " Zsteps/mm:" | ||||
| 	#define MSG_ESTEPS " Esteps/mm:" | ||||
| 	#define MSG_MAIN_WIDE " Main        \003" | ||||
| 	#define MSG_TEMPERATURE_WIDE " Temperature \x7E" | ||||
| 	#define MSG_MOTION_WIDE " Motion      \x7E" | ||||
| 	#define MSG_STORE_EPROM " Store EPROM" | ||||
| 	#define MSG_LOAD_EPROM " Load EPROM" | ||||
| 	#define MSG_RESTORE_FAILSAFE " Restore Failsafe" | ||||
| 	#define MSG_REFRESH "\004Refresh" | ||||
| 	#define MSG_WATCH " Watch   \003" | ||||
| 	#define MSG_PREPARE " Prepare \x7E" | ||||
| 	#define MSG_CONTROL_ARROW " Control \x7E" | ||||
| 	#define MSG_TUNE " Tune    \x7E" | ||||
| 	#define MSG_STOP_PRINT " Stop Print   \x7E" | ||||
| 	#define MSG_CARD_MENU " Card Menu    \x7E" | ||||
| 	#define MSG_NO_CARD " No Card" | ||||
| 	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Something is wrong in the MenuStructure." | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif // ifndef LANGUAGE_H | ||||
| @@ -122,6 +122,18 @@ void mc_arc(float *position, float *target, float *offset, uint8_t axis_0, uint8 | ||||
|     arc_target[axis_1] = center_axis1 + r_axis1; | ||||
|     arc_target[axis_linear] += linear_per_segment; | ||||
|     arc_target[E_AXIS] += extruder_per_segment; | ||||
|  | ||||
|     if (min_software_endstops) { | ||||
|       if (arc_target[X_AXIS] < X_HOME_POS) arc_target[X_AXIS] = X_HOME_POS; | ||||
|       if (arc_target[Y_AXIS] < Y_HOME_POS) arc_target[Y_AXIS] = Y_HOME_POS; | ||||
|       if (arc_target[Z_AXIS] < Z_HOME_POS) arc_target[Z_AXIS] = Z_HOME_POS; | ||||
|     } | ||||
|  | ||||
|     if (max_software_endstops) { | ||||
|       if (arc_target[X_AXIS] > X_MAX_LENGTH) arc_target[X_AXIS] = X_MAX_LENGTH; | ||||
|       if (arc_target[Y_AXIS] > Y_MAX_LENGTH) arc_target[Y_AXIS] = Y_MAX_LENGTH; | ||||
|       if (arc_target[Z_AXIS] > Z_MAX_LENGTH) arc_target[Z_AXIS] = Z_MAX_LENGTH; | ||||
|     } | ||||
|     plan_buffer_line(arc_target[X_AXIS], arc_target[Y_AXIS], arc_target[Z_AXIS], arc_target[E_AXIS], feed_rate, extruder); | ||||
|      | ||||
|   } | ||||
|   | ||||
							
								
								
									
										630
									
								
								Marlin/pins.h
									
									
									
									
									
								
							
							
						
						
									
										630
									
								
								Marlin/pins.h
									
									
									
									
									
								
							| @@ -45,225 +45,195 @@ | ||||
| #endif /* 99 */ | ||||
|  | ||||
| /**************************************************************************************** | ||||
| * Arduino pin assignment | ||||
| * | ||||
| *                  ATMega168 | ||||
| *                   +-\/-+ | ||||
| *             PC6  1|    |28  PC5 (AI 5 / D19) | ||||
| *       (D 0) PD0  2|    |27  PC4 (AI 4 / D18) | ||||
| *       (D 1) PD1  3|    |26  PC3 (AI 3 / D17) | ||||
| *       (D 2) PD2  4|    |25  PC2 (AI 2 / D16) | ||||
| *  PWM+ (D 3) PD3  5|    |24  PC1 (AI 1 / D15) | ||||
| *       (D 4) PD4  6|    |23  PC0 (AI 0 / D14) | ||||
| *             VCC  7|    |22  GND | ||||
| *             GND  8|    |21  AREF | ||||
| *             PB6  9|    |20  AVCC | ||||
| *             PB7 10|    |19  PB5 (D 13) | ||||
| *  PWM+ (D 5) PD5 11|    |18  PB4 (D 12) | ||||
| *  PWM+ (D 6) PD6 12|    |17  PB3 (D 11) PWM | ||||
| *       (D 7) PD7 13|    |16  PB2 (D 10) PWM | ||||
| *       (D 8) PB0 14|    |15  PB1 (D 9)  PWM | ||||
| *                   +----+ | ||||
| ****************************************************************************************/ | ||||
| #if MOTHERBOARD == 0 | ||||
| #define KNOWN_BOARD 1 | ||||
|  | ||||
| #ifndef __AVR_ATmega168__ | ||||
| #error Oops!  Make sure you have 'Arduino Diecimila' selected from the boards menu. | ||||
| #endif | ||||
|  | ||||
| #define X_STEP_PIN          2 | ||||
| #define X_DIR_PIN           3 | ||||
| #define X_ENABLE_PIN       -1 | ||||
| #define X_MIN_PIN           4 | ||||
| #define X_MAX_PIN           9 | ||||
|  | ||||
| #define Y_STEP_PIN         10 | ||||
| #define Y_DIR_PIN           7 | ||||
| #define Y_ENABLE_PIN       -1 | ||||
| #define Y_MIN_PIN           8 | ||||
| #define Y_MAX_PIN          13 | ||||
|  | ||||
| #define Z_STEP_PIN         19 | ||||
| #define Z_DIR_PIN          18 | ||||
| #define Z_ENABLE_PIN        5 | ||||
| #define Z_MIN_PIN          17 | ||||
| #define Z_MAX_PIN          16 | ||||
|  | ||||
| #define E0_STEP_PIN         11 | ||||
| #define E0_DIR_PIN          12 | ||||
| #define E0_ENABLE_PIN       -1 | ||||
|  | ||||
| #define SDPOWER          -1 | ||||
| #define SDSS          -1 | ||||
| #define LED_PIN            -1 | ||||
| #define FAN_PIN            -1 | ||||
| #define PS_ON_PIN          15 | ||||
| #define KILL_PIN           -1 | ||||
|  | ||||
| #define HEATER_0_PIN        6 | ||||
| #define HEATER_1_PIN        -1 | ||||
| #define HEATER_2_PIN        -1 | ||||
| #define TEMP_0_PIN          0    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! | ||||
| #define TEMP_1_PIN          -1   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! | ||||
| #define TEMP_2_PIN          -1   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! | ||||
| #define HEATER_BED_PIN      -1 | ||||
| #define TEMP_BED_PIN        -1 | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
| /**************************************************************************************** | ||||
| * Sanguino/RepRap Motherboard with direct-drive extruders | ||||
| * | ||||
| *                        ATMega644P | ||||
| * | ||||
| *                        +---\/---+ | ||||
| *            (D 0) PB0  1|        |40  PA0 (AI 0 / D31) | ||||
| *            (D 1) PB1  2|        |39  PA1 (AI 1 / D30) | ||||
| *       INT2 (D 2) PB2  3|        |38  PA2 (AI 2 / D29) | ||||
| *        PWM (D 3) PB3  4|        |37  PA3 (AI 3 / D28) | ||||
| *        PWM (D 4) PB4  5|        |36  PA4 (AI 4 / D27) | ||||
| *       MOSI (D 5) PB5  6|        |35  PA5 (AI 5 / D26) | ||||
| *       MISO (D 6) PB6  7|        |34  PA6 (AI 6 / D25) | ||||
| *        SCK (D 7) PB7  8|        |33  PA7 (AI 7 / D24) | ||||
| *                  RST  9|        |32  AREF | ||||
| *                  VCC 10|        |31  GND  | ||||
| *                  GND 11|        |30  AVCC | ||||
| *                XTAL2 12|        |29  PC7 (D 23) | ||||
| *                XTAL1 13|        |28  PC6 (D 22) | ||||
| *       RX0 (D 8)  PD0 14|        |27  PC5 (D 21) TDI | ||||
| *       TX0 (D 9)  PD1 15|        |26  PC4 (D 20) TDO | ||||
| *  INT0 RX1 (D 10) PD2 16|        |25  PC3 (D 19) TMS | ||||
| *  INT1 TX1 (D 11) PD3 17|        |24  PC2 (D 18) TCK | ||||
| *       PWM (D 12) PD4 18|        |23  PC1 (D 17) SDA | ||||
| *       PWM (D 13) PD5 19|        |22  PC0 (D 16) SCL | ||||
| *       PWM (D 14) PD6 20|        |21  PD7 (D 15) PWM | ||||
| *                        +--------+ | ||||
| * Gen7 v1.1, v1.2, v1.3, v1.4 pin assignment | ||||
| * | ||||
| ****************************************************************************************/ | ||||
| #if MOTHERBOARD == 1 | ||||
| #define KNOWN_BOARD 1 | ||||
|  | ||||
| #ifndef __AVR_ATmega644P__ | ||||
| #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. | ||||
|  | ||||
| #if MOTHERBOARD == 13 | ||||
| #define MOTHERBOARD 11 | ||||
| #define GEN7_VERSION 14 // v1.4 | ||||
| #endif | ||||
|  | ||||
| #define X_STEP_PIN         15 | ||||
| #define X_DIR_PIN          18 | ||||
| #define X_ENABLE_PIN       19 | ||||
| #define X_MIN_PIN          20 | ||||
| #define X_MAX_PIN          21 | ||||
|  | ||||
| #define Y_STEP_PIN         23 | ||||
| #define Y_DIR_PIN          22 | ||||
| #define Y_ENABLE_PIN       19 | ||||
| #define Y_MIN_PIN          25 | ||||
| #define Y_MAX_PIN          26 | ||||
|  | ||||
| #define Z_STEP_PIN         29 | ||||
| #define Z_DIR_PIN          30 | ||||
| #define Z_ENABLE_PIN       31 | ||||
| #define Z_MIN_PIN           2 | ||||
| #define Z_MAX_PIN           1 | ||||
|  | ||||
| #define E0_STEP_PIN         12 | ||||
| #define E0_DIR_PIN          16 | ||||
| #define E0_ENABLE_PIN        3 | ||||
|  | ||||
| #define SDPOWER          -1 | ||||
| #define SDSS          -1 | ||||
| #define LED_PIN             0 | ||||
| #define FAN_PIN            -1 | ||||
| #define PS_ON_PIN          -1 | ||||
| #define KILL_PIN           -1 | ||||
|  | ||||
| #define HEATER_0_PIN       14 | ||||
| #define HEATER_1_PIN       -1 | ||||
| #define HEATER_2_PIN       -1 | ||||
| #define TEMP_0_PIN          4 //D27   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! | ||||
| #define TEMP_1_PIN         -1  | ||||
| #define TEMP_2_PIN         -1  | ||||
| #define HEATER_BED_PIN     -1 | ||||
| #define TEMP_BED_PIN       -1 | ||||
| /*  Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31)  */ | ||||
| #if MOTHERBOARD == 12 | ||||
| #define MOTHERBOARD 11 | ||||
| #define GEN7_VERSION 13 // v1.3 | ||||
| #endif | ||||
|  | ||||
| #if MOTHERBOARD == 11 | ||||
| #define KNOWN_BOARD | ||||
|  | ||||
| #if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) | ||||
| #error Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu. | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /**************************************************************************************** | ||||
| * RepRap Motherboard  ****---NOOOOOO RS485/EXTRUDER CONTROLLER!!!!!!!!!!!!!!!!!---******* | ||||
| * | ||||
| ****************************************************************************************/ | ||||
| #if MOTHERBOARD == 2 | ||||
| #define KNOWN_BOARD 1 | ||||
|  | ||||
| #ifndef __AVR_ATmega644P__ | ||||
| #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. | ||||
| #ifndef GEN7_VERSION | ||||
| #define GEN7_VERSION 12 // v1.x | ||||
| #endif | ||||
|  | ||||
| #define X_STEP_PIN      15 | ||||
| #define X_DIR_PIN       18 | ||||
| #define X_ENABLE_PIN    19 | ||||
| #define X_MIN_PIN       20 | ||||
| #define X_MAX_PIN       21 | ||||
| //x axis pins | ||||
| #define X_STEP_PIN 19 | ||||
| #define X_DIR_PIN 18 | ||||
| #define X_ENABLE_PIN 24 | ||||
| #define X_MIN_PIN 7 | ||||
| #define X_MAX_PIN -1 | ||||
|  | ||||
| #define Y_STEP_PIN      23 | ||||
| #define Y_DIR_PIN       22 | ||||
| #define Y_ENABLE_PIN    24 | ||||
| #define Y_MIN_PIN       25 | ||||
| #define Y_MAX_PIN       26 | ||||
| //y axis pins | ||||
| #define Y_STEP_PIN 23 | ||||
| #define Y_DIR_PIN 22 | ||||
| #define Y_ENABLE_PIN 24 | ||||
| #define Y_MIN_PIN 5 | ||||
| #define Y_MAX_PIN -1 | ||||
|  | ||||
| #define Z_STEP_PINN     27 | ||||
| #define Z_DIR_PINN      28 | ||||
| #define Z_ENABLE_PIN    29 | ||||
| #define Z_MIN_PIN       30 | ||||
| #define Z_MAX_PIN       31 | ||||
| //z axis pins | ||||
| #define Z_STEP_PIN 26 | ||||
| #define Z_DIR_PIN 25 | ||||
| #define Z_ENABLE_PIN 24 | ||||
| #define Z_MIN_PIN 1 | ||||
| #define Z_MAX_PIN 0 | ||||
|  | ||||
| #define E0_STEP_PIN      17 | ||||
| #define E0_DIR_PIN       16 | ||||
| #define E0_ENABLE_PIN    -1 | ||||
| //extruder pins | ||||
| #define E0_STEP_PIN 28 | ||||
| #define E0_DIR_PIN 27 | ||||
| #define E0_ENABLE_PIN 24 | ||||
|  | ||||
| #define SDPOWER          -1 | ||||
| #define SDSS          4 | ||||
| #define LED_PIN          0 | ||||
| #define TEMP_0_PIN 1 | ||||
| #define TEMP_1_PIN -1 | ||||
| #define TEMP_2_PIN -1 | ||||
| #define TEMP_BED_PIN 2 | ||||
|  | ||||
| #define SD_CARD_WRITE    2 | ||||
| #define SD_CARD_DETECT   3 | ||||
| #define SD_CARD_SELECT   4 | ||||
| #define HEATER_0_PIN 4 | ||||
| #define HEATER_1_PIN -1 | ||||
| #define HEATER_2_PIN -1 | ||||
| #define HEATER_BED_PIN 3 | ||||
|  | ||||
|  | ||||
| #define SDPOWER -1 | ||||
| #define SDSS -1 // SCL pin of I2C header | ||||
| #define LED_PIN -1 | ||||
|  | ||||
| #if (GEN7_VERSION >= 13) | ||||
| // Gen7 v1.3 removed the fan pin | ||||
| #define FAN_PIN -1 | ||||
| #else | ||||
| #define FAN_PIN 31 | ||||
| #endif | ||||
| #define PS_ON_PIN 15 | ||||
|  | ||||
| #if (GEN7_VERSION < 14) | ||||
| // Gen 1.3 and earlier supplied thermistor power via PS_ON | ||||
| // Need to ignore the bad thermistor readings on those units | ||||
| #define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE | ||||
| #endif | ||||
|  | ||||
| //our pin for debugging. | ||||
| #define DEBUG_PIN 0 | ||||
|  | ||||
| //our RS485 pins | ||||
| #define TX_ENABLE_PIN	12 | ||||
| #define RX_ENABLE_PIN	13 | ||||
| #define TX_ENABLE_PIN 12 | ||||
| #define RX_ENABLE_PIN 13 | ||||
|  | ||||
| //pin for controlling the PSU. | ||||
| #define PS_ON_PIN       14 | ||||
| #endif | ||||
|  | ||||
| #define FAN_PIN         -1 | ||||
| #define KILL_PIN        -1 | ||||
| /******************************************************************************* | ||||
| ********* | ||||
| * Gen7 Alfons3  pin assignment | ||||
| * | ||||
| ******************************************************************************** | ||||
| ********/ | ||||
| /* These Pins are assigned for the modified GEN7 Board from Alfons3 Please review the pins and adjust it for your needs*/ | ||||
|  | ||||
| #define HEATER_0_PIN    -1 | ||||
| #define HEATER_1_PIN    -1 | ||||
| #define HEATER_2_PIN    -1 | ||||
| #define TEMP_0_PIN      -1    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! | ||||
| #define TEMP_1_PIN      -1     | ||||
| #define TEMP_2_PIN      -1     | ||||
| #define HEATER_BED_PIN  -1 | ||||
| #define TEMP_BED_PIN    -1 | ||||
| #if MOTHERBOARD == 10 | ||||
| #define KNOWN_BOARD | ||||
|  | ||||
| #if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) | ||||
|     #error Oops!  Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu. | ||||
|  | ||||
| #endif | ||||
|  | ||||
| //x axis pins | ||||
|     #define X_STEP_PIN      21                  //different from stanard GEN7 | ||||
|     #define X_DIR_PIN       20				    //different from stanard GEN7 | ||||
|     #define X_ENABLE_PIN    24 | ||||
|     #define X_MIN_PIN       0 | ||||
|     #define X_MAX_PIN       -1 | ||||
|  | ||||
|     //y axis pins | ||||
|     #define Y_STEP_PIN      23 | ||||
|     #define Y_DIR_PIN       22 | ||||
|     #define Y_ENABLE_PIN    24 | ||||
|     #define Y_MIN_PIN       1 | ||||
|     #define Y_MAX_PIN       -1 | ||||
|  | ||||
|     //z axis pins | ||||
|     #define Z_STEP_PIN      26 | ||||
|     #define Z_DIR_PIN       25 | ||||
|     #define Z_ENABLE_PIN    24 | ||||
|     #define Z_MIN_PIN       2 | ||||
|     #define Z_MAX_PIN       -1 | ||||
|  | ||||
|     //extruder pins | ||||
|     #define E0_STEP_PIN      28 | ||||
|     #define E0_DIR_PIN       27 | ||||
|     #define E0_ENABLE_PIN    24 | ||||
|      | ||||
|     #define TEMP_0_PIN      2 | ||||
|     #define TEMP_1_PIN      -1 | ||||
|     #define TEMP_2_PIN      -1 | ||||
|     #define TEMP_BED_PIN        1   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) | ||||
|       | ||||
|     #define HEATER_0_PIN    4 | ||||
|     #define HEATER_1_PIN    -1    | ||||
|     #define HEATER_2_PIN    -1 | ||||
|     #define HEATER_BED_PIN      3  // (bed) | ||||
|  | ||||
|     #define SDPOWER         -1 | ||||
|     #define SDSS            31                  // SCL pin of I2C header || CS Pin for SD Card support | ||||
|     #define LED_PIN         -1 | ||||
|  | ||||
|     #define FAN_PIN         -1 | ||||
|     #define PS_ON_PIN       19 | ||||
|     //our pin for debugging. | ||||
|  | ||||
|     #define DEBUG_PIN        -1 | ||||
|  | ||||
|     //our RS485 pins | ||||
|     //#define TX_ENABLE_PIN       12 | ||||
|     //#define RX_ENABLE_PIN       13 | ||||
|      | ||||
|     #define BEEPER -1	 | ||||
| 	#define SDCARDDETECT -1 		 | ||||
|     #define SUICIDE_PIN -1						//has to be defined; otherwise Power_off doesn't work | ||||
| 	 | ||||
| 	//Pins for 4bit LCD Support  | ||||
|     #define LCD_PINS_RS 18  | ||||
|     #define LCD_PINS_ENABLE 17 | ||||
|     #define LCD_PINS_D4 16 | ||||
|     #define LCD_PINS_D5 15  | ||||
|     #define LCD_PINS_D6 13 | ||||
|     #define LCD_PINS_D7 14 | ||||
|      | ||||
|      //buttons are directly attached | ||||
|     #define BTN_EN1 11 | ||||
|     #define BTN_EN2 10 | ||||
|     #define BTN_ENC 12  //the click | ||||
|      | ||||
|     #define BLEN_C 2 | ||||
|     #define BLEN_B 1 | ||||
|     #define BLEN_A 0 | ||||
|  | ||||
|     #define encrot0 0 | ||||
|     #define encrot1 2 | ||||
|     #define encrot2 3 | ||||
|     #define encrot3 1 | ||||
| #endif | ||||
|  | ||||
| /**************************************************************************************** | ||||
| * Arduino Mega pin assignment | ||||
| * | ||||
| ****************************************************************************************/ | ||||
| #if MOTHERBOARD == 33 | ||||
| #define MOTHERBOARD 3 | ||||
| #define RAMPS_V_1_3 | ||||
| #endif | ||||
| #if MOTHERBOARD == 3 | ||||
| #if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 | ||||
| #define KNOWN_BOARD 1 | ||||
|  | ||||
| //////////////////FIX THIS////////////// | ||||
| @@ -277,7 +247,7 @@ | ||||
| // #define RAMPS_V_1_3 | ||||
| // #define RAMPS_V_1_0 | ||||
|  | ||||
| #ifdef RAMPS_V_1_3 | ||||
| #ifdef MOTHERBOARD == 33 || MOTHERBOARD == 34 | ||||
|  | ||||
| #define X_STEP_PIN         54 | ||||
| #define X_DIR_PIN          55 | ||||
| @@ -295,7 +265,7 @@ | ||||
| #define Z_DIR_PIN          48 | ||||
| #define Z_ENABLE_PIN       62 | ||||
| #define Z_MIN_PIN          18 | ||||
| #define Z_MAX_PIN          19   //19 | ||||
| #define Z_MAX_PIN          19 | ||||
|  | ||||
| #define E0_STEP_PIN        26 | ||||
| #define E0_DIR_PIN         28 | ||||
| @@ -308,19 +278,96 @@ | ||||
| #define SDPOWER            -1 | ||||
| #define SDSS               53 | ||||
| #define LED_PIN            13 | ||||
| #define FAN_PIN            4 | ||||
|  | ||||
| #if MOTHERBOARD == 33 | ||||
| #define FAN_PIN            9 // (Sprinter config) | ||||
| #else | ||||
| #define FAN_PIN            4 // IO pin. Buffer needed | ||||
| #endif | ||||
| #define PS_ON_PIN          12 | ||||
| #define KILL_PIN           -1 | ||||
|  | ||||
| #define HEATER_0_PIN       10   // EXTRUDER 1 | ||||
| #define HEATER_1_PIN       9    // EXTRUDER 2 | ||||
| #define HEATER_2_PIN       -1   // EXTRUDER 2 | ||||
| #if MOTHERBOARD == 33 | ||||
| #define HEATER_1_PIN       -1 | ||||
| #else | ||||
| #define HEATER_1_PIN       9    // EXTRUDER 2 (FAN On Sprinter) | ||||
| #endif | ||||
| #define HEATER_2_PIN       -1    | ||||
| #define TEMP_0_PIN         13   // ANALOG NUMBERING | ||||
| #define TEMP_1_PIN         15   // ANALOG NUMBERING | ||||
| #define TEMP_2_PIN         -1   // ANALOG NUMBERING | ||||
| #define HEATER_BED_PIN     8    // BED | ||||
| #define TEMP_BED_PIN       14   // ANALOG NUMBERING | ||||
|  | ||||
| #ifdef ULTRA_LCD | ||||
|  | ||||
|   #ifdef NEWPANEL | ||||
|   //arduino pin which triggers an piezzo beeper | ||||
|     #define BEEPER 33			// Beeper on AUX-4 | ||||
|  | ||||
|     #define LCD_PINS_RS 16  | ||||
|     #define LCD_PINS_ENABLE 17 | ||||
|     #define LCD_PINS_D4 23 | ||||
|     #define LCD_PINS_D5 25  | ||||
|     #define LCD_PINS_D6 27 | ||||
|     #define LCD_PINS_D7 29 | ||||
|      | ||||
|     //buttons are directly attached using AUX-2 | ||||
|     #define BTN_EN1 44 | ||||
|     #define BTN_EN2 42 | ||||
|     #define BTN_ENC 64  //the click | ||||
|      | ||||
|     #define BLEN_C 2 | ||||
|     #define BLEN_B 1 | ||||
|     #define BLEN_A 0 | ||||
|      | ||||
|     #define SDCARDDETECT 31		// Ramps does not use this port | ||||
|      | ||||
|       //encoder rotation values | ||||
|     #define encrot0 0 | ||||
|     #define encrot1 2 | ||||
|     #define encrot2 3 | ||||
|     #define encrot3 1 | ||||
|  | ||||
|   #else //old style panel with shift register | ||||
|     //arduino pin witch triggers an piezzo beeper | ||||
|     #define BEEPER 33		No Beeper added | ||||
|  | ||||
|     //buttons are attached to a shift register | ||||
| 	// Not wired this yet | ||||
|     //#define SHIFT_CLK 38 | ||||
|     //#define SHIFT_LD 42 | ||||
|     //#define SHIFT_OUT 40 | ||||
|     //#define SHIFT_EN 17 | ||||
|      | ||||
|     #define LCD_PINS_RS 16  | ||||
|     #define LCD_PINS_ENABLE 17 | ||||
|     #define LCD_PINS_D4 23 | ||||
|     #define LCD_PINS_D5 25  | ||||
|     #define LCD_PINS_D6 27 | ||||
|     #define LCD_PINS_D7 29 | ||||
|      | ||||
|     //encoder rotation values | ||||
|     #define encrot0 0 | ||||
|     #define encrot1 2 | ||||
|     #define encrot2 3 | ||||
|     #define encrot3 1 | ||||
|  | ||||
|      | ||||
|     //bits in the shift register that carry the buttons for: | ||||
|     // left up center down right red | ||||
|     #define BL_LE 7 | ||||
|     #define BL_UP 6 | ||||
|     #define BL_MI 5 | ||||
|     #define BL_DW 4 | ||||
|     #define BL_RI 3 | ||||
|     #define BL_ST 2 | ||||
|  | ||||
|     #define BLEN_B 1 | ||||
|     #define BLEN_A 0 | ||||
|   #endif  | ||||
| #endif //ULTRA_LCD | ||||
|  | ||||
| #else // RAMPS_V_1_1 or RAMPS_V_1_2 as default | ||||
|  | ||||
| @@ -440,11 +487,13 @@ | ||||
| * Gen6 pin assignment | ||||
| * | ||||
| ****************************************************************************************/ | ||||
| #if MOTHERBOARD == 5 | ||||
| #if MOTHERBOARD == 5 || MOTHERBOARD == 51 | ||||
| #define KNOWN_BOARD 1 | ||||
|  | ||||
| #ifndef __AVR_ATmega644P__ | ||||
|     #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. | ||||
| #ifndef __AVR_ATmega1284P__ | ||||
| #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| //x axis pins | ||||
| @@ -474,13 +523,19 @@ | ||||
|     #define E0_ENABLE_PIN    3    //Added @ EJE Electronics 20100715 | ||||
|     #define TEMP_0_PIN      5     //changed @ rkoeppl 20110410 | ||||
|     #define TEMP_1_PIN      -1    //changed @ rkoeppl 20110410 | ||||
|  | ||||
|  | ||||
|     #define TEMP_2_PIN      -1    //changed @ rkoeppl 20110410 | ||||
|     #define HEATER_0_PIN    14    //changed @ rkoeppl 20110410 | ||||
|     #define HEATER_1_PIN    -1 | ||||
|     #define HEATER_2_PIN    -1 | ||||
|     #if MOTHERBOARD == 5 | ||||
|     #define HEATER_BED_PIN  -1    //changed @ rkoeppl 20110410 | ||||
|     #define TEMP_BED_PIN    -1    //changed @ rkoeppl 20110410 | ||||
|      | ||||
|     #else | ||||
|     #define HEATER_BED_PIN   1    //changed @ rkoeppl 20110410 | ||||
|     #define TEMP_BED_PIN     0    //changed @ rkoeppl 20110410 | ||||
|     #endif | ||||
|     #define SDPOWER          -1 | ||||
|     #define SDSS          17 | ||||
|     #define LED_PIN         -1    //changed @ rkoeppl 20110410 | ||||
| @@ -502,14 +557,17 @@ | ||||
| * | ||||
| ****************************************************************************************/ | ||||
| #if MOTHERBOARD == 62 | ||||
| #undef MOTHERBOARD | ||||
| #define MOTHERBOARD 6 | ||||
| #define SANGUINOLOLU_V_1_2  | ||||
| #endif | ||||
| #if MOTHERBOARD == 6 | ||||
| #define KNOWN_BOARD 1 | ||||
| #ifndef __AVR_ATmega644P__ | ||||
| #ifndef __AVR_ATmega1284P__ | ||||
| #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #define X_STEP_PIN         15 | ||||
| #define X_DIR_PIN          21 | ||||
| @@ -567,180 +625,6 @@ | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /**************************************************************************************** | ||||
| * Gen7 v1.1, v1.2, v1.3 pin assignment | ||||
| * | ||||
| ****************************************************************************************/ | ||||
|  | ||||
| #if MOTHERBOARD == 79 | ||||
| #define MOTHERBOARD 78 | ||||
| #define GEN7_V_1_3 | ||||
| #endif | ||||
|  | ||||
| #if MOTHERBOARD == 78 | ||||
| #define KNOWN_BOARD | ||||
|  | ||||
| #if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) | ||||
| #error Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu. | ||||
|  | ||||
| #endif | ||||
|  | ||||
| //x axis pins | ||||
| #define X_STEP_PIN 19 | ||||
| #define X_DIR_PIN 18 | ||||
| #define X_ENABLE_PIN 24 | ||||
| #define X_MIN_PIN 7 | ||||
| #define X_MAX_PIN -1 | ||||
|  | ||||
| //y axis pins | ||||
| #define Y_STEP_PIN 23 | ||||
| #define Y_DIR_PIN 22 | ||||
| #define Y_ENABLE_PIN 24 | ||||
| #define Y_MIN_PIN 5 | ||||
| #define Y_MAX_PIN -1 | ||||
|  | ||||
| //z axis pins | ||||
| #define Z_STEP_PIN 26 | ||||
| #define Z_DIR_PIN 25 | ||||
| #define Z_ENABLE_PIN 24 | ||||
| #define Z_MIN_PIN 1 | ||||
| #define Z_MAX_PIN -1 | ||||
|  | ||||
| //extruder pins | ||||
| #define E0_STEP_PIN 28 | ||||
| #define E0_DIR_PIN 27 | ||||
| #define E0_ENABLE_PIN 24 | ||||
|  | ||||
| #define TEMP_0_PIN 1 | ||||
| #define TEMP_1_PIN -1 | ||||
| #define TEMP_2_PIN -1 | ||||
| #define TEMP_BED_PIN 2 | ||||
|  | ||||
| #define HEATER_0_PIN 4 | ||||
| #define HEATER_1_PIN -1 | ||||
| #define HEATER_2_PIN -1 | ||||
| #define HEATER_BED_PIN 3 | ||||
|  | ||||
|  | ||||
| #define SDPOWER -1 | ||||
| #define SDSS -1 // SCL pin of I2C header | ||||
| #define LED_PIN -1 | ||||
|  | ||||
| #ifdef GEN7_V_1_3 | ||||
| // Gen7 v1.3 removed the fan pin | ||||
| #define FAN_PIN -1 | ||||
| #else | ||||
| #define FAN_PIN 31 | ||||
| #endif | ||||
| #define PS_ON_PIN 15 | ||||
|  | ||||
| //our pin for debugging. | ||||
| #define DEBUG_PIN 0 | ||||
|  | ||||
| //our RS485 pins | ||||
| #define TX_ENABLE_PIN 12 | ||||
| #define RX_ENABLE_PIN 13 | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************* | ||||
| ********* | ||||
| * Gen7 Alfons3  pin assignment | ||||
| * | ||||
| ******************************************************************************** | ||||
| ********/ | ||||
| /* These Pins are assigned for the modified GEN7 Board from Alfons3 Please review the pins and adjust it for your needs*/ | ||||
|  | ||||
| #if MOTHERBOARD == 77 | ||||
| #define KNOWN_BOARD | ||||
|  | ||||
| #if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) | ||||
|     #error Oops!  Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu. | ||||
|  | ||||
| #endif | ||||
|  | ||||
| //x axis pins | ||||
|     #define X_STEP_PIN      21                  //different from stanard GEN7 | ||||
|     #define X_DIR_PIN       20				    //different from stanard GEN7 | ||||
|     #define X_ENABLE_PIN    24 | ||||
|     #define X_MIN_PIN       0 | ||||
|     #define X_MAX_PIN       -1 | ||||
|  | ||||
|     //y axis pins | ||||
|     #define Y_STEP_PIN      23 | ||||
|     #define Y_DIR_PIN       22 | ||||
|     #define Y_ENABLE_PIN    24 | ||||
|     #define Y_MIN_PIN       1 | ||||
|     #define Y_MAX_PIN       -1 | ||||
|  | ||||
|     //z axis pins | ||||
|     #define Z_STEP_PIN      26 | ||||
|     #define Z_DIR_PIN       25 | ||||
|     #define Z_ENABLE_PIN    24 | ||||
|     #define Z_MIN_PIN       2 | ||||
|     #define Z_MAX_PIN       -1 | ||||
|  | ||||
|     //extruder pins | ||||
|     #define E0_STEP_PIN      28 | ||||
|     #define E0_DIR_PIN       27 | ||||
|     #define E0_ENABLE_PIN    24 | ||||
|      | ||||
|     #define TEMP_0_PIN      2 | ||||
|     #define TEMP_1_PIN      -1 | ||||
|     #define TEMP_2_PIN      -1 | ||||
|     #define TEMP_BED_PIN        1   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) | ||||
|       | ||||
|     #define HEATER_0_PIN    4 | ||||
|     #define HEATER_1_PIN    -1    | ||||
|     #define HEATER_2_PIN    -1 | ||||
|     #define HEATER_BED_PIN      3  // (bed) | ||||
|     | ||||
|     | ||||
|  | ||||
|      | ||||
|     #define SDPOWER         -1 | ||||
|     #define SDSS            31                  // SCL pin of I2C header || CS Pin for SD Card support | ||||
|     #define LED_PIN         -1 | ||||
|  | ||||
|     #define FAN_PIN         -1 | ||||
|     #define PS_ON_PIN       19 | ||||
|     //our pin for debugging. | ||||
|  | ||||
|     #define DEBUG_PIN        -1 | ||||
|  | ||||
|     //our RS485 pins | ||||
|     //#define TX_ENABLE_PIN       12 | ||||
|     //#define RX_ENABLE_PIN       13 | ||||
|      | ||||
|     #define BEEPER -1	 | ||||
| 	#define SDCARDDETECT -1 		 | ||||
|     #define SUICIDE_PIN -1						//has to be defined; otherwise Power_off doesn't work | ||||
| 	 | ||||
| 	//Pins for 4bit LCD Support  | ||||
|     #define LCD_PINS_RS 18  | ||||
|     #define LCD_PINS_ENABLE 17 | ||||
|     #define LCD_PINS_D4 16 | ||||
|     #define LCD_PINS_D5 15  | ||||
|     #define LCD_PINS_D6 13 | ||||
|     #define LCD_PINS_D7 14 | ||||
|      | ||||
|      //buttons are directly attached | ||||
|     #define BTN_EN1 11 | ||||
|     #define BTN_EN2 10 | ||||
|     #define BTN_ENC 12  //the click | ||||
|      | ||||
|     #define BLEN_C 2 | ||||
|     #define BLEN_B 1 | ||||
|     #define BLEN_A 0 | ||||
|  | ||||
|     | ||||
|     #define encrot0 0 | ||||
|     #define encrot1 2 | ||||
|     #define encrot2 3 | ||||
|     #define encrot3 1 | ||||
|     | ||||
|      | ||||
| #endif | ||||
|  | ||||
| #if MOTHERBOARD == 7 | ||||
| #define KNOWN_BOARD | ||||
| @@ -1003,8 +887,10 @@ | ||||
| #define MOTHERBOARD 6 | ||||
| #define KNOWN_BOARD 1 | ||||
| #ifndef __AVR_ATmega644P__ | ||||
| #ifndef __AVR_ATmega1284P__ | ||||
| #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #define X_STEP_PIN         15 | ||||
| #define X_DIR_PIN          18 | ||||
|   | ||||
| @@ -81,6 +81,8 @@ long position[4];   //rescaled from extern when axis_steps_per_unit are changed | ||||
| static float previous_speed[4]; // Speed of previous path line segment | ||||
| static float previous_nominal_speed; // Nominal speed of previous path line segment | ||||
|  | ||||
| extern volatile int extrudemultiply; // Sets extrude multiply factor (in percent) | ||||
|  | ||||
| #ifdef AUTOTEMP | ||||
|     float autotemp_max=250; | ||||
|     float autotemp_min=210; | ||||
| @@ -439,7 +441,7 @@ float junction_deviation = 0.1; | ||||
| // Add a new linear movement to the buffer. steps_x, _y and _z is the absolute position in  | ||||
| // mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration | ||||
| // calculation the caller must also provide the physical length of the line in millimeters. | ||||
| void plan_buffer_line(const float &x, const float &y, const float &z, const float &e,  float feed_rate, const uint8_t &extruder) | ||||
| void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, uint8_t &extruder) | ||||
| { | ||||
|   // Calculate the buffer head after we push this byte | ||||
|   int next_buffer_head = next_block_index(block_buffer_head); | ||||
| @@ -451,7 +453,7 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa | ||||
|     manage_inactivity(1);  | ||||
|     LCD_STATUS; | ||||
|   } | ||||
|  | ||||
|    | ||||
|   // The target position of the tool in absolute steps | ||||
|   // Calculate target position in absolute steps | ||||
|   //this should be done after the wait, because otherwise a M92 code within the gcode disrupts this calculation somehow | ||||
| @@ -488,6 +490,8 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa | ||||
|   block->steps_y = labs(target[Y_AXIS]-position[Y_AXIS]); | ||||
|   block->steps_z = labs(target[Z_AXIS]-position[Z_AXIS]); | ||||
|   block->steps_e = labs(target[E_AXIS]-position[E_AXIS]); | ||||
|   block->steps_e *= extrudemultiply; | ||||
|   block->steps_e /= 100; | ||||
|   block->step_event_count = max(block->steps_x, max(block->steps_y, max(block->steps_z, block->steps_e))); | ||||
|  | ||||
|   // Bail if this is a zero-length block | ||||
| @@ -512,11 +516,18 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa | ||||
|   // Enable all | ||||
|   if(block->steps_e != 0) { enable_e0();enable_e1();enable_e2(); } | ||||
|  | ||||
|  | ||||
|   // slow down when de buffer starts to empty, rather than wait at the corner for a buffer refill | ||||
|   int moves_queued=(block_buffer_head-block_buffer_tail + BLOCK_BUFFER_SIZE) & (BLOCK_BUFFER_SIZE - 1); | ||||
|   #ifdef SLOWDOWN | ||||
|     if(moves_queued < (BLOCK_BUFFER_SIZE * 0.5) && moves_queued > 1) feed_rate = feed_rate*moves_queued / (BLOCK_BUFFER_SIZE * 0.5);  | ||||
|   #endif | ||||
|  | ||||
|   float delta_mm[4]; | ||||
|   delta_mm[X_AXIS] = (target[X_AXIS]-position[X_AXIS])/axis_steps_per_unit[X_AXIS]; | ||||
|   delta_mm[Y_AXIS] = (target[Y_AXIS]-position[Y_AXIS])/axis_steps_per_unit[Y_AXIS]; | ||||
|   delta_mm[Z_AXIS] = (target[Z_AXIS]-position[Z_AXIS])/axis_steps_per_unit[Z_AXIS]; | ||||
|   delta_mm[E_AXIS] = (target[E_AXIS]-position[E_AXIS])/axis_steps_per_unit[E_AXIS]; | ||||
|   delta_mm[E_AXIS] = ((target[E_AXIS]-position[E_AXIS])/axis_steps_per_unit[E_AXIS])*extrudemultiply/100.0; | ||||
|   if ( block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0 ) { | ||||
|     block->millimeters = abs(delta_mm[E_AXIS]); | ||||
|   } else { | ||||
| @@ -537,12 +548,6 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa | ||||
|     	if(feed_rate<minimumfeedrate) feed_rate=minimumfeedrate; | ||||
|   }  | ||||
|  | ||||
|   // slow down when de buffer starts to empty, rather than wait at the corner for a buffer refill | ||||
|   int moves_queued=(block_buffer_head-block_buffer_tail + BLOCK_BUFFER_SIZE) & (BLOCK_BUFFER_SIZE - 1); | ||||
| #ifdef SLOWDOWN | ||||
|   if(moves_queued < (BLOCK_BUFFER_SIZE * 0.5) && moves_queued > 1) feed_rate = feed_rate*moves_queued / (BLOCK_BUFFER_SIZE * 0.5);  | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|   //  segment time im micro seconds | ||||
|   long segment_time = lround(1000000.0/inverse_second); | ||||
|   | ||||
| @@ -67,7 +67,7 @@ void plan_init(); | ||||
|  | ||||
| // Add a new linear movement to the buffer. x, y and z is the signed, absolute target position in  | ||||
| // millimaters. Feed rate specifies the speed of the motion. | ||||
| void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder); | ||||
| void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, uint8_t &extruder); | ||||
|  | ||||
| // Set position. Used for G92 instructions. | ||||
| void plan_set_position(const float &x, const float &y, const float &z, const float &e); | ||||
|   | ||||
| @@ -432,7 +432,7 @@ ISR(TIMER1_COMPA_vect) | ||||
|       } | ||||
|       else { // +direction | ||||
|         NORM_E_DIR(); | ||||
|         count_direction[E_AXIS]=-1; | ||||
|         count_direction[E_AXIS]=1; | ||||
|       } | ||||
|     #endif //!ADVANCE | ||||
|      | ||||
|   | ||||
| @@ -312,7 +312,7 @@ int temp2analog(int celsius, uint8_t e) { | ||||
|  | ||||
|     return (1023 * OVERSAMPLENR) - raw; | ||||
|   } | ||||
|   return celsius * (1024.0 / (5.0 * 100.0) ) * OVERSAMPLENR; | ||||
|   return ((celsius-TEMP_SENSOR_AD595_OFFSET)/TEMP_SENSOR_AD595_GAIN) * (1024.0 / (5.0 * 100.0) ) * OVERSAMPLENR; | ||||
| } | ||||
|  | ||||
| // Takes bed temperature value as input and returns corresponding raw value.  | ||||
| @@ -342,7 +342,7 @@ int temp2analogBed(int celsius) { | ||||
|  | ||||
|     return (1023 * OVERSAMPLENR) - raw; | ||||
| #elif defined BED_USES_AD595 | ||||
|     return lround(celsius * (1024.0 * OVERSAMPLENR/ (5.0 * 100.0) ) ); | ||||
|     return lround(((celsius-TEMP_SENSOR_AD595_OFFSET)/TEMP_SENSOR_AD595_GAIN) * (1024.0 * OVERSAMPLENR/ (5.0 * 100.0) ) ); | ||||
| #else | ||||
|     #warning No heater-type defined for the bed. | ||||
|     return 0; | ||||
| @@ -390,7 +390,7 @@ float analog2temp(int raw, uint8_t e) { | ||||
|  | ||||
|     return celsius; | ||||
|   } | ||||
|   return raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR; | ||||
|   return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET; | ||||
| } | ||||
|  | ||||
| // Derived from RepRap FiveD extruder::getTemperature() | ||||
| @@ -421,7 +421,7 @@ float analog2tempBed(int raw) { | ||||
|     return celsius; | ||||
|      | ||||
|   #elif defined BED_USES_AD595 | ||||
|     return raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR; | ||||
|     return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET; | ||||
|   #else | ||||
|     #warning No heater-type defined for the bed. | ||||
|   #endif | ||||
| @@ -851,18 +851,18 @@ ISR(TIMER0_COMPB_vect) | ||||
|     for(unsigned char e = 0; e < EXTRUDERS; e++) { | ||||
|        if(current_raw[e] >= maxttemp[e]) { | ||||
|           target_raw[e] = 0; | ||||
|           #if (PS_ON != -1) | ||||
|           max_temp_error(e); | ||||
|           #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE | ||||
|           { | ||||
|             max_temp_error(e); | ||||
|             kill();; | ||||
|           } | ||||
|           #endif | ||||
|        } | ||||
|        if(current_raw[e] <= minttemp[e]) { | ||||
|           target_raw[e] = 0; | ||||
|           #if (PS_ON != -1) | ||||
|           min_temp_error(e); | ||||
|           #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE | ||||
|           { | ||||
|             min_temp_error(e); | ||||
|             kill(); | ||||
|           } | ||||
|           #endif | ||||
|   | ||||
| @@ -9,18 +9,11 @@ | ||||
|   void beep(); | ||||
|   void buttons_check(); | ||||
|  | ||||
|  | ||||
|   #define LCD_UPDATE_INTERVAL 100 | ||||
|   #define STATUSTIMEOUT 15000 | ||||
|  | ||||
|  | ||||
|    | ||||
|   extern LiquidCrystal lcd; | ||||
|  | ||||
|  | ||||
|    | ||||
|   #ifdef NEWPANEL | ||||
|  | ||||
|      | ||||
|     #define EN_C (1<<BLEN_C) | ||||
|     #define EN_B (1<<BLEN_B) | ||||
|     #define EN_A (1<<BLEN_A) | ||||
| @@ -28,11 +21,13 @@ | ||||
|     #define CLICKED (buttons&EN_C) | ||||
|     #define BLOCK {blocking=millis()+blocktime;} | ||||
|     #if (SDCARDDETECT > -1) | ||||
|     { | ||||
|       #define CARDINSERTED (READ(SDCARDDETECT)==0) | ||||
|     } | ||||
|     #endif | ||||
|      | ||||
|       #ifdef SDCARDDETECTINVERTED  | ||||
|         #define CARDINSERTED (READ(SDCARDDETECT)!=0) | ||||
|       #else | ||||
|         #define CARDINSERTED (READ(SDCARDDETECT)==0) | ||||
|       #endif | ||||
|     #endif  //SDCARDTETECTINVERTED | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     //atomatic, do not change | ||||
|   | ||||
| @@ -9,6 +9,8 @@ | ||||
| extern volatile int feedmultiply; | ||||
| extern volatile bool feedmultiplychanged; | ||||
|  | ||||
| extern volatile int extrudemultiply; | ||||
|  | ||||
| extern long position[4];    | ||||
| extern CardReader card; | ||||
|  | ||||
| @@ -122,7 +124,7 @@ void lcd_init() | ||||
|   lcd.createChar(3,uplevel); | ||||
|   lcd.createChar(4,refresh); | ||||
|   lcd.createChar(5,folder); | ||||
|   LCD_MESSAGEPGM("UltiMarlin ready."); | ||||
|   LCD_MESSAGEPGM(WELCOME_MSG); | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -372,7 +374,7 @@ void MainMenu::showStatus() | ||||
|   if((currentz!=oldzpos)||force_lcd_update) | ||||
|   { | ||||
|     lcd.setCursor(10,1); | ||||
|     lcdprintPGM("Z:");lcd.print(ftostr32(current_position[2])); | ||||
|     lcdprintPGM("Z:");lcd.print(ftostr52(current_position[2])); | ||||
|     oldzpos=currentz; | ||||
|   } | ||||
|   static int oldfeedmultiply=0; | ||||
| @@ -411,7 +413,6 @@ void MainMenu::showStatus() | ||||
|      lcd.setCursor(7,2); | ||||
|     lcd.print(itostr3((int)percent)); | ||||
|     lcdprintPGM("%SD"); | ||||
|      | ||||
|   } | ||||
|    | ||||
| #else //smaller LCDS---------------------------------- | ||||
| @@ -457,7 +458,7 @@ void MainMenu::showStatus() | ||||
|   force_lcd_update=false; | ||||
| } | ||||
|  | ||||
| enum {ItemP_exit, ItemP_autostart,ItemP_disstep,ItemP_home, ItemP_origin, ItemP_preheat, ItemP_cooldown,/*ItemP_extrude,*/ItemP_move}; | ||||
| enum {ItemP_exit, ItemP_autostart,ItemP_disstep,ItemP_home, ItemP_origin, ItemP_preheat_pla, ItemP_preheat_abs, ItemP_cooldown,/*ItemP_extrude,*/ItemP_move}; | ||||
|  | ||||
| //any action must not contain a ',' character anywhere, or this breaks: | ||||
| #define MENUITEM(repaint_action, click_action) \ | ||||
| @@ -476,31 +477,34 @@ void MainMenu::showPrepare() | ||||
|   switch(i) | ||||
|   { | ||||
|     case ItemP_exit: | ||||
|       MENUITEM(  lcdprintPGM(" Main \003")  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_MAIN)  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemP_autostart: | ||||
|       MENUITEM(  lcdprintPGM(" Autostart")  ,  BLOCK;card.lastnr=0;card.setroot();card.checkautostart(true);beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_AUTOSTART)  ,  BLOCK;card.lastnr=0;card.setroot();card.checkautostart(true);beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemP_disstep: | ||||
|       MENUITEM(  lcdprintPGM(" Disable Steppers")  ,  BLOCK;enquecommand("M84");beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_DISABLE_STEPPERS)  ,  BLOCK;enquecommand("M84");beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemP_home: | ||||
|       MENUITEM(  lcdprintPGM(" Auto Home")  ,  BLOCK;enquecommand("G28 X0 Y0 Z0");beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_AUTO_HOME)  ,  BLOCK;enquecommand("G28");beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemP_origin: | ||||
|       MENUITEM(  lcdprintPGM(" Set Origin")  ,  BLOCK;enquecommand("G92 X0 Y0 Z0");beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_SET_ORIGIN)  ,  BLOCK;enquecommand("G92 X0 Y0 Z0");beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemP_preheat: | ||||
|       MENUITEM(  lcdprintPGM(" Preheat")  ,  BLOCK;setTargetHotend0(227);setTargetBed(105);beepshort(); ) ; | ||||
|     case ItemP_preheat_pla: | ||||
|       MENUITEM(  lcdprintPGM(MSG_PREHEAT_PLA)  ,  BLOCK;setTargetHotend0(PLA_PREHEAT_HOTEND_TEMP);setTargetBed(PLA_PREHEAT_HPB_TEMP);analogWrite(FAN_PIN, PLA_PREHEAT_FAN_SPEED); beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemP_preheat_abs: | ||||
|       MENUITEM(  lcdprintPGM(MSG_PREHEAT_ABS)  ,  BLOCK;setTargetHotend0(ABS_PREHEAT_HOTEND_TEMP);setTargetBed(ABS_PREHEAT_HPB_TEMP); analogWrite(FAN_PIN, ABS_PREHEAT_FAN_SPEED); beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemP_cooldown: | ||||
|       MENUITEM(  lcdprintPGM(" Cooldown")  ,  BLOCK;setTargetHotend0(0);setTargetBed(0);beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_COOLDOWN)  ,  BLOCK;setTargetHotend0(0);setTargetBed(0);beepshort(); ) ; | ||||
|       break; | ||||
| //    case ItemP_extrude: | ||||
|   //    MENUITEM(  lcdprintPGM(" Extrude")  ,  BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E50");beepshort(); ) ; | ||||
|     //  break; | ||||
|     case ItemP_move: | ||||
|       MENUITEM(  lcdprintPGM(" Move Axis      \x7E") , BLOCK;status=Sub_PrepareMove;beepshort(); ); | ||||
|       MENUITEM(  lcdprintPGM(MSG_MOVE_AXIS) , BLOCK;status=Sub_PrepareMove;beepshort(); ); | ||||
|       break; | ||||
|         default:    | ||||
|       break; | ||||
| @@ -533,7 +537,7 @@ void MainMenu::showAxisMove() | ||||
|                   if(force_lcd_update) | ||||
|                   { | ||||
|                     lcd.setCursor(0,line);lcdprintPGM(" X:"); | ||||
|                     lcd.setCursor(13,line);lcd.print(ftostr32(current_position[X_AXIS])); | ||||
|                     lcd.setCursor(11,line);lcd.print(ftostr52(current_position[X_AXIS])); | ||||
|                   } | ||||
|        | ||||
|                   if((activeline!=line) ) | ||||
| @@ -569,7 +573,7 @@ void MainMenu::showAxisMove() | ||||
| 			oldencoderpos=encoderpos; | ||||
|                         encoderpos=0; | ||||
| 		    } | ||||
|                     lcd.setCursor(13,line);lcd.print(ftostr32(current_position[X_AXIS])); | ||||
|                     lcd.setCursor(11,line);lcd.print(ftostr52(current_position[X_AXIS])); | ||||
|                   } | ||||
|           } | ||||
|           break; | ||||
| @@ -578,7 +582,7 @@ void MainMenu::showAxisMove() | ||||
|                   if(force_lcd_update) | ||||
|                   { | ||||
|                     lcd.setCursor(0,line);lcdprintPGM(" Y:"); | ||||
|                     lcd.setCursor(13,line);lcd.print(ftostr32(current_position[Y_AXIS])); | ||||
|                     lcd.setCursor(11,line);lcd.print(ftostr52(current_position[Y_AXIS])); | ||||
|                   } | ||||
|        | ||||
|                   if((activeline!=line) ) | ||||
| @@ -614,7 +618,7 @@ void MainMenu::showAxisMove() | ||||
| 			oldencoderpos=encoderpos; | ||||
|                         encoderpos=0; | ||||
| 		    } | ||||
|                     lcd.setCursor(13,line);lcd.print(ftostr32(current_position[Y_AXIS])); | ||||
|                     lcd.setCursor(11,line);lcd.print(ftostr52(current_position[Y_AXIS])); | ||||
|                   } | ||||
|           } | ||||
|           break; | ||||
| @@ -623,7 +627,7 @@ void MainMenu::showAxisMove() | ||||
|                   if(force_lcd_update) | ||||
|                   { | ||||
|                     lcd.setCursor(0,line);lcdprintPGM(" Z:"); | ||||
|                     lcd.setCursor(13,line);lcd.print(ftostr32(current_position[Z_AXIS])); | ||||
|                     lcd.setCursor(11,line);lcd.print(ftostr52(current_position[Z_AXIS])); | ||||
|                   } | ||||
|        | ||||
|                   if((activeline!=line) ) | ||||
| @@ -659,12 +663,12 @@ void MainMenu::showAxisMove() | ||||
| 			oldencoderpos=encoderpos; | ||||
|                         encoderpos=0; | ||||
| 		    } | ||||
|                     lcd.setCursor(13,line);lcd.print(ftostr32(current_position[Z_AXIS])); | ||||
|                     lcd.setCursor(11,line);lcd.print(ftostr52(current_position[Z_AXIS])); | ||||
|                   } | ||||
|           } | ||||
|           break; | ||||
|           case ItemAM_E: | ||||
|           MENUITEM(  lcdprintPGM(" Extrude")  ,  BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E5");beepshort(); ) ; | ||||
|           MENUITEM(  lcdprintPGM(MSG_EXTRUDE)  ,  BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E5");beepshort(); ) ; | ||||
|           break; | ||||
|           default: | ||||
|           break; | ||||
| @@ -690,20 +694,20 @@ void MainMenu::showTune() | ||||
|   switch(i) | ||||
|   { | ||||
|   case ItemT_exit: | ||||
|       MENUITEM(  lcdprintPGM(" Main \003")  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_MAIN)  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       break; | ||||
|   case ItemT_speed: | ||||
|     { | ||||
|       if(force_lcd_update) | ||||
|       { | ||||
|         lcd.setCursor(0,line);lcdprintPGM(" Speed:"); | ||||
|         lcd.setCursor(0,line);lcdprintPGM(MSG_SPEED); | ||||
|         lcd.setCursor(13,line);lcd.print(ftostr3(feedmultiply)); | ||||
|       } | ||||
|        | ||||
|       if((activeline!=line) ) | ||||
|         break; | ||||
|        | ||||
|       if(CLICKED) //nalogWrite(FAN_PIN,  fanpwm); | ||||
|       if(CLICKED) //AnalogWrite(FAN_PIN,  fanpwm); | ||||
|       { | ||||
|         linechanging=!linechanging; | ||||
|         if(linechanging) | ||||
| @@ -731,7 +735,7 @@ void MainMenu::showTune() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" \002Nozzle:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_NOZZLE); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(intround(degTargetHotend0()))); | ||||
|         } | ||||
|          | ||||
| @@ -765,7 +769,7 @@ void MainMenu::showTune() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" \002Bed:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_BED); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(intround(degTargetBed()))); | ||||
|         } | ||||
|          | ||||
| @@ -836,7 +840,7 @@ void MainMenu::showTune() | ||||
|          { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Flow:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_FLOW); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[3])); | ||||
|         } | ||||
|          | ||||
| @@ -917,13 +921,13 @@ void MainMenu::showControlTemp() | ||||
|   switch(i) | ||||
|   { | ||||
|     case ItemCT_exit: | ||||
|       MENUITEM(  lcdprintPGM(" Control \003")  ,  BLOCK;status=Main_Control;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_CONTROL)  ,  BLOCK;status=Main_Control;beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemCT_nozzle: | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" \002Nozzle:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_NOZZLE); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(intround(degTargetHotend0()))); | ||||
|         } | ||||
|          | ||||
| @@ -958,7 +962,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" \002 Min:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_MIN); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(autotemp_min)); | ||||
|         } | ||||
|          | ||||
| @@ -992,7 +996,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" \002 Max:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_MAX); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(autotemp_max)); | ||||
|         } | ||||
|          | ||||
| @@ -1026,7 +1030,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" \002 Fact:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_FACTOR); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr32(autotemp_factor)); | ||||
|         } | ||||
|          | ||||
| @@ -1060,12 +1064,12 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Autotemp:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_AUTOTEMP); | ||||
|           lcd.setCursor(13,line); | ||||
|           if(autotemp_enabled) | ||||
|             lcdprintPGM("On"); | ||||
|             lcdprintPGM(MSG_ON); | ||||
|           else | ||||
|             lcdprintPGM("Off"); | ||||
|             lcdprintPGM(MSG_OFF); | ||||
|         } | ||||
|          | ||||
|         if((activeline!=line) ) | ||||
| @@ -1076,9 +1080,9 @@ void MainMenu::showControlTemp() | ||||
|           autotemp_enabled=!autotemp_enabled; | ||||
|           lcd.setCursor(13,line); | ||||
|           if(autotemp_enabled) | ||||
|             lcdprintPGM("On "); | ||||
|             lcdprintPGM(MSG_ON); | ||||
|           else | ||||
|             lcdprintPGM("Off"); | ||||
|             lcdprintPGM(MSG_OFF); | ||||
|           BLOCK; | ||||
|         } | ||||
|          | ||||
| @@ -1089,7 +1093,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" \002Bed:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_BED); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(intround(degTargetBed()))); | ||||
|         } | ||||
|          | ||||
| @@ -1123,7 +1127,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Fan speed:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_FAN_SPEED); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(fanpwm)); | ||||
|         } | ||||
|          | ||||
| @@ -1193,7 +1197,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" PID-I: "); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_PID_I); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr51(Ki/PID_dT)); | ||||
|         } | ||||
|          | ||||
| @@ -1228,7 +1232,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" PID-D: "); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_PID_D); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(Kd*PID_dT)); | ||||
|         } | ||||
|          | ||||
| @@ -1265,7 +1269,7 @@ void MainMenu::showControlTemp() | ||||
|       { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" PID-C: "); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_PID_C); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr3(Kc)); | ||||
|         } | ||||
|          | ||||
| @@ -1331,13 +1335,13 @@ void MainMenu::showControlMotion() | ||||
|   switch(i) | ||||
|   { | ||||
|     case ItemCM_exit: | ||||
|       MENUITEM(  lcdprintPGM(" Control \003")  ,  BLOCK;status=Main_Control;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_CONTROL)  ,  BLOCK;status=Main_Control;beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemCM_acc: | ||||
|     { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Acc:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_ACC); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr3(acceleration/100));lcdprintPGM("00"); | ||||
|         } | ||||
|          | ||||
| @@ -1371,7 +1375,7 @@ void MainMenu::showControlMotion() | ||||
|       { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Vxy-jerk: "); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_VXY_JERK); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr3(max_xy_jerk)); | ||||
|         } | ||||
|          | ||||
| @@ -1410,11 +1414,11 @@ void MainMenu::showControlMotion() | ||||
|       { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Vmax "); | ||||
|           if(i==ItemCM_vmaxx)lcdprintPGM("x:"); | ||||
|           if(i==ItemCM_vmaxy)lcdprintPGM("y:"); | ||||
|           if(i==ItemCM_vmaxz)lcdprintPGM("z:"); | ||||
|           if(i==ItemCM_vmaxe)lcdprintPGM("e:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_VMAX); | ||||
|           if(i==ItemCM_vmaxx)lcdprintPGM(MSG_X); | ||||
|           if(i==ItemCM_vmaxy)lcdprintPGM(MSG_Y); | ||||
|           if(i==ItemCM_vmaxz)lcdprintPGM(MSG_Z); | ||||
|           if(i==ItemCM_vmaxe)lcdprintPGM(MSG_E); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr3(max_feedrate[i-ItemCM_vmaxx])); | ||||
|         } | ||||
|          | ||||
| @@ -1450,7 +1454,7 @@ void MainMenu::showControlMotion() | ||||
|     { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Vmin:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_VMIN); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr3(minimumfeedrate)); | ||||
|         } | ||||
|          | ||||
| @@ -1485,7 +1489,7 @@ void MainMenu::showControlMotion() | ||||
|     { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" VTrav min:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_VTRAV_MIN); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr3(mintravelfeedrate)); | ||||
|         } | ||||
|          | ||||
| @@ -1525,10 +1529,10 @@ void MainMenu::showControlMotion() | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Amax "); | ||||
|           if(i==ItemCM_amaxx)lcdprintPGM("x:"); | ||||
|           if(i==ItemCM_amaxy)lcdprintPGM("y:"); | ||||
|           if(i==ItemCM_amaxz)lcdprintPGM("z:"); | ||||
|           if(i==ItemCM_amaxe)lcdprintPGM("e:"); | ||||
|           if(i==ItemCM_amaxx)lcdprintPGM(MSG_X); | ||||
|           if(i==ItemCM_amaxy)lcdprintPGM(MSG_Y); | ||||
|           if(i==ItemCM_amaxz)lcdprintPGM(MSG_Z); | ||||
|           if(i==ItemCM_amaxe)lcdprintPGM(MSG_E); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr3(max_acceleration_units_per_sq_second[i-ItemCM_amaxx]/100));lcdprintPGM("00"); | ||||
|         } | ||||
|          | ||||
| @@ -1562,7 +1566,7 @@ void MainMenu::showControlMotion() | ||||
|     { | ||||
|         if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" A-retract:"); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_A_RETRACT); | ||||
|           lcd.setCursor(13,line);lcd.print(ftostr3(retract_acceleration/100));lcdprintPGM("00"); | ||||
|         } | ||||
|          | ||||
| @@ -1597,8 +1601,8 @@ void MainMenu::showControlMotion() | ||||
|          { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" X steps/mm:"); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[0])); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_XSTEPS); | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[0])); | ||||
|         } | ||||
|          | ||||
|         if((activeline!=line) ) | ||||
| @@ -1609,16 +1613,15 @@ void MainMenu::showControlMotion() | ||||
|           linechanging=!linechanging; | ||||
|           if(linechanging) | ||||
|           { | ||||
|               encoderpos=(int)axis_steps_per_unit[0]; | ||||
|               encoderpos=(int)(axis_steps_per_unit[0]*100.0); | ||||
|           } | ||||
|           else | ||||
|           { | ||||
|             float factor=float(encoderpos)/float(axis_steps_per_unit[0]); | ||||
|             float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[0]); | ||||
|             position[X_AXIS]=lround(position[X_AXIS]*factor); | ||||
|             //current_position[3]*=factor; | ||||
|             axis_steps_per_unit[X_AXIS]= encoderpos; | ||||
|             axis_steps_per_unit[X_AXIS]= encoderpos/100.0; | ||||
|             encoderpos=activeline*lcdslow; | ||||
|                | ||||
|           } | ||||
|           BLOCK; | ||||
|           beepshort(); | ||||
| @@ -1626,8 +1629,8 @@ void MainMenu::showControlMotion() | ||||
|         if(linechanging) | ||||
|         { | ||||
|           if(encoderpos<5) encoderpos=5; | ||||
|           if(encoderpos>9999) encoderpos=9999; | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(encoderpos)); | ||||
|           if(encoderpos>99999) encoderpos=99999; | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0)); | ||||
|         } | ||||
|          | ||||
|       }break; | ||||
| @@ -1635,8 +1638,8 @@ void MainMenu::showControlMotion() | ||||
|          { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Y steps/mm:"); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[1])); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_YSTEPS); | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[1])); | ||||
|         } | ||||
|          | ||||
|         if((activeline!=line) ) | ||||
| @@ -1647,14 +1650,14 @@ void MainMenu::showControlMotion() | ||||
|           linechanging=!linechanging; | ||||
|           if(linechanging) | ||||
|           { | ||||
|               encoderpos=(int)axis_steps_per_unit[1]; | ||||
|               encoderpos=(int)(axis_steps_per_unit[1]*100.0); | ||||
|           } | ||||
|           else | ||||
|           { | ||||
|             float factor=float(encoderpos)/float(axis_steps_per_unit[1]); | ||||
|             float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[1]); | ||||
|             position[Y_AXIS]=lround(position[Y_AXIS]*factor); | ||||
|             //current_position[3]*=factor; | ||||
|             axis_steps_per_unit[Y_AXIS]= encoderpos; | ||||
|             axis_steps_per_unit[Y_AXIS]= encoderpos/100.0; | ||||
|             encoderpos=activeline*lcdslow; | ||||
|                | ||||
|           } | ||||
| @@ -1665,7 +1668,7 @@ void MainMenu::showControlMotion() | ||||
|         { | ||||
|           if(encoderpos<5) encoderpos=5; | ||||
|           if(encoderpos>9999) encoderpos=9999; | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(encoderpos)); | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0)); | ||||
|         } | ||||
|          | ||||
|       }break; | ||||
| @@ -1673,8 +1676,8 @@ void MainMenu::showControlMotion() | ||||
|          { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" Z steps/mm:"); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[2])); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_ZSTEPS); | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[2])); | ||||
|         } | ||||
|          | ||||
|         if((activeline!=line) ) | ||||
| @@ -1685,14 +1688,14 @@ void MainMenu::showControlMotion() | ||||
|           linechanging=!linechanging; | ||||
|           if(linechanging) | ||||
|           { | ||||
|               encoderpos=(int)axis_steps_per_unit[2]; | ||||
|               encoderpos=(int)(axis_steps_per_unit[2]*100.0); | ||||
|           } | ||||
|           else | ||||
|           { | ||||
|             float factor=float(encoderpos)/float(axis_steps_per_unit[2]); | ||||
|             float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[2]); | ||||
|             position[Z_AXIS]=lround(position[Z_AXIS]*factor); | ||||
|             //current_position[3]*=factor; | ||||
|             axis_steps_per_unit[Z_AXIS]= encoderpos; | ||||
|             axis_steps_per_unit[Z_AXIS]= encoderpos/100.0; | ||||
|             encoderpos=activeline*lcdslow; | ||||
|                | ||||
|           } | ||||
| @@ -1703,7 +1706,7 @@ void MainMenu::showControlMotion() | ||||
|         { | ||||
|           if(encoderpos<5) encoderpos=5; | ||||
|           if(encoderpos>9999) encoderpos=9999; | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(encoderpos)); | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0)); | ||||
|         } | ||||
|          | ||||
|       }break; | ||||
| @@ -1712,8 +1715,8 @@ void MainMenu::showControlMotion() | ||||
|          { | ||||
|       if(force_lcd_update) | ||||
|         { | ||||
|           lcd.setCursor(0,line);lcdprintPGM(" E steps/mm:"); | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[3])); | ||||
|           lcd.setCursor(0,line);lcdprintPGM(MSG_ESTEPS); | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[3])); | ||||
|         } | ||||
|          | ||||
|         if((activeline!=line) ) | ||||
| @@ -1724,14 +1727,14 @@ void MainMenu::showControlMotion() | ||||
|           linechanging=!linechanging; | ||||
|           if(linechanging) | ||||
|           { | ||||
|               encoderpos=(int)axis_steps_per_unit[3]; | ||||
|               encoderpos=(int)(axis_steps_per_unit[3]*100.0); | ||||
|           } | ||||
|           else | ||||
|           { | ||||
|             float factor=float(encoderpos)/float(axis_steps_per_unit[3]); | ||||
|             float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[3]); | ||||
|             position[E_AXIS]=lround(position[E_AXIS]*factor); | ||||
|             //current_position[3]*=factor; | ||||
|             axis_steps_per_unit[E_AXIS]= encoderpos; | ||||
|             axis_steps_per_unit[E_AXIS]= encoderpos/100.0; | ||||
|             encoderpos=activeline*lcdslow; | ||||
|                | ||||
|           } | ||||
| @@ -1742,7 +1745,7 @@ void MainMenu::showControlMotion() | ||||
|         { | ||||
|           if(encoderpos<5) encoderpos=5; | ||||
|           if(encoderpos>9999) encoderpos=9999; | ||||
|           lcd.setCursor(13,line);lcd.print(itostr4(encoderpos)); | ||||
|           lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0)); | ||||
|         } | ||||
|          | ||||
|       }break;  | ||||
| @@ -1769,19 +1772,19 @@ void MainMenu::showControl() | ||||
|   switch(i) | ||||
|   { | ||||
|     case ItemC_exit: | ||||
|       MENUITEM(  lcdprintPGM(" Main        \003")  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_MAIN_WIDE)  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemC_temp: | ||||
|       MENUITEM(  lcdprintPGM(" Temperature \x7E")  ,  BLOCK;status=Sub_TempControl;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_TEMPERATURE_WIDE)  ,  BLOCK;status=Sub_TempControl;beepshort(); ) ; | ||||
|       break; | ||||
|    case ItemC_move: | ||||
|       MENUITEM(  lcdprintPGM(" Motion      \x7E")  ,  BLOCK;status=Sub_MotionControl;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_MOTION_WIDE)  ,  BLOCK;status=Sub_MotionControl;beepshort(); ) ; | ||||
|       break; | ||||
|     case ItemC_store: | ||||
|     { | ||||
|       if(force_lcd_update) | ||||
|       { | ||||
|         lcd.setCursor(0,line);lcdprintPGM(" Store EPROM"); | ||||
|         lcd.setCursor(0,line);lcdprintPGM(MSG_STORE_EPROM); | ||||
|       } | ||||
|       if((activeline==line) && CLICKED) | ||||
|       { | ||||
| @@ -1795,7 +1798,7 @@ void MainMenu::showControl() | ||||
|     { | ||||
|       if(force_lcd_update) | ||||
|       { | ||||
|         lcd.setCursor(0,line);lcdprintPGM(" Load EPROM"); | ||||
|         lcd.setCursor(0,line);lcdprintPGM(MSG_LOAD_EPROM); | ||||
|       } | ||||
|       if((activeline==line) && CLICKED) | ||||
|       { | ||||
| @@ -1809,7 +1812,7 @@ void MainMenu::showControl() | ||||
|     { | ||||
|       if(force_lcd_update) | ||||
|       { | ||||
|         lcd.setCursor(0,line);lcdprintPGM(" Restore Failsafe"); | ||||
|         lcd.setCursor(0,line);lcdprintPGM(MSG_RESTORE_FAILSAFE); | ||||
|       } | ||||
|       if((activeline==line) && CLICKED) | ||||
|       { | ||||
| @@ -1856,7 +1859,7 @@ void MainMenu::showSD() | ||||
|   switch(i) | ||||
|   { | ||||
|     case 0: | ||||
|       MENUITEM(  lcdprintPGM(" Main \003")  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       MENUITEM(  lcdprintPGM(MSG_MAIN)  ,  BLOCK;status=Main_Menu;beepshort(); ) ; | ||||
|       break; | ||||
| //     case 1: | ||||
| //       { | ||||
| @@ -1887,7 +1890,7 @@ void MainMenu::showSD() | ||||
| //         } | ||||
| //       }break; | ||||
|     case 1: | ||||
|       MENUITEM(  lcd.print(" ");card.getWorkDirName();if(card.filename[0]=='/') lcdprintPGM("\004Refresh");else {lcd.print("\005");lcd.print(card.filename);lcd.print("/..");}  ,  BLOCK;card.updir();enforceupdate=true;lineoffset=0;beepshort(); ) ; | ||||
|       MENUITEM(  lcd.print(" ");card.getWorkDirName();if(card.filename[0]=='/') lcdprintPGM(MSG_REFRESH);else {lcd.print("\005");lcd.print(card.filename);lcd.print("/..");}  ,  BLOCK;card.updir();enforceupdate=true;lineoffset=0;beepshort(); ) ; | ||||
|        | ||||
|       break; | ||||
|     default: | ||||
| @@ -1974,14 +1977,14 @@ void MainMenu::showMainMenu() | ||||
|     switch(line) | ||||
|     {  | ||||
|       case ItemM_watch: | ||||
|         MENUITEM(  lcdprintPGM(" Watch   \003")  ,  BLOCK;status=Main_Status;beepshort(); ) ; | ||||
|         MENUITEM(  lcdprintPGM(MSG_WATCH)  ,  BLOCK;status=Main_Status;beepshort(); ) ; | ||||
|        break; | ||||
|       case ItemM_prepare: | ||||
|         MENUITEM(  if(!tune) lcdprintPGM(" Prepare \x7E");else  lcdprintPGM(" Tune    \x7E"); ,  BLOCK;status=Main_Prepare;beepshort(); ) ; | ||||
|         MENUITEM(  if(!tune) lcdprintPGM(MSG_PREPARE);else  lcdprintPGM(MSG_TUNE); ,  BLOCK;status=Main_Prepare;beepshort(); ) ; | ||||
|       break; | ||||
|         | ||||
|       case ItemM_control: | ||||
|         MENUITEM(  lcdprintPGM(" Control \x7E")  ,  BLOCK;status=Main_Control;beepshort(); ) ; | ||||
|         MENUITEM(  lcdprintPGM(MSG_CONTROL_ARROW)  ,  BLOCK;status=Main_Control;beepshort(); ) ; | ||||
|       break; | ||||
|       #ifdef SDSUPPORT | ||||
|       case ItemM_file:     | ||||
| @@ -1996,13 +1999,13 @@ void MainMenu::showMainMenu() | ||||
|           #endif | ||||
|           { | ||||
|             if(card.sdprinting) | ||||
|               lcdprintPGM(" Stop Print   \x7E"); | ||||
|               lcdprintPGM(MSG_STOP_PRINT); | ||||
|             else | ||||
|               lcdprintPGM(" Card Menu    \x7E"); | ||||
|               lcdprintPGM(MSG_CARD_MENU); | ||||
|           } | ||||
|           else | ||||
|           { | ||||
|            lcdprintPGM(" No Card");  | ||||
|            lcdprintPGM(MSG_NO_CARD);  | ||||
|           } | ||||
|         } | ||||
|         #ifdef CARDINSERTED | ||||
| @@ -2022,7 +2025,7 @@ void MainMenu::showMainMenu() | ||||
|       #endif | ||||
|       default:  | ||||
|         SERIAL_ERROR_START; | ||||
|         SERIAL_ERRORLNPGM("Something is wrong in the MenuStructure."); | ||||
|         SERIAL_ERRORLNPGM(MSG_SERIAL_ERROR_MENU_STRUCTURE); | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
| @@ -2043,12 +2046,12 @@ void MainMenu::update() | ||||
|       if(CARDINSERTED) | ||||
|       { | ||||
|         card.initsd(); | ||||
|         LCD_MESSAGEPGM("Card inserted"); | ||||
|         LCD_MESSAGEPGM(MSG_SD_INSERTED); | ||||
|       } | ||||
|       else | ||||
|       { | ||||
|         card.release(); | ||||
|         LCD_MESSAGEPGM("Card removed"); | ||||
|         LCD_MESSAGEPGM(MSG_SD_REMOVED); | ||||
|       } | ||||
|     } | ||||
|   #endif | ||||
| @@ -2223,6 +2226,21 @@ char *ftostr51(const float &x) | ||||
|   return conv; | ||||
| } | ||||
|  | ||||
| //  convert float to string with +123.45 format | ||||
| char *ftostr52(const float &x) | ||||
| { | ||||
|   int xx=x*100; | ||||
|   conv[0]=(xx>=0)?'+':'-'; | ||||
|   xx=abs(xx); | ||||
|   conv[1]=(xx/10000)%10+'0'; | ||||
|   conv[2]=(xx/1000)%10+'0'; | ||||
|   conv[3]=(xx/100)%10+'0'; | ||||
|   conv[4]='.'; | ||||
|   conv[5]=(xx/10)%10+'0'; | ||||
|   conv[6]=(xx)%10+'0'; | ||||
|   conv[7]=0; | ||||
|   return conv; | ||||
| } | ||||
|  | ||||
| #endif //ULTRA_LCD | ||||
|  | ||||
|   | ||||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,26 +1,6 @@ | ||||
| SCUBA82's fork: | ||||
| ----------------- | ||||
|  | ||||
| The main goal of my fork is porting the brilliant Marlin firmware to GEN7 Boards. | ||||
| I'm working on a 16MHz GEN7 board and have only tested with this configuration. | ||||
| But there were reports about successfully running it at 20 MHz. Expect 25% faster moves and maybe some other issues. | ||||
|  | ||||
| Using lcd and sdcard support on an ATMega644(P) is not possible cause the sketch is way too big for its memory. | ||||
| I switched to an ATMega1284P which has double size program memory. Unfortunately it's not supported in Arduino IDE out of the box but expect a tutorial on how to compile for it soon.  | ||||
| For the necessary pin breakouts I used Alfons3 design of GEN7 (https://github.com/Alfons3/Generation_7_Electronics) with an additional breakout for pin A0/D31.  | ||||
| I'll publish my desing as soon as possible. | ||||
|  | ||||
| You have to use different chip fuses to get Marlin running. | ||||
| The fuses I'm using are lfuse: 0xF7 hfuse: 0xD4 efuse: 0xFD | ||||
|  | ||||
| For questions take a look into http://forums.reprap.org/read.php?181,118329 or send me an e-mail: christian_thalhammer@gmx.at | ||||
|  | ||||
|  | ||||
| Expect this fork to be highly experimental.  | ||||
|  | ||||
| WARNING:  | ||||
| -------- | ||||
| THIS IS RELEASE CANDIDATE 1 FOR MARLIN 1.0.0 | ||||
| THIS IS RELEASE CANDIDATE 2 FOR MARLIN 1.0.0 | ||||
|  | ||||
| The configuration is now split in two files | ||||
| Configuration.h for the normal settings | ||||
|   | ||||
		Reference in New Issue
	
	Block a user