Go Down

Topic: External Memory Interface library for the Mega. (can someone review my code?) (Read 2203 times) previous topic - next topic


  I've just finished a library to use the External Memory Interface module on the Mega1280/2560. You can use it to access external memory via parallel address/data bus. The address bus width is from 8-bits upto 16-bits and the data bus width is 8-bits. You'll need a 74AHC573 transparent latch to multiplex the Port A address/data lines. I've tested the library with ti's bq3287EA RTC and an Atmel AT28HC256 EEPROM both connected. I could access the RTC as the lower sector and the EEPROM as the upper sector. The library has four functions; enable(), disable(), read() write(). The library can read/write to any valid data type (including string literals) to any external memory address. The lirary zip file is on google code here: http://code.google.com/p/arduino-exmem-library/downloads/list and attached below. If anyone can review my code or better yet test it out and let me know what they think, I would apreciate it. Enjoy! ;)

Thanks for your time,


Um.  Why?  I thought the whole point of the "external memory interface" (as opposed to using random IO ports to access a memory device) is that the memory appears in the AVR address space, and can be accessed via normal C code.  There's a good summary accompanying the Rugged RAM expansion module: http://ruggedcircuits.com/html/megaram.html

And notes in avr-libc on how to set things up so that malloc() and friends will use it:  http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_ext_ram

I guess your code handles the bank boundary "invisibly."  But at great computational cost...


Thank you for the library.  It is very nearly what I need to access some non memory devices only available with multiplexed address/data busses.  http://mektronixtech.com/  My application uses 4 of these chips.  Using malloc in this case would be a disaster.  I need to read from and write to specific addresses.  With partial addressing to control the CS lines of each chip, the code I am left to write is minimal.  Any reason this wouldn't work with teensy2++?  The chip is different, an AT90USB1286, but I think the register defines are the same.  Leonardo might work too. 


I looked at the data sheet for the AT90USB1286 and the register names are the same so it should work.


Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131