void epr_update(GCode *com) { if(GCODE_HAS_T(com) && GCODE_HAS_P(com)) switch(com->T) { case 0: if(GCODE_HAS_S(com)) epr_set_byte(com->P,(byte)com->S); break; case 1: if(GCODE_HAS_S(com)) epr_set_int(com->P,(int)com->S); break; case 2: if(GCODE_HAS_S(com)) epr_set_long(com->P,(long)com->S); break; case 3: if(GCODE_HAS_X(com)) epr_set_float(com->P,com->X); break; } epr_eeprom_to_data(); }
/** \brief Moves current settings to EEPROM. The values the are currently set are used to fill the eeprom.*/ void epr_data_to_eeprom() { epr_set_long(EPR_BAUDRATE,baudrate); epr_set_long(EPR_MAX_INACTIVE_TIME,max_inactive_time); epr_set_long(EPR_STEPPER_INACTIVE_TIME,stepper_inactive_time); //#define EPR_ACCELERATION_TYPE 1 epr_set_float(EPR_XAXIS_STEPS_PER_MM,axis_steps_per_unit[0]); epr_set_float(EPR_YAXIS_STEPS_PER_MM,axis_steps_per_unit[1]); epr_set_float(EPR_ZAXIS_STEPS_PER_MM,axis_steps_per_unit[2]); epr_set_float(EPR_X_MAX_FEEDRATE,max_feedrate[0]); epr_set_float(EPR_Y_MAX_FEEDRATE,max_feedrate[1]); epr_set_float(EPR_Z_MAX_FEEDRATE,max_feedrate[2]); epr_set_float(EPR_X_HOMING_FEEDRATE,homing_feedrate[0]); epr_set_float(EPR_Y_HOMING_FEEDRATE,homing_feedrate[1]); epr_set_float(EPR_Z_HOMING_FEEDRATE,homing_feedrate[2]); epr_set_float(EPR_MAX_JERK,printer_state.maxJerk); epr_set_float(EPR_MAX_ZJERK,printer_state.maxZJerk); #ifdef RAMP_ACCELERATION epr_set_float(EPR_X_MAX_ACCEL,max_acceleration_units_per_sq_second[0]); epr_set_float(EPR_Y_MAX_ACCEL,max_acceleration_units_per_sq_second[1]); epr_set_float(EPR_Z_MAX_ACCEL,max_acceleration_units_per_sq_second[2]); epr_set_float(EPR_X_MAX_TRAVEL_ACCEL,max_travel_acceleration_units_per_sq_second[0]); epr_set_float(EPR_Y_MAX_TRAVEL_ACCEL,max_travel_acceleration_units_per_sq_second[1]); epr_set_float(EPR_Z_MAX_TRAVEL_ACCEL,max_travel_acceleration_units_per_sq_second[2]); #endif #if USE_OPS==1 epr_set_float(EPR_OPS_MIN_DISTANCE,printer_state.opsMinDistance); epr_set_byte(EPR_OPS_MODE,printer_state.opsMode); epr_set_float(EPR_OPS_MOVE_AFTER,printer_state.opsMoveAfter); epr_set_float(EPR_OPS_RETRACT_DISTANCE,printer_state.opsRetractDistance); epr_set_float(EPR_OPS_RETRACT_BACKSLASH,printer_state.opsRetractBackslash); #endif // now the extruder for(byte i=0;i<NUM_EXTRUDER;i++) { int o=i*EEPROM_EXTRUDER_LENGTH+EEPROM_EXTRUDER_OFFSET; Extruder *e = &extruder[i]; epr_set_float(o+EPR_EXTRUDER_STEPS_PER_MM,e->stepsPerMM); epr_set_float(o+EPR_EXTRUDER_MAX_FEEDRATE,e->maxFeedrate); epr_set_float(o+EPR_EXTRUDER_MAX_START_FEEDRATE,e->maxStartFeedrate); epr_set_float(o+EPR_EXTRUDER_MAX_ACCELERATION,e->maxAcceleration); epr_set_byte(o+EPR_EXTRUDER_HEAT_MANAGER,e->heatManager); #ifdef TEMP_PID epr_set_byte(o+EPR_EXTRUDER_DRIVE_MAX,e->pidDriveMax); epr_set_byte(o+EPR_EXTRUDER_DRIVE_MIN,e->pidDriveMin); epr_set_long(o+EPR_EXTRUDER_PID_PGAIN,e->pidPGain); epr_set_long(o+EPR_EXTRUDER_PID_IGAIN,e->pidIGain); epr_set_long(o+EPR_EXTRUDER_PID_DGAIN,e->pidDGain); epr_set_byte(o+EPR_EXTRUDER_PID_MAX,e->pidMax); #endif epr_set_long(o+EPR_EXTRUDER_X_OFFSET,e->yOffset); epr_set_long(o+EPR_EXTRUDER_Y_OFFSET,e->xOffset); epr_set_int(o+EPR_EXTRUDER_WATCH_PERIOD,e->watchPeriod); #ifdef USE_ADVANCE #ifdef ENABLE_QUADRATIC_ADVANCE epr_set_float(o+EPR_EXTRUDER_ADVANCE_K,e->advanceK); #endif epr_set_float(o+EPR_EXTRUDER_ADVANCE_L,e->advanceL); #endif } }
void epr_set_rod_length() { epr_set_float(EPR_RODSTEPS,rodMaxLength); }