/ Repetier / Eeprom.h
Eeprom.h
  1  /*
  2      This file is part of Repetier-Firmware.
  3  
  4      Repetier-Firmware is free software: you can redistribute it and/or modify
  5      it under the terms of the GNU General Public License as published by
  6      the Free Software Foundation, either version 3 of the License, or
  7      (at your option) any later version.
  8  
  9      Repetier-Firmware is distributed in the hope that it will be useful,
 10      but WITHOUT ANY WARRANTY; without even the implied warranty of
 11      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 12      GNU General Public License for more details.
 13  
 14      You should have received a copy of the GNU General Public License
 15      along with Repetier-Firmware.  If not, see <http://www.gnu.org/licenses/>.
 16  
 17  */
 18  
 19  #ifndef _EEPROM_H
 20  #define _EEPROM_H
 21  
 22  #include <avr/eeprom.h>
 23  
 24  // Id to distinguish version changes 
 25  #define EEPROM_PROTOCOL_VERSION 2
 26  
 27  /** Where to start with our datablock in memory. Can be moved if you
 28  have problems with other modules using the eeprom */
 29  
 30  #define EEPROM_OFFSET               0
 31  #define EPR_MAGIC_BYTE              0
 32  #define EPR_ACCELERATION_TYPE       1
 33  #define EPR_XAXIS_STEPS_PER_MM      3
 34  #define EPR_YAXIS_STEPS_PER_MM      7
 35  #define EPR_ZAXIS_STEPS_PER_MM     11
 36  #define EPR_X_MAX_FEEDRATE         15
 37  #define EPR_Y_MAX_FEEDRATE         19
 38  #define EPR_Z_MAX_FEEDRATE         23
 39  #define EPR_X_HOMING_FEEDRATE      27
 40  #define EPR_Y_HOMING_FEEDRATE      31
 41  #define EPR_Z_HOMING_FEEDRATE      35
 42  #define EPR_MAX_JERK               39
 43  #define EPR_OPS_MIN_DISTANCE       43
 44  #define EPR_MAX_ZJERK              47
 45  #define EPR_X_MAX_ACCEL            51
 46  #define EPR_Y_MAX_ACCEL            55
 47  #define EPR_Z_MAX_ACCEL            59
 48  #define EPR_X_MAX_TRAVEL_ACCEL     63
 49  #define EPR_Y_MAX_TRAVEL_ACCEL     67
 50  #define EPR_Z_MAX_TRAVEL_ACCEL     71
 51  #define EPR_BAUDRATE               75
 52  #define EPR_MAX_INACTIVE_TIME      79
 53  #define EPR_STEPPER_INACTIVE_TIME  83
 54  #define EPR_OPS_RETRACT_DISTANCE   87
 55  #define EPR_OPS_RETRACT_BACKLASH   91
 56  #define EPR_EXTRUDER_SPEED         95
 57  #define EPR_OPS_MOVE_AFTER         99
 58  #define EPR_OPS_MODE              103
 59  #define EPR_INTEGRITY_BYTE        104   // Here the xored sum over eeprom is stored
 60  #define EPR_VERSION               105   // Version id for updates in EEPROM storage
 61  #define EPR_BED_HEAT_MANAGER      106
 62  #define EPR_BED_DRIVE_MAX         107
 63  #define EPR_BED_PID_PGAIN         108
 64  #define EPR_BED_PID_IGAIN         112
 65  #define EPR_BED_PID_DGAIN         116
 66  #define EPR_BED_PID_MAX           120
 67  #define EPR_BED_DRIVE_MIN         124
 68  #define EPR_PRINTING_TIME         125  // Time in seconds printing
 69  #define EPR_PRINTING_DISTANCE     129  // Filament length printed
 70  #define EPR_X_HOME_OFFSET         133
 71  #define EPR_Y_HOME_OFFSET         137
 72  #define EPR_Z_HOME_OFFSET         141
 73  #define EPR_X_LENGTH              145
 74  #define EPR_Y_LENGTH              149
 75  #define EPR_Z_LENGTH              153
 76  #define EPR_BACKLASH_X            157
 77  #define EPR_BACKLASH_Y            161
 78  #define EPR_BACKLASH_Z            165
 79  
 80  #define EEPROM_EXTRUDER_OFFSET 200
 81  // bytes per extruder needed, leave some space for future development
 82  #define EEPROM_EXTRUDER_LENGTH 100
 83  // Extruder positions relative to extruder start
 84  #define EPR_EXTRUDER_STEPS_PER_MM        0
 85  #define EPR_EXTRUDER_MAX_FEEDRATE        4
 86  // Feedrate from halted extruder in mm/s
 87  #define EPR_EXTRUDER_MAX_START_FEEDRATE  8
 88  // Acceleration in mm/s^2
 89  #define EPR_EXTRUDER_MAX_ACCELERATION   12
 90  #define EPR_EXTRUDER_HEAT_MANAGER       16
 91  #define EPR_EXTRUDER_DRIVE_MAX          17
 92  #define EPR_EXTRUDER_PID_PGAIN          18
 93  #define EPR_EXTRUDER_PID_IGAIN          22
 94  #define EPR_EXTRUDER_PID_DGAIN          26
 95  #define EPR_EXTRUDER_PID_MAX            30
 96  #define EPR_EXTRUDER_X_OFFSET           31
 97  #define EPR_EXTRUDER_Y_OFFSET           35
 98  #define EPR_EXTRUDER_WATCH_PERIOD       39
 99  #define EPR_EXTRUDER_ADVANCE_K          41
100  #define EPR_EXTRUDER_DRIVE_MIN          45
101  #define EPR_EXTRUDER_ADVANCE_L          46
102  #define EPR_EXTRUDER_WAIT_RETRACT_TEMP 50
103  #define EPR_EXTRUDER_WAIT_RETRACT_UNITS 52
104  #define EPR_EXTRUDER_COOLER_SPEED       54
105  #if EEPROM_MODE!=0
106  
107  extern inline void epr_set_byte(uint pos,byte value);
108  extern inline void epr_set_int(uint pos,int value);
109  extern inline void epr_set_long(uint pos,long value);
110  extern inline void epr_set_float(uint pos,float value);
111  extern void epr_data_to_eeprom(byte corrupted);
112  extern void epr_eeprom_to_data();
113  extern void epr_eeprom_reset();
114  
115  inline byte epr_get_byte(uint pos) {
116     return eeprom_read_byte ((unsigned char *)(EEPROM_OFFSET+pos));
117  }
118  inline int epr_get_int(uint pos) {
119    return eeprom_read_word((unsigned int *)(EEPROM_OFFSET+pos));
120  }
121  inline long epr_get_long(uint pos) {
122    return eeprom_read_dword((unsigned long*)(EEPROM_OFFSET+pos));
123  }
124  inline float epr_get_float(uint pos) {
125    float v;
126    eeprom_read_block(&v,(void *)(EEPROM_OFFSET+pos),4); // newer gcc have eeprom_read_block but not arduino 22
127    return v;
128  }
129  #endif
130  
131  extern void epr_output_settings();
132  extern void epr_update(GCode *com);
133  extern void epr_init();
134  extern void epr_init_baudrate();
135  extern void epr_update_usage();
136  #endif
137