Exemplo n.º 1
0
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();
}
Exemplo n.º 2
0
/** \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
  }
}
Exemplo n.º 3
0
void epr_set_rod_length() {
  epr_set_float(EPR_RODSTEPS,rodMaxLength);
}