I2CWRITE writing Strings to EEPROM


Closed Thread
Results 1 to 10 of 10
  1. #1
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762

    Default I2CWRITE writing Strings to EEPROM

    Undocumented Feature?

    On one of my current projects I had the challenge to store about 300 strings
    (up to 20 chars each)

    The strings contain system messages
    and a (very) complex menu structure.

    I decided to store the strings in an external EEPROM (24FC512)
    which was already on board for data logging.

    After having done some first tests I had to realize that
    every time when I had a firmware update that required changes in Menu text or system messages
    I had to take the EEPROM off the board, reprogram it and plug it back.

    This is certainly nothing a customer could do.

    So I thought I needed some kind of Loader for the EEPROM.

    The trick is:

    Write the string to the EEPROM:

    (The PBP Manual doesn't tell this is possible)

    IC2WRITE SDA, SCL, ADR, [20,"This is my String #1"]
    where 20 is the length of the srting.

    My finding is:
    This "Page Write" works great as long as ADR is a multiple of 32.
    (haven't tried odd multiples of 16 as my Strings are up to 20 bytes)

    Next step is to "compress" the Data we have just written to the EEPROM.
    (We used up 32 bytes for 21 Bytes of information)

    Read the EEPROM content bytewise and write it back bytewise
    and use a multilpe of 21 for the starting address of a new string.

    And finally (if you want to) fill up all "unused" locations with $FF

    So in case the Strings in EEPROM are to be updated along with Firmware of the PIC
    all the customer needs to do is:
    Flash the device twice,
    1st with the EEPROM Loader that does the EEPROM update
    and then with the latest Firmware.

    regards

    Ralph
    Last edited by NavMicroSystems; - 18th December 2004 at 01:06.

  2. #2
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Hi Ralph, That's exactly what i do in my currents project. This is really working great. I'm to develop an user interface to flash directly the target PIC/EEPROM with a simple clic, everything else will be done by software. I'll let you know as soon i'll finish it... must have time before

    regards
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  3. #3
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762


    Did you find this post helpful? Yes | No

    Default

    Originally posted by mister_e
    ... I'm to develop an user interface to flash directly the target PIC/EEPROM with a simple clic, everything else will be done by software. I'll let you know as soon i'll finish it... must have time before

    regards
    Sounds good !

  4. #4
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762


    Did you find this post helpful? Yes | No

    Default

    Hi Steve,

    any progress with your "FlashLoader" ?

    regards

    Ralph

  5. #5
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Not at this point, many stuff to be finished before... still need time.

    i've plan a program to edit EEPROM that allow to move/insert/delete EEPROM addresses. Handy IMO.

    I've a snippet that work, I'll let you know as soon as it's finished.
    Last edited by mister_e; - 29th January 2005 at 21:41.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  6. #6
    Join Date
    Feb 2005
    Location
    Bellevue
    Posts
    125


    Did you find this post helpful? Yes | No

    Question Problem with wasted Space in Page Writing to EEPROM

    Using the same 25LC512 EEPROMs, I have a similar issue I think...

    I write 36 bytes per record which I get every .25 seconds.. maybe faster. I want to write these to EEPROM, but not take a whole page (128b). I understand I can't write to addresses in the size I want, ie 0, 36, 72, 108, 144, etc, but rather only 0, 128, 256, etc.... This leads to massive waste of space

    How does one make use of the unused EEPROM space? I can't write byte at a time because it takes too long...

    1. If I page write to anything from 0 to 128 will it overrite that page?

    2. Should I be thinking about a way to save data into a string that is 128b long before writing it? Like perhaps creating a 'superstring' that has 3 x 36 bytes, and write that (only wasting 20b per page?)

    Thanks,

    Tom

  7. #7
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762


    Did you find this post helpful? Yes | No

    Default

    TOM,

    you haven't told us all details,
    but let's do some math based on the info we have:

    36 bytes per record
    one record every 250 ms
    EEPROM size 512kbit

    You can store about 1770 records
    It will take about 7.5 minutes to completely fill up your EEPROM.

    Probably FRAM would be a better choice.
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  8. #8
    Join Date
    Feb 2005
    Location
    Bellevue
    Posts
    125


    Did you find this post helpful? Yes | No

    Default

    Ralph:

    Be happy to fill in any gaps, I was trying to be as complete as I could without using too much junk..

    You are right about 7.5 min per chip if I can not waste any space.. Two chips = 15 min at that rate, at 1 second update much more.

    I am not familiar with FRAM.. How is it used? Does PBP work easily with it?

    Tom

  9. #9
    Join Date
    May 2004
    Location
    New England
    Posts
    164


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Tom Gonser
    I am not familiar with FRAM.. How is it used? Does PBP work easily with it?
    Tom
    The FRAM is great! Virtually unlimited write cycles, writes data as its clocked in with no write delay, single byte writes, available in SPI, I2C etc.
    Check out Ramtron.

    Arch

  10. #10
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762


    Did you find this post helpful? Yes | No

    Default

    TOM,

    FRAM is handeled just like EEPROM (I2C)

    have a look at www.ramtron.com
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



Similar Threads

  1. Can't read sequential addresses in external EEPROM
    By tjkelly in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 18th February 2010, 14:46
  2. Problem with I2C EEPROM addressing
    By Atom058 in forum General
    Replies: 14
    Last Post: - 3rd November 2009, 03:17
  3. My I2CWRITE - timings and tricks
    By FinchPJ in forum Code Examples
    Replies: 5
    Last Post: - 3rd March 2008, 21:40
  4. Code Problem - Strings/ LCD/ internal EEPROM
    By jorge in forum mel PIC BASIC Pro
    Replies: 14
    Last Post: - 4th February 2008, 20:24
  5. word variable to 25lc640
    By TONIGALEA in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 6th July 2004, 19:59

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts