best way to overcome SRAM limitations

I have been running into a SRAM limitation problem in my latest preject. I am building an embedded RSS reader however the size of SRAM available severely limits the size of the feeds I can access and display.

So far my options as I know are:

  1. use EEPROM (still limited)
  2. Use Flash (cumbersome to deal with strings)
  3. Use external storage

I am leading toward external storage but not sure what would work best. ANy ideas?

Which board are you using and how much RAM does it have?

You could experiment with compression techniques. Even something simple like a Huffman coder will compress plain text down with minimal code.

You could use some external hardware (custom shield?) with serial-addressable RAM.

And don't forget that there are lots of microcontroller development boards out there....sometimes once a solution starts to look really ugly the best way forward is to find the right platform. The Arduino can do a lot, but it can't do everything.

Check out our new shield:

I am using the atmega328.

Thanks. From your mention of serial addressable ram I found this:

which will give me 32K and a library is already written.

Let us know how it works... won't the Ethernet shield interfere with the SPI interface?

Let us know how it works... won't the Ethernet shield interfere with the SPI interface?

SPI is supposed to be an addressable interface - so as long as both it and the RAM aren't sharing the same address...?


Well Mavromatis you called it I have been running into problems with the ethernet shield and the SRAM.

From what I understand SPI uses a selection bit to select which device on the bus to communicate with. This should allow me to use both the SRAM and the ethernet shield. Right?

anyways when I do not use the ethernet shield I can use pin 9 as the chip select for the SRAM but it will not work with the Ethernet shield which uses pin 10 as its chip select.

I am stumped for now. I will spend more time looking into it tomorrow.

I think you can make it work, it will just require you to modify the ethernet library and maybe not connect some of the ethernet shield pins and use jumpers to connect them. I've had to do that until I created my own shields that made it work for my situation. I've had success with using a MEGA which brings 8k SRAM apparently adding more to the MEGA (ATmega1280 chipset) is easier.

I have connected the ethernet shield only sharing the 5V, 3.3V, GND,MISO,MOSI,SCK pins with the SRAM chip. Everything works until I connect the MISO pin to the ethernet shield.

any thoughts???

with a little research I believe that I found the answer to my problem.

The ethernet shield does not set its MISO signal to be high impedance when not selected so it cannot share the SPI bus with the other device.

I might have found a solution here:

so far using my example sketch (which only accesses the SPI SRAM) I am able to talk to it by connecting the SS pin of the SRAM to the PROG jumper (or place where a jumper should be) on the ethernet shield This effectively shuts off the SPI interface on the WIZNET and pulls MISO into a high impedance state.

now to try out a sketch which makes use of the ethernet shield as well........

Hey guys,

I developed a way of addressing multiple 23K256 32KB SRAM chips without adding additional time to the SPI transfer. The Arduino injects additional address bits into the data packet while the CPLD strips them out and enables the appropriate SRAM chip.

It's a quick and cheap way to add more than one 23K256 without sacrificing transfer time. It can be addressed for more than 256KB, up to 2MB... cost and device count being the significant limiting factor.