Are you certain you need more than 2K of RAM? Have you used all the usual tricks of storing constants (including audio files) in PROGMEM?
- More than 4K of SRAM- More pins (I/O) than atmega328p- DIP package- Support in the IDE and libraries etc..====== Atmega644p or Atmega1284p... Here is a datasheet for the atmega1284p http://www.atmel.com/Images/doc8059.pdf. 644p and 1284p are essentially the same, just different flash/SRAM size.And here is the core/bootloader for the 1284p "family". https://github.com/maniacbug/mighty-1284p
Quote from: dc42 on Nov 17, 2012, 04:18 pmAre you certain you need more than 2K of RAM? Have you used all the usual tricks of storing constants (including audio files) in PROGMEM?Yup, I'm storing all font arrays in Progmem. Audio is on SD card and I'm using Adafruit's wave library, I'm not sure if that data can be stored it Eprom...
SD card is fine for storing the audio. But the Adafruit doc says the library for that wave shield needs around 600 bytes. So I'm puzzled that 2K isn't enough. Are you certain you have all of the actual font arrays in PROGMEM, not just some top-level pointers to them? Or are you knowingly using a lot of RAM for something else?
char *var = "HELLO";serial.print("HELLO");
Or the 1284, which I assembled on a breadboard here:http://www.gammon.com.au/forum/?id=11637This has somewhat more RAM (16 Kb) and somewhat more program memory (128 Kb).
Build your code with the verbose option so you can locate the .elf file.Then run nm on the .elf to see your symbols to be able to identifywhat is using your RAM.See the nm man page for more details buthere is a sample useful command to get you started:avr-nm -n -C -S *.elf > nm.outIn the nm output, the symbols with "B" near the bottom are the ones using up bss (RAM)(This won't show the literal strings).You can also get useful information from the objdump command.--- bill
It's not really a clone if it's a different chip, more like a spinoff.. I needed more ram when using the ENC28J60 ethernet chips. The TCP stack is in ram, rather than in the chip, so it takes most of the ram. So I used the Teensy++ 2.0, really cheap, uses the Arduino IDE just like I'm used to, and has like 8k of ram. Though nowadays, I'd use the Teensy 3.0, it's got 16k of ram and is cheap as dirt.
Thanks for the tip! I was wondering if it was possible to see how much RAM will program take before loading it to the chip. I assume all these options are not available via standard IDE tho? I couldn't find verbose, etc. What do I need to be able to run all these commands? Some kind of AVR studio? Will it be compatible with .ino/.pde sketches and libraries I have?
I was wondering if it was possible to see how much RAM will program take before loading it to the chip.
From a post I saw a week or so ago, I have a feeling that the new version 1.5 IDE does report the amount of RAM allocated statically by your code.Using dynamic memory allocation (including the String class) is a bad idea in small embedded systems.