Der EEPROM_MODE - Wie genau anwenden?
Verfasst: Di 10. Jan 2023, 12:06
Hallo RFx000 Gemeinde,
In einem kürzlich veröffentlichen Beitrag mhiers wurde bezüglich EEPROM_MODE folgendes geschrieben:
EEPROM_MODE-Werts.
Hier dazu die entsprechende Erklärungen/Beschreibungen aus der Firmware selbst (Conrad Version RF.01.47 (dev)):
I) (aus der Configuration.h):
For easy configuration, the default settings enable parameter storage in EEPROM.
This means, after the first upload many variables can only be changed using the special
M commands as described in the documentation. Changing these values in the configuration.h
file has no effect. Parameters overriden by EEPROM settings are calibartion values, extruder
values except thermistor tables and some other parameter likely to change during usage
like advance steps or ops mode.
To override EEPROM settings with config settings, set EEPROM_MODE 0 */
II) (ebenso aus der Configuration.h):
/** \brief EEPROM storage mode
Set the EEPROM_MODE to 0 if you always want to use the settings in this configuration file. If not,
set it to a value not stored in the first EEPROM-byte used. If you later want to overwrite your current
EEPROM settings with configuration defaults, just select an other value. On the first call to epr_init()
it will detect a mismatch of the first byte and copy default values into EEPROM. If the first byte
matches, the stored values are used to overwrite the settings.
IMPORTANT: With mode <>0 some changes in Configuration.h are not set any more, as they are
taken from the EEPROM. */
Hier nun meine Interpretation:
Meiner Meinung nach muss ich jedes Mal, wenn ich gewisse Werte ändern möchte, die im EEPROM gespeichert sind, den Wert des EEPROM_MODEs aufs neue ändern, wobei der Wert nicht auf 0 (Null) gesetzt werden soll. Der Beschreibung nach (meiner Interpretation nach) wird beim Flashen anfangs der EEPROM_MODE-Wert (aus der Configuration.h) mit dem ersten Byte im EEPROM verglichen. Unterscheiden sich diese, werden meine geänderten Werte aus der Configuration.h (z.B. Steps/mm oder PID-Werte) in das EEPROM geschrieben. Wird jedoch beim Flashen erkannt, dass der EEPROM_Mode-Wert in der Configuration.h gleich dem im EEPROM ist, werden eventuell geänderte Werte in der Configuration.h ignoriert. Der neue, geänderte EEPROM_MODE-Wert wird zum Schluss im EEPROM, im ersten Byte, gespeichert.
Steht in der Configuration.h beim EEPROM_MODE eine 0 (Null), werden alle (oder gewisse?) EEPROM-Werte auf "Fabriks-/Defaultwerte" zurückgesetzt.
Ist meine Interpretation falsch? Habe ich die dutzende Male, wo ich die FW neu geflasht habe, falsch gehandelt (obwohl das Ergebnis glücklicherweise das erwartete war)?
Oder hätte es gereicht, einmalig den EEPROM_MODE-Wert zu ändern?
(In der EEPROM.h findet sich eine Definition für EPR_MAGIC_BYTE mit dem Wert 0, womit vermutlich die Position gemeint ist.)
mjh11
In einem kürzlich veröffentlichen Beitrag mhiers wurde bezüglich EEPROM_MODE folgendes geschrieben:
Da ich beim Programmieren etwas unbedarft bin, hat mich das etwas verwirrt. Ich hatte eine (völlig?) andere Interpretation desmhier hat geschrieben:Außerdem muss die Zahl immer dann geändert werden, wenn ein Firmware-Entwickler das "Dateiformat" im EEPROM verändert,
damit beim Update der EEPROM-Inhalt auf die Standard-Werte zurückgesetzt wird anstatt die vorhandenen Werte im neuen Format
umzuinterpretieren (und ggf. kompletten Unfug zu veranstalten).
EEPROM_MODE-Werts.
Hier dazu die entsprechende Erklärungen/Beschreibungen aus der Firmware selbst (Conrad Version RF.01.47 (dev)):
I) (aus der Configuration.h):
For easy configuration, the default settings enable parameter storage in EEPROM.
This means, after the first upload many variables can only be changed using the special
M commands as described in the documentation. Changing these values in the configuration.h
file has no effect. Parameters overriden by EEPROM settings are calibartion values, extruder
values except thermistor tables and some other parameter likely to change during usage
like advance steps or ops mode.
To override EEPROM settings with config settings, set EEPROM_MODE 0 */
II) (ebenso aus der Configuration.h):
/** \brief EEPROM storage mode
Set the EEPROM_MODE to 0 if you always want to use the settings in this configuration file. If not,
set it to a value not stored in the first EEPROM-byte used. If you later want to overwrite your current
EEPROM settings with configuration defaults, just select an other value. On the first call to epr_init()
it will detect a mismatch of the first byte and copy default values into EEPROM. If the first byte
matches, the stored values are used to overwrite the settings.
IMPORTANT: With mode <>0 some changes in Configuration.h are not set any more, as they are
taken from the EEPROM. */
Hier nun meine Interpretation:
Meiner Meinung nach muss ich jedes Mal, wenn ich gewisse Werte ändern möchte, die im EEPROM gespeichert sind, den Wert des EEPROM_MODEs aufs neue ändern, wobei der Wert nicht auf 0 (Null) gesetzt werden soll. Der Beschreibung nach (meiner Interpretation nach) wird beim Flashen anfangs der EEPROM_MODE-Wert (aus der Configuration.h) mit dem ersten Byte im EEPROM verglichen. Unterscheiden sich diese, werden meine geänderten Werte aus der Configuration.h (z.B. Steps/mm oder PID-Werte) in das EEPROM geschrieben. Wird jedoch beim Flashen erkannt, dass der EEPROM_Mode-Wert in der Configuration.h gleich dem im EEPROM ist, werden eventuell geänderte Werte in der Configuration.h ignoriert. Der neue, geänderte EEPROM_MODE-Wert wird zum Schluss im EEPROM, im ersten Byte, gespeichert.
Steht in der Configuration.h beim EEPROM_MODE eine 0 (Null), werden alle (oder gewisse?) EEPROM-Werte auf "Fabriks-/Defaultwerte" zurückgesetzt.
Ist meine Interpretation falsch? Habe ich die dutzende Male, wo ich die FW neu geflasht habe, falsch gehandelt (obwohl das Ergebnis glücklicherweise das erwartete war)?
Oder hätte es gereicht, einmalig den EEPROM_MODE-Wert zu ändern?
(In der EEPROM.h findet sich eine Definition für EPR_MAGIC_BYTE mit dem Wert 0, womit vermutlich die Position gemeint ist.)
mjh11