Shop OBEX P1 Docs P2 Docs Learn Events
EEPROM size — Parallax Forums

EEPROM size

Does anyone know of any common Propeller boards that have an EEPROM larger than 64K bytes? I know that the Hydra has a 128K byte EEPROM. Are there any others with large EEPROMs?

Also, how safe is it to use the EEPROM as scratch space. I'm thinking of storing temporary files in EEPROM in a simple BASIC interpreter I'm working on. The idea would be to write EEPROM once every time someone enters the "run" command. I think an EEPROM location can be written at least a million times so I would think it would be difficult to wear one out just by typing interactive commands.

Comments

  • Oddly, it says Publison responded to this thread but I don't see his message.
  • jmgjmg Posts: 15,173
    David Betz wrote: »
    Does anyone know of any common Propeller boards that have an EEPROM larger than 64K bytes? I know that the Hydra has a 128K byte EEPROM. Are there any others with large EEPROMs?

    Not that I've seen mentioned.
    The largest i2c memory in TSSOP looks to be 1MBit, and 2MBit is in SO8 only
    David Betz wrote: »
    Also, how safe is it to use the EEPROM as scratch space. I'm thinking of storing temporary files in EEPROM in a simple BASIC interpreter I'm working on.

    Interesting, where does this sit next to PropBasic and the venerable BasicStamps ?

    David Betz wrote: »
    The idea would be to write EEPROM once every time someone enters the "run" command. I think an EEPROM location can be written at least a million times so I would think it would be difficult to wear one out just by typing interactive commands.

    The other possible issue, is the erase/write delay times, but if it is "run" only, that sounds one-off ?

  • David Betz wrote: »
    Oddly, it says Publison responded to this thread but I don't see his message.

    Yea, I got the wrong part numbers, then I got a phone call. Sorry.


  • The 24XX1026 EEPROMs are 128k and pin-compatible with the 24XX512 and 24XX256. They are essentially two 512's on one chip, with A0 being a NC pin (The A0 bit of the device adress is used to selct the upper/lower half of the eeprom). So on any board where the EEPROM is socketed/easily changed, you could swap one of those in.

    But it would be good practice to support EEPROMs at other adresses, or SPI SRAM (unless you need nonvolatile storage).
  • jmg wrote: »
    David Betz wrote: »
    Also, how safe is it to use the EEPROM as scratch space. I'm thinking of storing temporary files in EEPROM in a simple BASIC interpreter I'm working on.

    Interesting, where does this sit next to PropBasic and the venerable BasicStamps ?
    I suspect it will be faster than the BASIC Stamps but way slower than PropBASIC. It compiles into byte codes that are interpreted by a PASM VM. It's more like Spin in that regard than it is like PropBASIC which is a native compiler. On the other hand, my plan is to have it run on the Propeller and it will certainly be faster than FemtoBASIC. Really, this is just a toy for me at present. I don't know if it is practical yet. In another comparison, it is likely to be much slower than Tachyon Forth.
  • jmg wrote: »
    David Betz wrote: »
    Does anyone know of any common Propeller boards that have an EEPROM larger than 64K bytes? I know that the Hydra has a 128K byte EEPROM. Are there any others with large EEPROMs?

    Not that I've seen mentioned.
    The largest i2c memory in TSSOP looks to be 1MBit, and 2MBit is in SO8 only
    Would it be possible to, say, remove the EEPROM from a QuickStart board and replace it with a 1MBit part?

  • Wuerfel_21 wrote: »
    The 24XX1026 EEPROMs are 128k and pin-compatible with the 24XX512 and 24XX256. They are essentially two 512's on one chip, with A0 being a NC pin (The A0 bit of the device adress is used to selct the upper/lower half of the eeprom). So on any board where the EEPROM is socketed/easily changed, you could swap one of those in.

    But it would be good practice to support EEPROMs at other adresses, or SPI SRAM (unless you need nonvolatile storage).
    I could certainly support SPI SRAM or SPI flash or even SD card. Now that you mention it, SD card might be the best choice since the ActivityBoard has an SD socket as does Cluso's cool P8XBlade2.

  • Who doesn't have SD cards? ... Well that's that then...
    But seriously, the problem with SD's is that they're pretty complicated to access and IIRC takes up quite a chunk of RAM.

    Also, on the EEPROM matter, there's a cool thing about those 128k ones: if pins 28/29 are accessible, you can just hook a 24LC512 or whatever (64k) with A0 tied high and (assuming the board itself has 64k) you get something that is mostly identical to a single 128k chip. This principle can be expanded for up to 8 chips (or 4 128k chips), so up to 512k of EEPROM can be controlled by just two pins. At the same time as copious amounts of I/O's, clocks and whatnot. I like I²C.
  • Cluso99Cluso99 Posts: 18,069
    David,
    I could always build one with 128KB EEPROM (I know I have at least 1 !Mb eeprom in mydraw of goodies).

    But honestly, using SD is likely the easiest because you are not restricted to size, you have a little OS so you can name the files, and SD cards do wear levelling too.

    Factually, it would cost me more to use a 128KB EEPROM than 64KB, than it does to add the microSD socket. Of course the SD card is not included, but they can be had for A$6.00 (~US$4.50) for 8GB SanDisk with microSD/SD adapter.

    BTW My latestOS can read/program the lower or upper EEPROM from/to a file on SD FAT16/32. I was trying to get Tachyon to work with my P8XBlade2, but got distracted.
  • Cluso99 wrote: »
    David,
    I could always build one with 128KB EEPROM (I know I have at least 1 !Mb eeprom in mydraw of goodies).

    But honestly, using SD is likely the easiest because you are not restricted to size, you have a little OS so you can name the files, and SD cards do wear levelling too.

    Factually, it would cost me more to use a 128KB EEPROM than 64KB, than it does to add the microSD socket. Of course the SD card is not included, but they can be had for A$6.00 (~US$4.50) for 8GB SanDisk with microSD/SD adapter.

    BTW My latestOS can read/program the lower or upper EEPROM from/to a file on SD FAT16/32. I was trying to get Tachyon to work with my P8XBlade2, but got distracted.
    Thanks for the offer of a 128KB P8XBlade2 but this is just an idea at this point. I asked the question because I wanted to know if there were any alternatives to the Hydra (which has been discontinued) if I end up finding that 64KB is too small. My first goal would be to get this working in 64K since most Propeller boards have that much EEPROM. Whether I can even make this work remains to be seen. My idea is to try to use CMM with overlays instead of XMM to save hub memory for the user program. I won't know if this is going to work for a while since I have to refactor all of my code to work with overlays. Even then, I may find that I haven't saved enough space for this to be practical. Then, on top of all of that, there really isn't much need for yet another version of BASIC for the Propeller. I'm really doing this for my own amusement as much as anything else. I've always liked building tiny languages and I love the idea of an onboard language that can make use of multiple COGs.

  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2016-10-07 02:14
    A 24M01 (CAT24M01, M24M01 etc) is my goto 1Mb I2C eeprom that I use in some systems although mostly the 512kb are enough. But it pays to have fast I2C routines to access these at 1MHz speeds plus make use of the 128 byte page size for programming. Although I don't run bytecode from eeprom I do compact the dictionary in blocks of typically 384 bytes as it is very inefficient to read in random bytes from eeprom. So consider reading in blocks of eeprom much like we do with SD cards.

    btw, if you use microSD there is a way of soldering these directly to a board as a "chip" rather than using a socket.
  • A 24M01 (CAT24M01, M24M01 etc) is my goto 1Mb I2C eeprom that I use in some systems although mostly the 512kb are enough. But it pays to have fast I2C routines to access these at 1MHz speeds plus make use of the 128 byte page size for programming. Although I don't run bytecode from eeprom I do compact the dictionary in blocks of typically 384 bytes as it is very inefficient to read in random bytes from eeprom. So consider reading in blocks of eeprom much like we do with SD cards.

    btw, if you use microSD there is a way of soldering these directly to a board as a "chip" rather than using a socket.
    Thanks for the suggestions. I'll be sure to read blocks rather than individual bytes.

  • David Betz wrote: »
    A 24M01 (CAT24M01, M24M01 etc) is my goto 1Mb I2C eeprom that I use in some systems although mostly the 512kb are enough. But it pays to have fast I2C routines to access these at 1MHz speeds plus make use of the 128 byte page size for programming. Although I don't run bytecode from eeprom I do compact the dictionary in blocks of typically 384 bytes as it is very inefficient to read in random bytes from eeprom. So consider reading in blocks of eeprom much like we do with SD cards.

    btw, if you use microSD there is a way of soldering these directly to a board as a "chip" rather than using a socket.
    Thanks for the suggestions. I'll be sure to read blocks rather than individual bytes.
    Alternatively you could keep the device active by issuing acks and not stopping for sequential bytes but as soon as you have to jump you have to do another dummy nak read and restart ( start,device+wr,address(2),start,device+rd). But this will only work while the bus is not used for anything else.

  • Peter, okay, what's a good way to solder a microSD directly to a PC board? Interesting idea. I have a RFQ that requires that all memory be soldered and conformally coated. That might work.
  • Cluso99Cluso99 Posts: 18,069
    Just treat the microsd card like any DFN/QFN chip
  • Two ways to solder it with the first being direct smd pads with solder paste on the microSD card as well as the pcb while the other way uses large enough vias over the microSD contacts to push a fine iron tip down for manual soldering. Just watch the heat and tin or flux the card contacts first if using a soldering iron. TTTT I've never actually done with microSD but I keep it in mind as I have used similar methods before. A quick Google reveals somebody has done this for production.
  • Cluso99Cluso99 Posts: 18,069
    edited 2016-10-07 07:02
    -double posted-
  • David,
    here you have some fram eeprom replacements:
    128Kx8 http://www.mouser.com/ds/2/100/001-84463_FM24V10_1_MBIT_128K_X_8_SERIAL_I2C_F-RAM-476703.pdf
    64Kx8 http://www.mouser.com/ds/2/100/FM24V05_512-Kbit_64_K_8_Serial_I2C_F-RAM_Datasheet-477686.pdf
    32Kx8 http://www.mouser.com/ds/2/100/001-90839_FM24V02A_256_Kbit_32K_8_Serial_I2C_F_RAM-773533.pdf

    They are 3.4MHz I2C fram devices so with no-delay writes. I am pretty sure they can replace the eeprom because I am using with success the FM31L278 (which has also an additional built-in RTC) to boot the P1.
    Having the fram as boot device allows for writes also in the first 32K space (on right offset places) to update the values and saves code to restore presets, because at next reboot all the values are already the right ones (the latest ones).

    The other way, with larger eeprom, you do not need to write to it every time. If you are not going to reboot the prop you can store the values in prop's ram. A simple voltage divider on supply prior to regulator and bigger caps can act as a power-fail interrupt and the caps can provide sufficient energy to store the data to the eeprom at this time.
Sign In or Register to comment.