aboutsummaryrefslogtreecommitdiff
path: root/libraries/EEPROM/examples/eeprom_read
diff options
context:
space:
mode:
authorMartino Facchin <facchinm@users.noreply.github.com>2015-03-24 09:24:00 +0000
committerMartino Facchin <facchinm@users.noreply.github.com>2015-03-24 09:24:00 +0000
commitf2debfa2555fe26f72832378d3fd7e78fe881e0c (patch)
tree56df9b9963f902cd9565eb4708cf3ff2dff22588 /libraries/EEPROM/examples/eeprom_read
parent8fcf5c94067a052c2c7ead3c2ebcd1381ed37888 (diff)
parentd8656b8c5249c9d06cd8ed96b2061759ab69b5bf (diff)
Merge pull request #2812 from facchinm/test_pr2794
EEPROM library V2
Diffstat (limited to 'libraries/EEPROM/examples/eeprom_read')
-rw-r--r--libraries/EEPROM/examples/eeprom_read/eeprom_read.ino24
1 files changed, 19 insertions, 5 deletions
diff --git a/libraries/EEPROM/examples/eeprom_read/eeprom_read.ino b/libraries/EEPROM/examples/eeprom_read/eeprom_read.ino
index ebf79d6..68c4ffc 100644
--- a/libraries/EEPROM/examples/eeprom_read/eeprom_read.ino
+++ b/libraries/EEPROM/examples/eeprom_read/eeprom_read.ino
@@ -31,13 +31,27 @@ void loop()
Serial.print(value, DEC);
Serial.println();
- // advance to the next address of the EEPROM
+ /***
+ 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.
+ ***/
address = address + 1;
-
- // there are only 512 bytes of EEPROM, from 0 to 511, so if we're
- // on address 512, wrap around to address 0
- if (address == 512)
+ if(address == EEPROM.length())
address = 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.
+
+ ++address &= EEPROM.length() - 1;
+ ***/
delay(500);
}