Has any other AVR got more RAM than the ATMega1284 (16k) ?

I have been looking at the AVR range (even a peek at the XMEGAs) and from what I can see the ATMega1284 has one of the highest Flash RAM sizes and THE Highest amount of RAM

Is this right ?

I am currently using pretty much all the RAM in my '1284 and am now considering 23LCV1024 SPI ram extensions

Is this an 'old' chip ?
Is it likely to get phased out soon ?

You can add external SRAM to the Atmega2560 (Arduino Mega), and there are shops online selling sram expansion boards for the Mega - you can get obscene amounts of memory on the mega like that (see section 9 of datasheet, "external memory interface").

That said:

Are you sure you're not doing something dumb that's wasting memory?
Are you storing things in SRAM that belong in flash or on external eeprom?
Is AVR the right platform, or is it something data intensive enough that an ARM would be more appropriate?

DrAzzy:
(see section 9 of datasheet, "external memory interface").

I shall take a look at that, thanks

Are you sure you're not doing something dumb that's wasting memory?
Are you storing things in SRAM that belong in flash or on external eeprom?
Is AVR the right platform, or is it something data intensive enough that an ARM would be more appropriate?

Its RAM to buffer bitmaps from SDcard in a 352*280px (12k) 'TVout' type project
Some of the bitmaps are going to be much much bigger and I need fast access
I have just ordered a 1Mbit SPI RAM, just hoping the access time is good

I have bought a few of the STM32 ARM boards, ultimately I will be converting what I am doing over to one of them, its faster and 20k RAM so I could get a much better resolution

I just wondered if there was some other chip I could use that had more onboard ram than the '1284 (the 2560 only has 8k)

1284 is highest built-in SRAM for an Atmega chip.

Xmega goes up to 32k

Yup, 16K SRAM in '1284P.
I have used it to hold a huge array (14625 bytes) of data that I blasted out over SPI with 20KHz refresh rate - every 50uS, 45 bytes were sent out in ~47.8uS.
45 lines of this:

spdr = array[x]; nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
spdr = array[x+1]; nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
spdr = array[x+2]; nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
:
:
spdr = array[x+44]; nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;

Then x was increased by 45 and the next burst started at the next 20KHz edge.
Interrupts were turned off so the micros() and/or millis() interrupts didn't screw things up.

Cheers Bob, I am hoping for some ultra fast reads (but I know its down to the card type/quality), but if I can reach speeds like what you are suggesting (in the tiny amount of time I have left when not writing PAL video) then I will be happy

There is a lot of experimentation here, and so far I have great results. SPI RAM chip ordered !! :slight_smile:

DrAzzy:
You can add external SRAM to the Atmega2560 (Arduino Mega), and there are shops online selling sram expansion boards for the Mega - you can get obscene amounts of memory on the mega like that (see section 9 of datasheet, "external memory interface").

Check out my KickStarter Project Memory Panes an expansion RAM Shield for Mega2560's.

It adds 1MB of RAM for those projects where 8KB is not enough.

I just need to find another 40 people who are interested in then next 20 days!

Chuck Todd

Very Nice Chuck !! Thats alot of RAM, and super fast access to on parallel bus, I dont have any pins left on my 1284 to do parallel, thats why I went for serial SPI. The internal ram (16k) is perfect for app + screen array, I dont think it would work having the screen array externally

You should check out this, http://www.atmel.com/Images/Atmel-42073-MCU_Wireless-ATmega2564RFR2-ATmega1284RFR2-ATmega644RFR2_Datasheet.pdf
http://www.atmel.com/Images/Atmel-8393-MCU_Wireless-ATmega256RFR2-ATmega128RFR2-ATmega64RFR2_Datasheet.pdf

An atmega2564 with 32K RAM!, if you don't mind the RF peripheral and only 3.3v operation.

http://www.digikey.com/product-search/en/rf-if-and-rfid/rf-transceivers/3539948?k=ATmega256RFR2

Is there a core for that? Is the pinout the same as the ATMega 2560? If so, you could switch the 2564 for the original chip on a Mega and use the radio! :o
EDIT I hit 500 posts!

mcnobby:
Very Nice Chuck !! Thats alot of RAM, and super fast access to on parallel bus, I dont have any pins left on my 1284 to do parallel, thats why I went for serial SPI. The internal ram (16k) is perfect for app + screen array, I dont think it would work having the screen array externally

The external RAM access imposes one wait state for each RAM access, so there is a noticeable difference between internal RAM and External RAM.

But, It is still much faster then SPI or I2C, and much easier to use.

Chuck.


Check out my Kickstarter Project Memory Panes an expansion RAM Shield for Mega2560's. It adds 1MB of RAM for those projects where 8KB is not enough.

mcnobby:
....
I am currently using pretty much all the RAM in my '1284 and am now considering 23LCV1024 SPI ram extensions

Is this an 'old' chip ?
Is it likely to get phased out soon ?

I believe the 23LC1024 chips are fairly new. Three years ago I built an Rduino pcb for the 328 chip, and all I found then was the 23K256 [32KBytes, 3.3V only]. A bit later I ran across the 23LC1024 when designing my own 1284 pcb.

I also bought a couple of these chips recently for a project, cheap and they've been around forever, but require a lot of rduino I/O pins for address lines.
http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_1927617_-1

oric_dan:
I also bought a couple of these chips recently for a project, cheap and they've been around forever, but require a lot of rduino I/O pins for address lines.
http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_1927617_-1

How much IO are we talking ? 16 pins ? more ?

I dont have much IO left, well none in fact after I use the one extra line I need for the SPI SRAM, unless I dump the IO I was saving for a display, keys, some jumpers etc etc :slight_smile:

mcnobby:
How much IO are we talking ? 16 pins ? more ?

I dont have much IO left, well none in fact after I use the one extra line I need for the SPI SRAM, unless I dump the IO I was saving for a display, keys, some jumpers etc etc :slight_smile:

About 30 I/O pins to connect all the address lines.

Riva:
About 30 I/O pins to connect all the address lines.

Ouch !! :slight_smile:

mcnobby:
How much IO are we talking ? 16 pins ? more ?

I dont have much IO left, well none in fact after I use the one extra line I need for the SPI SRAM, unless I dump the IO I was saving for a display, keys, some jumpers etc etc :slight_smile:

If your are getting tight on I/O and are already using SPI, why don't you use MCP23S17 to connect your LCD and keypad. This SPI IO expander has 16bit of IO and is addressable, it allows 8 to share the same CS pin. I modified LiquidCrystal. It wasn't hard.

So for one more CS pin you could potentially have 8x16 or 128 more pins available.

Chuck.


Check out my Kickstarter Project Memory Panes an expansion RAM Shield for Mega2560's. It adds 1MB of RAM for those projects where 8KB is not enough.

mcnobby:
How much IO are we talking ? 16 pins ? more ?

I dont have much IO left, well none in fact after I use the one extra line I need for the SPI SRAM, unless I dump the IO I was saving for a display, keys, some jumpers etc etc :slight_smile:

I provided the link last time so you could download the d/s, and see. You would likely need to design a pcb around the RAM chip requirements, not likely it could be patched into an current design. Much easier to stay with the SPI RAM chips --> on my Teensy3.1 pcb, I placed 2 of them. Lot of extra RAM for little added effort.

I will stick will SPI just for now, I have ordered a few of the 1MBit ones, if they dont perform as well as I need I shall change the design 'around the ram chip requirements'

Cheers :slight_smile: