aboutsummaryrefslogtreecommitdiff
path: root/libraries/EEPROM/examples/eeprom_update
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/EEPROM/examples/eeprom_update')
-rw-r--r--libraries/EEPROM/examples/eeprom_update/eeprom_update.ino23
1 files changed, 20 insertions, 3 deletions
diff --git a/libraries/EEPROM/examples/eeprom_update/eeprom_update.ino b/libraries/EEPROM/examples/eeprom_update/eeprom_update.ino
index e0e18d8..dbf05ec 100644
--- a/libraries/EEPROM/examples/eeprom_update/eeprom_update.ino
+++ b/libraries/EEPROM/examples/eeprom_update/eeprom_update.ino
@@ -38,15 +38,32 @@ void loop()
The function EEPROM.update(addr, val) is equivalent to the following:
if( EEPROM.read(addr) != val ){
- EEPROM.write(addr, val);
+ EEPROM.write(addr, val);
}
***/
- /** advance to the next address. there are 512 bytes in the EEPROM, so go back to 0 when we hit 512. **/
+ /***
+ Advance to the next address, when at the end restart at the beginning.
+
+ Larger AVR processors have larger EEPROM sizes, E.g:
+ - Arduno Duemilanove: 512b EEPROM storage.
+ - Arduino Uno: 1kb EEPROM storage.
+ - Arduino Mega: 4kb EEPROM storage.
+
+ Rather than hard-coding the length, you should use the pre-provided length function.
+ This will make your code portable to all AVR processors.
+ ***/
addr = addr + 1;
- if (addr == 512)
+ if(addr == EEPROM.length())
addr = 0;
+
+ /***
+ As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an
+ EEPROM address is also doable by a bitwise and of the length - 1.
+
+ ++addr &= EEPROM.length() - 1;
+ ***/
delay(100);
}