What does the (non-volatile) note on the parameter values mean?
I can't find any documentation on it and its not behaving as I would expect (i.e. persisting the values when the power cycled).
What does the (non-volatile) note on the parameter values mean?
I can't find any documentation on it and its not behaving as I would expect (i.e. persisting the values when the power cycled).
non volatile means that values are kept even if the computer has a power supply failure.
Some examples
RAM looses its contents => volatile
EEPROM holds its contents => non-volatile
FRAM holds its contents => non-volatile
External storage e.g. SD card can be seen as non-volatile too,
although there the word persistent memory is more often used.
My (weak) understanding is that non-volatile parameters are typically stored in flash memory (or EEPROM) and remain constant unless explicitly modified by your code. These parameters are generally read-only at runtime.
Some systems bring them to RAM where they can be modified or in other system s if the memory location allows for writing. (frequent writes to non-volatile memory such as EEPROM or flash should be avoided due to the limited write cycles, so modifications are typically reserved for configuration data or state information that needs to persist across power cycles and don't change often).
In your picture, the next line are Status variables. Those, on the other hand, are stored in volatile memory like RAM, and their initial value is random unless explicitly initialized. They only persist during the current execution cycle, and their values are lost when the system resets or powers off.
So basically in my mind is see non-volatile parameters as constexpr stuff in C++ and Status variables as global variables
There is Flash Memory (as in ATmega328P MCU) which is also non-volatile.
Thanks, it seems we are all of the same optinion.
However on the Opta box that I have, everytime the power goes out all the settings return to there defaults.
Any thoughts? Bug, or am I doing something wrong?
Once I change a setting do I need to 'commit' it?
That seems in line with the fact that those are supposed to be read only. If you can modify them, it's up to your code to overwrite the value that was set at compile time and I don't know if that's possible and if so, how.
if you use those as initial values for parameters that can evolve, then they should probably be initialised variables (for the default first time value) and you need some sort of non volatile writable memory (as we do with EEPROM on arduino) to store the evolving values and take those into account at boot if they have been set.
So I don't think it's a bug, it's the nature of the beast.