External RAM

Hello,

I was looking at the 23K256 and it library and was wondering if I could hookup more than one?

If I cant is there an I2C RAM available? I would need large size RAM.

Do you mean RAM or EPROM ?

What do you want to store in it ?

RAM, I will be storing temporary data for files.

How about 23A640 from microchip?

how much do you need? the mega has a built in interface for up to 64KB external RAM.

I'm not sure that an I2C device could be used as ram, usually the interface is over parralell, however there are some memory devices you can use for storing data, like an EEPROM

What do you need it for? Temporary data for files could be thrown into an eerom quite easily then fetched later. Also what do you mean "files"?

How would you hook up external RAM to the mega?

And I would be using the RAM to make large buffers to be later written to an SD, because I need to write memory as quick as possible.

it is in the atmega1280 datasheet, under "external memory interface".

page 27, to be exact.

It will appear to you as an extension of the arduino's normal ram, so you can just type int reallybigbuffer[20000]

I'm not sure that an I2C device could be used as ram

sure it can, they have I2C and spi ram chips out there, but you address it like a peripheral , it doesnt automatically get counted in with the system ram

so its more or less like a volatile EEPROM

If you do add RAM to the arduino would you need to modify the code in the app to use it like you do if you use a mega with more flash memory eg 644P?

How can the ram extension be hook up to the mega? It uses pins PC0-PC7, are those pins being used?

If you look at the image on page 4, you will see the ADxx and Axx pins.

They control the address and data ports.

You need an external 8-bit latch. The CPU places the value for A0:7 on PA and latches the value into the latch by pulsing ALE (PG2). It then places the value for A8:15 onto PC and writes/reads to/from the memory chip by pulsing RD (PG1) and reading the value on PA or placing a value on PA and pulsing WR (PG0).

You can only address 64k with this method but it's easy to select as many 64k pages as you like by using a few extra IO pins.

So it uses Analog 8-15 right?
How could I hook this up?
What chip do I need to use?

No, not analogue.

They are just named that in terms of the external RAM access.

They are on port PA and PC and a few other pins as mentioned previously.

There was a similar thread to this a few weeks back that I put the port codes are arduino mega pins corresponding to the various pins on a standard parralel SRAM module.

Here is the link:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1278590107

Though if you feel like breaking out the soldering iron you could replace the 1280 with a 2560 which I believe has 16K of ram (if memory serves me well, you should check)

/me

So it uses Analog 8-15 right?

Nope, there's no way they would lose analogue pins for this function. On the 1280 PA is not analogue.

There is a block diagram on page 28 of the 1280 spec sheet, but here's an expanded version.

How could I hook this up?

See above

What chip do I need to use?

Any of the 74xx373/573 variaties.

Does the ATmega 328 support this kind of modification? By that I mean can I add RAM in this fashion to a project built around the 328? If so, what is the limit for maximum addressable memory size? 64k? What would it take in terms of programming to implement such a modification? This could be very useful for a project I am working on. Thanks in advance for any advice.

Pat

The 328 does not support any form of external memory. You could always rig something up yourself using 19 of the available 23 IO lines but it would be slow as you'd have to write code to toggle the bits.

The mega162 does support external RAM and it comes in a 40-pin DIP so it's easy to work with and you'll have plenty of spare pins.