gnea\grbl-Mega  1.0f
Source Code Documentation ( Internal Workings )
settings.h
Go to the documentation of this file.
1 /*
2  settings.h - eeprom configuration handling
3  Part of Grbl
4 
5  Copyright (c) 2011-2016 Sungeun K. Jeon for Gnea Research LLC
6  Copyright (c) 2009-2011 Simen Svale Skogsrud
7 
8  Grbl is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  Grbl is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with Grbl. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 #ifndef settings_h
23 #define settings_h
24 
25 #include "grbl.h"
26 
27 #ifndef EEPROM_LINE_SIZE
28  #define EEPROM_LINE_SIZE 80
29 #endif
30 // when firmware is upgraded. Always stored in byte 0 of eeprom
32 #define SETTINGS_VERSION 10
33 #define BITFLAG_REPORT_INCHES bit(0)
36 #define BITFLAG_LASER_MODE bit(1)
37 #define BITFLAG_INVERT_ST_ENABLE bit(2)
38 #define BITFLAG_HARD_LIMIT_ENABLE bit(3)
39 #define BITFLAG_HOMING_ENABLE bit(4)
40 #define BITFLAG_SOFT_LIMIT_ENABLE bit(5)
41 #define BITFLAG_INVERT_LIMIT_PINS bit(6)
42 #define BITFLAG_INVERT_PROBE_PIN bit(7)
43 #define BITFLAG_RT_STATUS_POSITION_TYPE bit(0)
45 #define BITFLAG_RT_STATUS_BUFFER_STATE bit(1)
46 #define SETTINGS_RESTORE_DEFAULTS bit(0)
48 #define SETTINGS_RESTORE_PARAMETERS bit(1)
49 #define SETTINGS_RESTORE_STARTUP_LINES bit(2)
50 #define SETTINGS_RESTORE_BUILD_INFO bit(3)
51 #ifndef SETTINGS_RESTORE_ALL
52  #define SETTINGS_RESTORE_ALL 0xFF
53 #endif
54 #define EEPROM_ADDR_GLOBAL 1U
56 #define EEPROM_ADDR_PARAMETERS 512U
57 #define EEPROM_ADDR_STARTUP_BLOCK 768U
58 #define EEPROM_ADDR_BUILD_INFO 942U
59 #define N_COORDINATE_SYSTEM 6
61 #define SETTING_INDEX_NCOORD N_COORDINATE_SYSTEM+1
62 //
63 #define SETTING_INDEX_G28 N_COORDINATE_SYSTEM
65 #define SETTING_INDEX_G30 N_COORDINATE_SYSTEM+1
66 // #define SETTING_INDEX_G92 N_COORDINATE_SYSTEM+2
67 #define AXIS_N_SETTINGS 4
69 #define AXIS_SETTINGS_START_VAL 100
70 #define AXIS_SETTINGS_INCREMENT 10
72 typedef struct {
74 // Axis settings
75  float steps_per_mm[N_AXIS];
76  float max_rate[N_AXIS];
77  float acceleration[N_AXIS];
78  float max_travel[N_AXIS];
79 
80 // Remaining Grbl settings
83  uint8_t dir_invert_mask;
88 
89  float rpm_max;
90  float rpm_min;
91 
92  uint8_t flags;
93 
94  uint8_t homing_dir_mask;
99 } settings_t;
100 extern settings_t settings;
102 void settings_init();
104 void settings_restore(uint8_t restore_flag);
106 uint8_t settings_store_global_setting(uint8_t parameter, float value);
108 void settings_store_startup_line(uint8_t n, char *line);
110 uint8_t settings_read_startup_line(uint8_t n, char *line);
112 void settings_store_build_info(char *line);
114 uint8_t settings_read_build_info(char *line);
116 void settings_write_coord_data(uint8_t coord_select, float *coord_data);
118 uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data);
120 uint8_t get_step_pin_mask(uint8_t i);
122 uint8_t get_direction_pin_mask(uint8_t i);
124 uint8_t get_limit_pin_mask(uint8_t i);
125 
126 
127 #endif
uint8_t homing_dir_mask
Definition: settings.h:94
uint8_t get_direction_pin_mask(uint8_t i)
Returns the direction pin mask according to Grbl's internal axis numbering.
Definition: settings.c:316
#define N_AXIS
Axis array index values. Must start with 0 and be continuous.
Definition: nuts_bolts.h:30
void settings_restore(uint8_t restore_flag)
Helper function to clear and restore EEPROM defaults.
Definition: settings.c:65
uint8_t settings_read_build_info(char *line)
Reads build info user-defined string.
Definition: settings.c:148
Global persistent settings (Stored from byte EEPROM_ADDR_GLOBAL onwards)
Definition: settings.h:73
float homing_feed_rate
Definition: settings.h:95
uint8_t get_step_pin_mask(uint8_t i)
Returns the step pin mask according to Grbl's internal axis numbering.
Definition: settings.c:308
float rpm_max
Definition: settings.h:89
float homing_seek_rate
Definition: settings.h:96
void settings_write_coord_data(uint8_t coord_select, float *coord_data)
Writes selected coordinate data to EEPROM.
Definition: settings.c:46
uint8_t status_report_mask
Mask to indicate desired report data.
Definition: settings.h:85
float arc_tolerance
Definition: settings.h:87
uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data)
Reads selected coordinate data from EEPROM.
Definition: settings.c:160
float junction_deviation
Definition: settings.h:86
settings_t settings
Definition: settings.c:24
uint8_t flags
Contains default boolean settings.
Definition: settings.h:92
uint8_t step_invert_mask
Definition: settings.h:82
void settings_store_build_info(char *line)
Stores build info user-defined string.
Definition: settings.c:39
uint16_t homing_debounce_delay
Definition: settings.h:97
uint8_t dir_invert_mask
Definition: settings.h:83
void settings_store_startup_line(uint8_t n, char *line)
Stores the protocol line variable as a startup line in EEPROM.
Definition: settings.c:27
uint8_t settings_read_startup_line(uint8_t n, char *line)
Reads an EEPROM startup line to the protocol line variable.
Definition: settings.c:135
float homing_pulloff
Definition: settings.h:98
float rpm_min
Definition: settings.h:90
uint8_t settings_store_global_setting(uint8_t parameter, float value)
A helper method to set new settings from command line.
Definition: settings.c:188
void settings_init()
Initialize the configuration subsystem (load settings from EEPROM)
Definition: settings.c:299
uint8_t get_limit_pin_mask(uint8_t i)
Returns the limit pin mask according to Grbl's internal axis numbering.
Definition: settings.c:324
uint8_t pulse_microseconds
Definition: settings.h:81
uint8_t stepper_idle_lock_time
If max value 255, steppers do not disable.
Definition: settings.h:84