Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
MarlinKimbra
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
machinery
MarlinKimbra
Commits
9bc3f2c2
Commit
9bc3f2c2
authored
Jan 29, 2015
by
MagoKimbra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix EEPROM write
parent
36e8fc2d
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
286 additions
and
270 deletions
+286
-270
Configuration.h
MarlinKimbra/Configuration.h
+28
-22
ConfigurationStore.cpp
MarlinKimbra/ConfigurationStore.cpp
+254
-247
Configuration_adv.h
MarlinKimbra/Configuration_adv.h
+2
-1
language.h
MarlinKimbra/language.h
+2
-0
No files found.
MarlinKimbra/Configuration.h
View file @
9bc3f2c2
...
...
@@ -21,9 +21,9 @@
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
// build by the user have been successfully uploaded into firmware.
#define STRING_VERSION "4.0.2"
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
#define STRING_URL "reprap.org"
#define STRING_CONFIG_H_AUTHOR "(MagoKimbra: magokimbra@hotmail.com)" // Who made the changes.
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
#define STRING_SPLASH "v" STRING_VERSION " - " STRING_URL // will be shown during bootup
// SERIAL_PORT selects which serial port should be used for communication with the host.
...
...
@@ -292,34 +292,40 @@
#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MINTEMP 170 // degC
// Prevent extrusion of very large distances.
#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) // mm
//================== Thermal Runaway Protection ==============================
// This is a feature to protect your printer from burn up in flames if it has
// a thermistor coming off place (this happened to a friend of mine recently and
// motivated me writing this feature).
// The issue: If a thermistor come off, it will read a lower temperature than actual.
// The system will turn the heater on forever, burning up the filament and anything
// else around.
// After the temperature reaches the target for the first time, this feature will
// start measuring for how long the current temperature stays below the target
// minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
// If it stays longer than _PERIOD, it means the thermistor temperature
// cannot catch up with the target, so something *may be* wrong. Then, to be on the
// safe side, the system will he halt.
// Bear in mind the count down will just start AFTER the first time the
// thermistor temperature is over the target, so you will have no problem if
// your extruder heater takes 2 minutes to hit the target on heating.
#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
/*================== Thermal Runaway Protection ==============================
This is a feature to protect your printer from burn up in flames if it has
a thermistor coming off place (this happened to a friend of mine recently and
motivated me writing this feature).
The issue: If a thermistor come off, it will read a lower temperature than actual.
The system will turn the heater on forever, burning up the filament and anything
else around.
After the temperature reaches the target for the first time, this feature will
start measuring for how long the current temperature stays below the target
minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
If it stays longer than _PERIOD, it means the thermistor temperature
cannot catch up with the target, so something *may be* wrong. Then, to be on the
safe side, the system will he halt.
Bear in mind the count down will just start AFTER the first time the
thermistor temperature is over the target, so you will have no problem if
your extruder heater takes 2 minutes to hit the target on heating.
*/
// If you want to enable this feature for all your extruder heaters,
// uncomment the 2 defines below:
// Parameters for all extruder heaters
//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
// If you want to enable this feature for your bed heater,
// uncomment the 2 defines below:
// Parameters for the bed heater
//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
...
...
MarlinKimbra/ConfigurationStore.cpp
View file @
9bc3f2c2
#include "Marlin.h"
#include "language.h"
#include "planner.h"
#include "temperature.h"
#include "ultralcd.h"
#include "ConfigurationStore.h"
void
_EEPROM_writeData
(
int
&
pos
,
uint8_t
*
value
,
uint8_t
size
)
{
do
{
void
_EEPROM_writeData
(
int
&
pos
,
uint8_t
*
value
,
uint8_t
size
)
{
uint8_t
c
;
while
(
size
--
)
{
eeprom_write_byte
((
unsigned
char
*
)
pos
,
*
value
);
c
=
eeprom_read_byte
((
unsigned
char
*
)
pos
);
if
(
c
!=
*
value
)
{
SERIAL_ECHO_START
;
SERIAL_ECHOLNPGM
(
MSG_ERR_EEPROM_WRITE
);
}
pos
++
;
value
++
;
}
while
(
--
size
)
;
}
;
}
#define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value))
void
_EEPROM_readData
(
int
&
pos
,
uint8_t
*
value
,
uint8_t
size
)
{
do
{
void
_EEPROM_readData
(
int
&
pos
,
uint8_t
*
value
,
uint8_t
size
)
{
do
{
*
value
=
eeprom_read_byte
((
unsigned
char
*
)
pos
);
pos
++
;
value
++
;
}
while
(
--
size
);
}
while
(
--
size
);
}
#define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value))
#define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value))
//======================================================================================
//======================================================================================
#define DUMMY_PID_VALUE 3000.0f
#define EEPROM_OFFSET 100
...
...
@@ -41,102 +44,106 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
#define EEPROM_VERSION "V11"
#ifdef EEPROM_SETTINGS
void
Config_StoreSettings
()
{
char
ver
[
4
]
=
"000"
;
int
i
=
EEPROM_OFFSET
;
EEPROM_WRITE_VAR
(
i
,
ver
);
// invalidate data first
EEPROM_WRITE_VAR
(
i
,
baudrate
);
EEPROM_WRITE_VAR
(
i
,
axis_steps_per_unit
);
EEPROM_WRITE_VAR
(
i
,
max_feedrate
);
EEPROM_WRITE_VAR
(
i
,
max_retraction_feedrate
);
EEPROM_WRITE_VAR
(
i
,
max_acceleration_units_per_sq_second
);
EEPROM_WRITE_VAR
(
i
,
acceleration
);
EEPROM_WRITE_VAR
(
i
,
retract_acceleration
);
EEPROM_WRITE_VAR
(
i
,
minimumfeedrate
);
EEPROM_WRITE_VAR
(
i
,
mintravelfeedrate
);
EEPROM_WRITE_VAR
(
i
,
minsegmenttime
);
EEPROM_WRITE_VAR
(
i
,
max_xy_jerk
);
EEPROM_WRITE_VAR
(
i
,
max_z_jerk
);
EEPROM_WRITE_VAR
(
i
,
max_e_jerk
);
EEPROM_WRITE_VAR
(
i
,
add_homing
);
void
Config_StoreSettings
()
{
float
dummy
=
0.0
f
;
char
ver
[
4
]
=
"000"
;
int
i
=
EEPROM_OFFSET
;
EEPROM_WRITE_VAR
(
i
,
ver
);
// invalidate data first
EEPROM_WRITE_VAR
(
i
,
baudrate
);
EEPROM_WRITE_VAR
(
i
,
axis_steps_per_unit
);
EEPROM_WRITE_VAR
(
i
,
max_feedrate
);
EEPROM_WRITE_VAR
(
i
,
max_retraction_feedrate
);
EEPROM_WRITE_VAR
(
i
,
max_acceleration_units_per_sq_second
);
EEPROM_WRITE_VAR
(
i
,
acceleration
);
EEPROM_WRITE_VAR
(
i
,
retract_acceleration
);
EEPROM_WRITE_VAR
(
i
,
minimumfeedrate
);
EEPROM_WRITE_VAR
(
i
,
mintravelfeedrate
);
EEPROM_WRITE_VAR
(
i
,
minsegmenttime
);
EEPROM_WRITE_VAR
(
i
,
max_xy_jerk
);
EEPROM_WRITE_VAR
(
i
,
max_z_jerk
);
EEPROM_WRITE_VAR
(
i
,
max_e_jerk
);
EEPROM_WRITE_VAR
(
i
,
add_homing
);
#ifdef DELTA
EEPROM_WRITE_VAR
(
i
,
delta_radius
);
EEPROM_WRITE_VAR
(
i
,
delta_diagonal_rod
);
EEPROM_WRITE_VAR
(
i
,
max_pos
);
EEPROM_WRITE_VAR
(
i
,
endstop_adj
);
EEPROM_WRITE_VAR
(
i
,
tower_adj
);
EEPROM_WRITE_VAR
(
i
,
z_probe_offset
);
EEPROM_WRITE_VAR
(
i
,
delta_radius
);
EEPROM_WRITE_VAR
(
i
,
delta_diagonal_rod
);
EEPROM_WRITE_VAR
(
i
,
max_pos
);
EEPROM_WRITE_VAR
(
i
,
endstop_adj
);
EEPROM_WRITE_VAR
(
i
,
tower_adj
);
EEPROM_WRITE_VAR
(
i
,
z_probe_offset
);
#endif
#ifdef ENABLE_AUTO_BED_LEVELING
EEPROM_WRITE_VAR
(
i
,
zprobe_zoffset
);
EEPROM_WRITE_VAR
(
i
,
zprobe_zoffset
);
#endif
#ifndef ULTIPANEL
int
plaPreheatHotendTemp
=
PLA_PREHEAT_HOTEND_TEMP
,
plaPreheatHPBTemp
=
PLA_PREHEAT_HPB_TEMP
,
plaPreheatFanSpeed
=
PLA_PREHEAT_FAN_SPEED
;
int
absPreheatHotendTemp
=
ABS_PREHEAT_HOTEND_TEMP
,
absPreheatHPBTemp
=
ABS_PREHEAT_HPB_TEMP
,
absPreheatFanSpeed
=
ABS_PREHEAT_FAN_SPEED
;
int
gumPreheatHotendTemp
=
GUM_PREHEAT_HOTEND_TEMP
,
gumPreheatHPBTemp
=
GUM_PREHEAT_HPB_TEMP
,
gumPreheatFanSpeed
=
GUM_PREHEAT_FAN_SPEED
;
#endif
EEPROM_WRITE_VAR
(
i
,
plaPreheatHotendTemp
);
EEPROM_WRITE_VAR
(
i
,
plaPreheatHPBTemp
);
EEPROM_WRITE_VAR
(
i
,
plaPreheatFanSpeed
);
EEPROM_WRITE_VAR
(
i
,
absPreheatHotendTemp
);
EEPROM_WRITE_VAR
(
i
,
absPreheatHPBTemp
);
EEPROM_WRITE_VAR
(
i
,
absPreheatFanSpeed
);
EEPROM_WRITE_VAR
(
i
,
gumPreheatHotendTemp
);
EEPROM_WRITE_VAR
(
i
,
gumPreheatHPBTemp
);
EEPROM_WRITE_VAR
(
i
,
gumPreheatFanSpeed
);
EEPROM_WRITE_VAR
(
i
,
plaPreheatHotendTemp
);
EEPROM_WRITE_VAR
(
i
,
plaPreheatHPBTemp
);
EEPROM_WRITE_VAR
(
i
,
plaPreheatFanSpeed
);
EEPROM_WRITE_VAR
(
i
,
absPreheatHotendTemp
);
EEPROM_WRITE_VAR
(
i
,
absPreheatHPBTemp
);
EEPROM_WRITE_VAR
(
i
,
absPreheatFanSpeed
);
EEPROM_WRITE_VAR
(
i
,
gumPreheatHotendTemp
);
EEPROM_WRITE_VAR
(
i
,
gumPreheatHPBTemp
);
EEPROM_WRITE_VAR
(
i
,
gumPreheatFanSpeed
);
#ifdef PIDTEMP
EEPROM_WRITE_VAR
(
i
,
Kp
);
EEPROM_WRITE_VAR
(
i
,
Ki
);
EEPROM_WRITE_VAR
(
i
,
Kd
);
#endif // PIDTEMP
#ifndef DOGLCD
int
lcd_contrast
=
32
;
#endif
EEPROM_WRITE_VAR
(
i
,
lcd_contrast
);
EEPROM_WRITE_VAR
(
i
,
lcd_contrast
);
#ifdef SCARA
EEPROM_WRITE_VAR
(
i
,
axis_scaling
);
// Add scaling for SCARA
EEPROM_WRITE_VAR
(
i
,
axis_scaling
);
// Add scaling for SCARA
#endif //SCARA
#ifdef FWRETRACT
EEPROM_WRITE_VAR
(
i
,
autoretract_enabled
);
EEPROM_WRITE_VAR
(
i
,
retract_length
);
EEPROM_WRITE_VAR
(
i
,
autoretract_enabled
);
EEPROM_WRITE_VAR
(
i
,
retract_length
);
#if EXTRUDERS > 1
EEPROM_WRITE_VAR
(
i
,
retract_length_swap
);
EEPROM_WRITE_VAR
(
i
,
retract_length_swap
);
#endif //EXTRUDERS > 1
EEPROM_WRITE_VAR
(
i
,
retract_feedrate
);
EEPROM_WRITE_VAR
(
i
,
retract_zlift
);
EEPROM_WRITE_VAR
(
i
,
retract_recover_length
);
EEPROM_WRITE_VAR
(
i
,
retract_feedrate
);
EEPROM_WRITE_VAR
(
i
,
retract_zlift
);
EEPROM_WRITE_VAR
(
i
,
retract_recover_length
);
#if EXTRUDERS > 1
EEPROM_WRITE_VAR
(
i
,
retract_recover_length_swap
);
EEPROM_WRITE_VAR
(
i
,
retract_recover_length_swap
);
#endif //EXTRUDERS > 1
EEPROM_WRITE_VAR
(
i
,
retract_recover_feedrate
);
EEPROM_WRITE_VAR
(
i
,
retract_recover_feedrate
);
#endif // FWRETRACT
// Save filament sizes
EEPROM_WRITE_VAR
(
i
,
volumetric_enabled
);
EEPROM_WRITE_VAR
(
i
,
filament_size
[
0
]);
#if EXTRUDERS > 1
EEPROM_WRITE_VAR
(
i
,
filament_size
[
1
]);
#if EXTRUDERS > 2
EEPROM_WRITE_VAR
(
i
,
filament_size
[
2
]);
#if EXTRUDERS > 3
EEPROM_WRITE_VAR
(
i
,
filament_size
[
3
]);
#endif //EXTRUDERS > 3
#endif //EXTRUDERS > 2
#endif //EXTRUDERS > 1
// Save filament sizes
for
(
int
e
=
0
;
e
<
EXTRUDERS
;
e
++
)
EEPROM_WRITE_VAR
(
i
,
filament_size
[
e
]);
int
storageSize
=
i
;
char
ver2
[
4
]
=
EEPROM_VERSION
;
i
=
EEPROM_OFFSET
;
EEPROM_WRITE_VAR
(
i
,
ver2
);
// validate data
char
ver2
[
4
]
=
EEPROM_VERSION
;
int
j
=
EEPROM_OFFSET
;
EEPROM_WRITE_VAR
(
j
,
ver2
);
// validate data
// Report storage size
SERIAL_ECHO_START
;
SERIAL_ECHOLNPGM
(
"Settings Stored"
);
SERIAL_ECHOPAIR
(
"Settings Stored ("
,
(
unsigned
long
)
i
);
SERIAL_ECHOLNPGM
(
" bytes)"
);
}
#endif //EEPROM_SETTINGS
#ifndef DISABLE_M503
void
Config_PrintSettings
()
{
// Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown
void
Config_PrintSettings
()
{
// Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown
SERIAL_ECHO_START
;
SERIAL_ECHOPAIR
(
"Baudrate: "
,
baudrate
);
SERIAL_ECHOLN
(
""
);
...
...
@@ -156,8 +163,8 @@ void Config_PrintSettings()
#endif //EXTRUDERS > 2
#endif //EXTRUDERS > 1
SERIAL_ECHOLN
(
""
);
SERIAL_ECHO_START
;
#ifdef SCARA
SERIAL_ECHOLNPGM
(
"Scaling factors:"
);
SERIAL_ECHO_START
;
...
...
@@ -165,9 +172,9 @@ void Config_PrintSettings()
SERIAL_ECHOPAIR
(
" Y"
,
axis_scaling
[
Y_AXIS
]);
SERIAL_ECHOPAIR
(
" Z"
,
axis_scaling
[
Z_AXIS
]);
SERIAL_ECHOLN
(
""
);
SERIAL_ECHO_START
;
#endif
SERIAL_ECHOLNPGM
(
"Maximum feedrates (mm/s):"
);
SERIAL_ECHO_START
;
SERIAL_ECHOPAIR
(
" M203 X "
,
max_feedrate
[
X_AXIS
]);
...
...
@@ -184,7 +191,6 @@ void Config_PrintSettings()
#endif //EXTRUDERS > 2
#endif //EXTRUDERS > 1
SERIAL_ECHOLN
(
""
);
SERIAL_ECHO_START
;
SERIAL_ECHOLNPGM
(
"Retraction Steps per unit:"
);
SERIAL_ECHO_START
;
...
...
@@ -241,6 +247,7 @@ void Config_PrintSettings()
SERIAL_ECHOPAIR
(
" Y"
,
add_homing
[
Y_AXIS
]
);
SERIAL_ECHOPAIR
(
" Z"
,
add_homing
[
Z_AXIS
]
);
SERIAL_ECHOLN
(
""
);
#ifdef DELTA
SERIAL_ECHO_START
;
SERIAL_ECHOLNPGM
(
"Endstop adjustment (mm):"
);
...
...
@@ -263,7 +270,7 @@ void Config_PrintSettings()
SERIAL_ECHOPAIR
(
" H"
,
max_pos
[
2
]);
SERIAL_ECHOPAIR
(
" P"
,
z_probe_offset
[
3
]);
SERIAL_ECHOLN
(
""
);
/*
SERIAL_ECHOLN
(
"Tower Positions"
);
SERIAL_ECHOPAIR
(
"Tower1 X:"
,
delta_tower1_x
);
SERIAL_ECHOPAIR
(
" Y:"
,
delta_tower1_y
);
...
...
@@ -274,7 +281,7 @@ void Config_PrintSettings()
SERIAL_ECHOPAIR
(
"Tower3 X:"
,
delta_tower3_x
);
SERIAL_ECHOPAIR
(
" Y:"
,
delta_tower3_y
);
SERIAL_ECHOLN
(
""
);
*/
#endif // DELTA
#ifdef ENABLE_AUTO_BED_LEVELING
...
...
MarlinKimbra/Configuration_adv.h
View file @
9bc3f2c2
...
...
@@ -80,7 +80,8 @@
#define EXTRUDER_2_AUTO_FAN_PIN -1
#define EXTRUDER_3_AUTO_FAN_PIN -1
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
//===========================================================================
//=============================Mechanical Settings===========================
...
...
MarlinKimbra/language.h
View file @
9bc3f2c2
...
...
@@ -152,6 +152,8 @@
#define MSG_BABYSTEPPING_Z "Babystepping Z"
#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure"
#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
// LCD Menu Messages
#include "language_en.h"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment