Repetier-Firmware  0.80
Repetier/Eeprom.h
Go to the documentation of this file.
00001 /*
00002     This file is part of Repetier-Firmware.
00003 
00004     Repetier-Firmware is free software: you can redistribute it and/or modify
00005     it under the terms of the GNU General Public License as published by
00006     the Free Software Foundation, either version 3 of the License, or
00007     (at your option) any later version.
00008 
00009     Repetier-Firmware is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012     GNU General Public License for more details.
00013 
00014     You should have received a copy of the GNU General Public License
00015     along with Repetier-Firmware.  If not, see <http://www.gnu.org/licenses/>.
00016 
00017 */
00018 
00019 #ifndef _EEPROM_H
00020 #define _EEPROM_H
00021 
00022 #include <avr/eeprom.h>
00023 
00024 // Id to distinguish version changes 
00025 #define EEPROM_PROTOCOL_VERSION 1
00026 
00030 #define EEPROM_OFFSET               0
00031 #define EPR_MAGIC_BYTE              0
00032 #define EPR_ACCELERATION_TYPE       1
00033 #define EPR_XAXIS_STEPS_PER_MM      3
00034 #define EPR_YAXIS_STEPS_PER_MM      7
00035 #define EPR_ZAXIS_STEPS_PER_MM     11
00036 #define EPR_X_MAX_FEEDRATE         15
00037 #define EPR_Y_MAX_FEEDRATE         19
00038 #define EPR_Z_MAX_FEEDRATE         23
00039 #define EPR_X_HOMING_FEEDRATE      27
00040 #define EPR_Y_HOMING_FEEDRATE      31
00041 #define EPR_Z_HOMING_FEEDRATE      35
00042 #define EPR_MAX_JERK               39
00043 #define EPR_OPS_MIN_DISTANCE       43
00044 #define EPR_MAX_ZJERK              47
00045 #define EPR_X_MAX_ACCEL            51
00046 #define EPR_Y_MAX_ACCEL            55
00047 #define EPR_Z_MAX_ACCEL            59
00048 #define EPR_X_MAX_TRAVEL_ACCEL     63
00049 #define EPR_Y_MAX_TRAVEL_ACCEL     67
00050 #define EPR_Z_MAX_TRAVEL_ACCEL     71
00051 #define EPR_BAUDRATE               75
00052 #define EPR_MAX_INACTIVE_TIME      79
00053 #define EPR_STEPPER_INACTIVE_TIME  83
00054 #define EPR_OPS_RETRACT_DISTANCE   87
00055 #define EPR_OPS_RETRACT_BACKLASH   91
00056 #define EPR_EXTRUDER_SPEED         95
00057 #define EPR_OPS_MOVE_AFTER         99
00058 #define EPR_OPS_MODE              103
00059 #define EPR_INTEGRITY_BYTE        104   // Here the xored sum over eeprom is stored
00060 #define EPR_VERSION               105   // Version id for updates in EEPROM storage
00061 #define EPR_BED_HEAT_MANAGER      106
00062 #define EPR_BED_DRIVE_MAX         107
00063 #define EPR_BED_PID_PGAIN         108
00064 #define EPR_BED_PID_IGAIN         112
00065 #define EPR_BED_PID_DGAIN         116
00066 #define EPR_BED_PID_MAX           120
00067 #define EPR_BED_DRIVE_MIN         124
00068 #define EPR_PRINTING_TIME         125  // Time in seconds printing
00069 #define EPR_PRINTING_DISTANCE     129  // Filament length printed
00070 #define EPR_X_HOME_OFFSET         133
00071 #define EPR_Y_HOME_OFFSET         137
00072 #define EPR_Z_HOME_OFFSET         141
00073 #define EPR_X_LENGTH              145
00074 #define EPR_Y_LENGTH              149
00075 #define EPR_Z_LENGTH              153
00076 #define EPR_BACKLASH_X            157
00077 #define EPR_BACKLASH_Y            161
00078 #define EPR_BACKLASH_Z            165
00079 
00080 #define EEPROM_EXTRUDER_OFFSET 200
00081 // bytes per extruder needed, leave some space for future development
00082 #define EEPROM_EXTRUDER_LENGTH 100
00083 // Extruder positions relative to extruder start
00084 #define EPR_EXTRUDER_STEPS_PER_MM        0
00085 #define EPR_EXTRUDER_MAX_FEEDRATE        4
00086 // Feedrate from halted extruder in mm/s
00087 #define EPR_EXTRUDER_MAX_START_FEEDRATE  8
00088 // Acceleration in mm/s^2
00089 #define EPR_EXTRUDER_MAX_ACCELERATION   12
00090 #define EPR_EXTRUDER_HEAT_MANAGER       16
00091 #define EPR_EXTRUDER_DRIVE_MAX          17
00092 #define EPR_EXTRUDER_PID_PGAIN          18
00093 #define EPR_EXTRUDER_PID_IGAIN          22
00094 #define EPR_EXTRUDER_PID_DGAIN          26
00095 #define EPR_EXTRUDER_PID_MAX            30
00096 #define EPR_EXTRUDER_X_OFFSET           31
00097 #define EPR_EXTRUDER_Y_OFFSET           35
00098 #define EPR_EXTRUDER_WATCH_PERIOD       39
00099 #define EPR_EXTRUDER_ADVANCE_K          41
00100 #define EPR_EXTRUDER_DRIVE_MIN          45
00101 #define EPR_EXTRUDER_ADVANCE_L          46
00102 #define EPR_EXTRUDER_WAIT_RETRACT_TEMP 50
00103 #define EPR_EXTRUDER_WAIT_RETRACT_UNITS 52
00104 #if EEPROM_MODE!=0
00105 
00106 extern inline void epr_set_byte(uint pos,byte value);
00107 extern inline void epr_set_int(uint pos,int value);
00108 extern inline void epr_set_long(uint pos,long value);
00109 extern inline void epr_set_float(uint pos,float value);
00110 extern void epr_data_to_eeprom(byte corrupted);
00111 extern void epr_eeprom_to_data();
00112 extern void epr_eeprom_reset();
00113 
00114 inline byte epr_get_byte(uint pos) {
00115    return eeprom_read_byte ((unsigned char *)(EEPROM_OFFSET+pos));
00116 }
00117 inline int epr_get_int(uint pos) {
00118   return eeprom_read_word((unsigned int *)(EEPROM_OFFSET+pos));
00119 }
00120 inline long epr_get_long(uint pos) {
00121   return eeprom_read_dword((unsigned long*)(EEPROM_OFFSET+pos));
00122 }
00123 inline float epr_get_float(uint pos) {
00124   float v;
00125   eeprom_read_block(&v,(void *)(EEPROM_OFFSET+pos),4); // newer gcc have eeprom_read_block but not arduino 22
00126   return v;
00127 }
00128 #endif
00129 
00130 extern void epr_output_settings();
00131 extern void epr_update(GCode *com);
00132 extern void epr_init();
00133 extern void epr_init_baudrate();
00134 extern void epr_update_usage();
00135 #endif
00136 
 All Data Structures Namespaces Files Functions Variables Typedefs Friends Defines