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)
// wrong data being written to the variables.
// 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
void Config_StoreSettings()
......@@ -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, zprobe_zoffset);
#if EXTRUDERS > 1 && !defined SINGLENOZZLE
EEPROM_WRITE_VAR(i, extruder_offset);
#endif
#ifdef DELTA
EEPROM_WRITE_VAR(i, delta_radius);
EEPROM_WRITE_VAR(i, delta_diagonal_rod);
......@@ -171,6 +175,10 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
EEPROM_READ_VAR(i,add_homing);
EEPROM_READ_VAR(i,zprobe_zoffset);
#if EXTRUDERS > 1 && !defined SINGLENOZZLE
EEPROM_READ_VAR(i, extruder_offset);
#endif
#ifdef DELTA
EEPROM_READ_VAR(i,delta_radius);
EEPROM_READ_VAR(i,delta_diagonal_rod);
......@@ -273,6 +281,14 @@ void Config_ResetDefault()
const static float tmp7[] = DEFAULT_Kd;
#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++)
{
axis_steps_per_unit[i] = tmp1[i];
......@@ -283,6 +299,10 @@ void Config_ResetDefault()
for (short i=0;i<EXTRUDERS;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
axis_scaling[i] = 1;
#endif //SCARA
......@@ -487,6 +507,18 @@ void Config_ResetDefault()
SERIAL_ECHOPAIR(" Z" ,add_homing[Z_AXIS] );
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
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM("Endstop adjustment (mm):");
......
......@@ -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).
// 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.
// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (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_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, 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)
#define DEFAULT_XYJERK 10.0 // (mm/sec)
......
......@@ -245,9 +245,23 @@ extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional
extern float current_position[NUM_AXIS];
extern float destination[NUM_AXIS];
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
extern int old_color; // old color for system NPR2
#endif
#ifdef DELTA
extern float z_probe_offset[3];
extern float endstop_adj[3];
......@@ -257,6 +271,7 @@ extern float delta_diagonal_rod;
//*extern float Z_MAX_POS;
//*extern float Z_MAX_LENGTH;
#endif
#ifdef SCARA
extern float axis_scaling[3]; // Build size scaling
#endif
......
......@@ -292,11 +292,7 @@ float lastpos[4];
#else
#define NUM_EXTRUDER_OFFSETS 3 // supports offsets in XYZ plane
#endif
float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS] = {
#if defined(EXTRUDER_OFFSET_X) && defined(EXTRUDER_OFFSET_Y)
EXTRUDER_OFFSET_X, EXTRUDER_OFFSET_Y
#endif
};
float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS];
#endif // end SINGLENOZZLE
#endif // end EXTRUDERS
......
......@@ -129,9 +129,6 @@ extern unsigned long axis_steps_per_sqr_second[3 + EXTRUDERS];
extern float autotemp_factor;
#endif
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_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