Maximizing EEPROM Storage Capacity for Arduino: A Basic Understanding

Click For Summary
SUMMARY

This discussion focuses on maximizing EEPROM storage capacity for Arduino using the SparkFun 256kbit EEPROM. The user aims to store four 4-digit integers, leading to an assumption of being able to save 4000 integer values based on a calculation of 256kbits divided by 64 bits. However, it is advised to consider more efficient data storage methods, such as using 2 bytes per number to represent each digit, and to be aware of the EEPROM's endurance limitations, which may allow for approximately 10,000 write cycles.

PREREQUISITES
  • Understanding of Arduino programming and data types
  • Familiarity with EEPROM memory architecture
  • Knowledge of data compression techniques
  • Awareness of EEPROM endurance and write cycle limitations
NEXT STEPS
  • Research efficient data storage methods for Arduino EEPROM
  • Learn about data compression techniques applicable to integer storage
  • Investigate the endurance specifications of different EEPROM models
  • Explore the use of time_t data type for storing time-based values
USEFUL FOR

Arduino developers, embedded systems engineers, and anyone looking to optimize data storage in non-volatile memory systems.

trustnoone
Messages
17
Reaction score
0
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?
 
Engineering news on Phys.org
Have you try read the datasheet ? "256K of memory is organized as 32,768 words by 8 bits"
 
trustnoone said:
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?

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?
 
berkeman said:
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?

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.
 
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).
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 54 ·
2
Replies
54
Views
5K
  • · Replies 4 ·
Replies
4
Views
16K