diff options
author | Martino Facchin <facchinm@users.noreply.github.com> | 2015-03-24 09:24:00 +0000 |
---|---|---|
committer | Martino Facchin <facchinm@users.noreply.github.com> | 2015-03-24 09:24:00 +0000 |
commit | f2debfa2555fe26f72832378d3fd7e78fe881e0c (patch) | |
tree | 56df9b9963f902cd9565eb4708cf3ff2dff22588 /libraries/EEPROM/examples/eeprom_write/eeprom_write.ino | |
parent | 8fcf5c94067a052c2c7ead3c2ebcd1381ed37888 (diff) | |
parent | d8656b8c5249c9d06cd8ed96b2061759ab69b5bf (diff) |
Merge pull request #2812 from facchinm/test_pr2794
EEPROM library V2
Diffstat (limited to 'libraries/EEPROM/examples/eeprom_write/eeprom_write.ino')
-rw-r--r-- | libraries/EEPROM/examples/eeprom_write/eeprom_write.ino | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/libraries/EEPROM/examples/eeprom_write/eeprom_write.ino b/libraries/EEPROM/examples/eeprom_write/eeprom_write.ino index c047887..f07446c 100644 --- a/libraries/EEPROM/examples/eeprom_write/eeprom_write.ino +++ b/libraries/EEPROM/examples/eeprom_write/eeprom_write.ino @@ -8,31 +8,51 @@ #include <EEPROM.h> -// the current address in the EEPROM (i.e. which byte -// we're going to write to next) -int addr = 0; +/** the current address in the EEPROM (i.e. which byte we're going to write to next) **/ +int addr = 0; -void setup() -{ -} +void setup(){ /** Empty setup. **/} void loop() { - // need to divide by 4 because analog inputs range from - // 0 to 1023 and each byte of the EEPROM can only hold a - // value from 0 to 255. + /*** + Need to divide by 4 because analog inputs range from + 0 to 1023 and each byte of the EEPROM can only hold a + value from 0 to 255. + ***/ + int val = analogRead(0) / 4; - // write the value to the appropriate byte of the EEPROM. - // these values will remain there when the board is - // turned off. + /*** + Write the value to the appropriate byte of the EEPROM. + these values will remain there when the board is + turned off. + ***/ + 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); } |