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