Commit bdb02412 authored by MagoKimbra's avatar MagoKimbra

Store Extruder_offset

parent 51195c29
...@@ -44,7 +44,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) ...@@ -44,7 +44,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
// wrong data being written to the variables. // wrong data being written to the variables.
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order. // ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
#define EEPROM_VERSION "V12" #define EEPROM_VERSION "V13"
#ifdef EEPROM_SETTINGS #ifdef EEPROM_SETTINGS
void Config_StoreSettings() void Config_StoreSettings()
...@@ -69,6 +69,10 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) ...@@ -69,6 +69,10 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
EEPROM_WRITE_VAR(i, add_homing); EEPROM_WRITE_VAR(i, add_homing);
EEPROM_WRITE_VAR(i, zprobe_zoffset); EEPROM_WRITE_VAR(i, zprobe_zoffset);
#if EXTRUDERS > 1 && !defined SINGLENOZZLE
EEPROM_WRITE_VAR(i, extruder_offset);
#endif
#ifdef DELTA #ifdef DELTA
EEPROM_WRITE_VAR(i, delta_radius); EEPROM_WRITE_VAR(i, delta_radius);
EEPROM_WRITE_VAR(i, delta_diagonal_rod); EEPROM_WRITE_VAR(i, delta_diagonal_rod);
...@@ -170,7 +174,11 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) ...@@ -170,7 +174,11 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
EEPROM_READ_VAR(i,max_e_jerk); EEPROM_READ_VAR(i,max_e_jerk);
EEPROM_READ_VAR(i,add_homing); EEPROM_READ_VAR(i,add_homing);
EEPROM_READ_VAR(i,zprobe_zoffset); EEPROM_READ_VAR(i,zprobe_zoffset);
#if EXTRUDERS > 1 && !defined SINGLENOZZLE
EEPROM_READ_VAR(i, extruder_offset);
#endif
#ifdef DELTA #ifdef DELTA
EEPROM_READ_VAR(i,delta_radius); EEPROM_READ_VAR(i,delta_radius);
EEPROM_READ_VAR(i,delta_diagonal_rod); EEPROM_READ_VAR(i,delta_diagonal_rod);
...@@ -273,6 +281,14 @@ void Config_ResetDefault() ...@@ -273,6 +281,14 @@ void Config_ResetDefault()
const static float tmp7[] = DEFAULT_Kd; const static float tmp7[] = DEFAULT_Kd;
#endif // PIDTEMP #endif // PIDTEMP
#if defined(EXTRUDER_OFFSET_X) && defined(EXTRUDER_OFFSET_Y)
const static float tmp8[] = EXTRUDER_OFFSET_X;
const static float tmp9[] = EXTRUDER_OFFSET_Y;
#else
const static float tmp8[] = {0,0,0,0};
const static float tmp9[] = {0,0,0,0};
#endif
for (short i=0;i<3+EXTRUDERS;i++) for (short i=0;i<3+EXTRUDERS;i++)
{ {
axis_steps_per_unit[i] = tmp1[i]; axis_steps_per_unit[i] = tmp1[i];
...@@ -283,6 +299,10 @@ void Config_ResetDefault() ...@@ -283,6 +299,10 @@ void Config_ResetDefault()
for (short i=0;i<EXTRUDERS;i++) for (short i=0;i<EXTRUDERS;i++)
{ {
max_retraction_feedrate[i] = tmp3[i]; max_retraction_feedrate[i] = tmp3[i];
#if EXTRUDERS > 1 && !defined SINGLENOZZLE
extruder_offset[X_AXIS][i] = tmp8[i];
extruder_offset[Y_AXIS][i] = tmp9[i];
#endif
#ifdef SCARA #ifdef SCARA
axis_scaling[i] = 1; axis_scaling[i] = 1;
#endif //SCARA #endif //SCARA
...@@ -487,6 +507,18 @@ void Config_ResetDefault() ...@@ -487,6 +507,18 @@ void Config_ResetDefault()
SERIAL_ECHOPAIR(" Z" ,add_homing[Z_AXIS] ); SERIAL_ECHOPAIR(" Z" ,add_homing[Z_AXIS] );
SERIAL_EOL; SERIAL_EOL;
#if EXTRUDERS > 1 && !defined SINGLENOZZLE
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM("Hotend offset (mm):");
for (int e = 0; e < EXTRUDERS; e++) {
SERIAL_ECHO_START;
SERIAL_ECHOPAIR(" M218 T", (long unsigned int)e);
SERIAL_ECHOPAIR(" X", extruder_offset[X_AXIS][e]);
SERIAL_ECHOPAIR(" Y" ,extruder_offset[Y_AXIS][e]);
SERIAL_EOL;
}
#endif //EXTRUDERS > 1 && !defined SINGLENOZZLE
#ifdef DELTA #ifdef DELTA
SERIAL_ECHO_START; SERIAL_ECHO_START;
SERIAL_ECHOLNPGM("Endstop adjustment (mm):"); SERIAL_ECHOLNPGM("Endstop adjustment (mm):");
......
...@@ -217,8 +217,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the lo ...@@ -217,8 +217,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the lo
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.
// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis //#define EXTRUDER_OFFSET_X {0.0, 5.00, 0.0, 0.0} // (in mm) for each extruder, offset of the hotend on the X axis
// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis //#define EXTRUDER_OFFSET_Y {0.0, 5.00, 0.0, 0.0} // (in mm) for each extruder, offset of the hotend on the Y axis
// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) // The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK 10.0 // (mm/sec) #define DEFAULT_XYJERK 10.0 // (mm/sec)
......
...@@ -245,9 +245,23 @@ extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional ...@@ -245,9 +245,23 @@ extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional
extern float current_position[NUM_AXIS]; extern float current_position[NUM_AXIS];
extern float destination[NUM_AXIS]; extern float destination[NUM_AXIS];
extern float add_homing[3]; extern float add_homing[3];
// Extruder offset
#if EXTRUDERS > 1
#ifndef SINGLENOZZLE
#ifndef DUAL_X_CARRIAGE
#define NUM_EXTRUDER_OFFSETS 2 // only in XY plane
#else
#define NUM_EXTRUDER_OFFSETS 3 // supports offsets in XYZ plane
#endif
extern float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS];
#endif // end SINGLENOZZLE
#endif // end EXTRUDERS
#ifdef NPR2 #ifdef NPR2
extern int old_color; // old color for system NPR2 extern int old_color; // old color for system NPR2
#endif #endif
#ifdef DELTA #ifdef DELTA
extern float z_probe_offset[3]; extern float z_probe_offset[3];
extern float endstop_adj[3]; extern float endstop_adj[3];
...@@ -257,6 +271,7 @@ extern float delta_diagonal_rod; ...@@ -257,6 +271,7 @@ extern float delta_diagonal_rod;
//*extern float Z_MAX_POS; //*extern float Z_MAX_POS;
//*extern float Z_MAX_LENGTH; //*extern float Z_MAX_LENGTH;
#endif #endif
#ifdef SCARA #ifdef SCARA
extern float axis_scaling[3]; // Build size scaling extern float axis_scaling[3]; // Build size scaling
#endif #endif
......
...@@ -292,11 +292,7 @@ float lastpos[4]; ...@@ -292,11 +292,7 @@ float lastpos[4];
#else #else
#define NUM_EXTRUDER_OFFSETS 3 // supports offsets in XYZ plane #define NUM_EXTRUDER_OFFSETS 3 // supports offsets in XYZ plane
#endif #endif
float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS] = { float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS];
#if defined(EXTRUDER_OFFSET_X) && defined(EXTRUDER_OFFSET_Y)
EXTRUDER_OFFSET_X, EXTRUDER_OFFSET_Y
#endif
};
#endif // end SINGLENOZZLE #endif // end SINGLENOZZLE
#endif // end EXTRUDERS #endif // end EXTRUDERS
......
...@@ -129,9 +129,6 @@ extern unsigned long axis_steps_per_sqr_second[3 + EXTRUDERS]; ...@@ -129,9 +129,6 @@ extern unsigned long axis_steps_per_sqr_second[3 + EXTRUDERS];
extern float autotemp_factor; extern float autotemp_factor;
#endif #endif
extern block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions extern block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions
extern volatile unsigned char block_buffer_head; // Index of the next block to be pushed extern volatile unsigned char block_buffer_head; // Index of the next block to be pushed
extern volatile unsigned char block_buffer_tail; extern volatile unsigned char block_buffer_tail;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment