Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Arduino EEPROM Understanding

  1. Oct 23, 2014 #1
    Hi everyone, so I was relooking into the external EEPROM problem I had earlier for the Arduino, and am thinking that I am missing even just a basic understanding of it. So I'm using this https://www.sparkfun.com/products/525 EEPROM which should have 256kbits of space.
    I am hoping to save 4 pieces of data, all of which is 4 digits or below (for example 256, 830, 180, 0900) but I am saving a multitude of this data.
    I am assuming that each piece of that data is an integer, an according to here http://arduino.cc/en/Reference/int the Arduino saves a 2 byte, or or 16bit value per integer.

    My assumption is that, 16bits*4= 64 bits.
    256kbits/64bits = 4000 integer values

    Is this correct to assume I should be able to save 4000 integer values onto the EEPROM if I program it correctly?
  2. jcsd
  3. Oct 23, 2014 #2
    Have you try read the datasheet ? "256K of memory is organized as 32,768 words by 8 bits"
  4. Oct 23, 2014 #3


    User Avatar

    Staff: Mentor

    There is a much more efficient way to store your data, depending on what you want to do with it.

    Will you be adding or subtracting any of those numbers? Are you wanting to represent the positive integers 0000-9999? Where does this data come from, and what are you going to do with it?
  5. Oct 27, 2014 #4
    Hi, thanks for your answer, basically just store and open, so no subtraction or changing or anything, but just store a large array of data of which I can read from later and then delete them all and store again.
    Also yes positive integers between 0000 to 9999 is correct, and hoping to just read those values, off it later.

    Although for the 0900 value
    (for example 256, 830, 180, 0900)
    its actually a time, but I would prefer it to be based off the time_t (32 bit signed integer) as I would much prefer to save it as the Unix time based number, but at the moment I'm just getting what I can get.

    I would like to store as much as possible though, I pretty much obtain these 4 values once a minute, and I would like to store about 3 days worth, but at the moment I'm really just hoping to get as much as I can with that as well.

    Thanks heaps for your messages.
  6. Oct 28, 2014 #5


    User Avatar

    Staff: Mentor

    You could compress further than this, but I would probably just start by using 2 bytes for each number (one nibble per digit).

    Also, be sure to read up on the "endurance" of the EEPROM memory that you are using. Most non-volatile memories have a finite number of times they can be re-written (like maybe 10,000 times, depending on the temperature).
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Similar Discussions: Arduino EEPROM Understanding
  1. Eeprom 27c2001 /p (Replies: 1)