Shop OBEX P1 Docs P2 Docs Learn Events
Best way to store a string in a SPI Eeprom? — Parallax Forums

Best way to store a string in a SPI Eeprom?

ArchiverArchiver Posts: 46,084
edited 2003-08-11 20:00 in General Discussion
In the App-kit 8K-Eeprom program, the BS2 writes and retrieves a
value from a given address.

Is there a fast code of sending a whole string (not passing the
block off course) and then retrieve it the same way?

I use BS2p.

Thanks for some solutions.

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2003-08-10 00:51
    Since you're using the BS2p you might consider a change to I2C memory,
    as the built-in I2C commands will simplify EEPROM access.

    -- Jon Williams
    -- Applications Engineer, Parallax
    -- Dallas Office


    Original Message
    From: stein_frostad [noparse]/noparse]mailto:[url=http://forums.parallaxinc.com/group/basicstamps/post?postID=DTel8LJshn7wO3Kud6OJ92Zy6j1xixm0U4WDOfueUhz1oyTNBSJOq5jx5vJKyplCp1eqJIFC54RmGfQF_I0t8yraabI]Stein_Frostad@m...[/url
    Sent: Saturday, August 09, 2003 5:16 PM
    To: basicstamps@yahoogroups.com
    Subject: [noparse][[/noparse]basicstamps] Best way to store a string in a SPI Eeprom?


    In the App-kit 8K-Eeprom program, the BS2 writes and retrieves a
    value from a given address.

    Is there a fast code of sending a whole string (not passing the
    block off course) and then retrieve it the same way?

    I use BS2p.

    Thanks for some solutions.




    To UNSUBSCRIBE, just send mail to:
    basicstamps-unsubscribe@yahoogroups.com
    from the same email address that you subscribed. Text in the Subject
    and Body of the message will be ignored.


    Your use of Yahoo! Groups is subject to
    http://docs.yahoo.com/info/terms/




    This message has been scanned by WebShield. Please report SPAM to
    abuse@p....
  • ArchiverArchiver Posts: 46,084
    edited 2003-08-10 05:14
    Hello,

    Don't forget that some I2C EEPROMs have page write buffer boundaries. For
    example the Microchip 24LC32A has a page write buffer of 32 bytes. If you
    start writing at address 16 then you can only write 16 bytes before the
    page write buffer rolls over. To use the whole buffer you have to start
    writing at 32 bytes boundaries (0, 32, 64, etc..).

    This caused me quite a bit of headache when I first tried using one. I
    skimmed over it when I read the spec sheet!

    Chuck Chargin Jr.

    At 04:51 PM 8/9/2003 -0700, you wrote:
    >Since you're using the BS2p you might consider a change to I2C memory,
    >as the built-in I2C commands will simplify EEPROM access.
    >
    >-- Jon Williams
    >-- Applications Engineer, Parallax
    >-- Dallas Office
    >
    >
    >
    Original Message
    >From: stein_frostad [noparse]/noparse]mailto:[url=http://forums.parallaxinc.com/group/basicstamps/post?postID=LrY5MdfWrqQ-Zm7x0DNc2yuVhQXO09IahPG6hZf1N3v01_w_LfA6lgaILgEMaJyQjkKVjmE6gaLPMtt9zWSOU_JDahY]Stein_Frostad@m...[/url
    >Sent: Saturday, August 09, 2003 5:16 PM
    >To: basicstamps@yahoogroups.com
    >Subject: [noparse][[/noparse]basicstamps] Best way to store a string in a SPI Eeprom?
    >
    >
    >In the App-kit 8K-Eeprom program, the BS2 writes and retrieves a
    >value from a given address.
    >
    >Is there a fast code of sending a whole string (not passing the
    >block off course) and then retrieve it the same way?
    >
    >I use BS2p.
    >
    >Thanks for some solutions.
    >
    >
    >
    >
    >To UNSUBSCRIBE, just send mail to:
    > basicstamps-unsubscribe@yahoogroups.com
    >from the same email address that you subscribed. Text in the Subject
    >and Body of the message will be ignored.
    >
    >
    >Your use of Yahoo! Groups is subject to
    >http://docs.yahoo.com/info/terms/
    >
    >
    >
    >
    >This message has been scanned by WebShield. Please report SPAM to
    >abuse@p....
    >
    >
    >
    >
    >To UNSUBSCRIBE, just send mail to:
    > basicstamps-unsubscribe@yahoogroups.com
    >from the same email address that you subscribed. Text in the Subject and
    >Body of the message will be ignored.
    >
    >
    >Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
  • ArchiverArchiver Posts: 46,084
    edited 2003-08-10 12:39
    I'm impressed of the inbuilt functions in BS2p. I try to utilize
    them as often as possible.

    The data flash AT45DB041 from ATMEL, is a SPI memory holding 2048
    pages * 256 bytes (0.54 Meg) and also has two 264-bytes SRAM data
    buffers. I was hoping to try out this circuit in the future, but
    first I should understand the use of the regular SPI Eeprom. In fact
    I have not even checked the price or accessibility from ATMEL, but
    my regular IC-shop doesn't sell ATMEL. I know that Tracy Allen has
    written that he has used this memory.

    I was asking how to use the shiftout/shiftin to store and retrieve
    string to the Eeprom.

    This DEMO-code works, but is there a better way instead of clocking
    in the char one byte at the time. Then perhaps I don't have to send
    one char at the time to the LCD.

    CON and VAR from 8K Eeprom APP-kit
    EEwrite:
    low CS ' Activate the EEPROM.
    shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]WriteEE]' Send write opcode.
    Eeaddr=8191
    For Index= 0 to 13
    EEaddr=EEaddr+1
    Gosub Send_addr ' Send the address.
    Lookup index,[noparse][[/noparse]"This is a test"],Result
    shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]Result] ' Send the data.
    Next
    high CS ' Deactivate the EEPROM.
    return ' Return to program.

    EEread:
    low CS ' Activate the EEPROM.
    shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]ReadEE] ' Send the read opcode.
    EEaddr=0
    For Index=0 to 13
    EEaddr=EEaddr+1
    Gosub Send_addr ' Send the address.
    shiftin DATA_N,CLK,msbpre,[noparse][[/noparse]INdata]' Get the data.
    Debug Indata
    LCDOUT 1,MoveCrsr+Index,[noparse][[/noparse]INdata]' LCD must then show one
    char at the time.
    Next
    high CS ' Deactivate the EEPROM.
    return ' Return to program.

    --- In basicstamps@yahoogroups.com, "Chuck Chargin Jr."
    <cchargin@e...> wrote:
    > Hello,
    >
    > Don't forget that some I2C EEPROMs have page write buffer
    boundaries. For
    > example the Microchip 24LC32A has a page write buffer of 32
    bytes. If you
    > start writing at address 16 then you can only write 16 bytes
    before the
    > page write buffer rolls over. To use the whole buffer you have to
    start
    > writing at 32 bytes boundaries (0, 32, 64, etc..).
    >
    > This caused me quite a bit of headache when I first tried using
    one. I
    > skimmed over it when I read the spec sheet!
    >
    > Chuck Chargin Jr.
    >
    > At 04:51 PM 8/9/2003 -0700, you wrote:
    > >Since you're using the BS2p you might consider a change to I2C
    memory,
    > >as the built-in I2C commands will simplify EEPROM access.
    > >
    > >-- Jon Williams
    > >-- Applications Engineer, Parallax
    > >-- Dallas Office
    > >
    > >
    > >
    Original Message
    > >From: stein_frostad [noparse][[/noparse]mailto:Stein_Frostad@m...]
    > >Sent: Saturday, August 09, 2003 5:16 PM
    > >To: basicstamps@yahoogroups.com
    > >Subject: [noparse][[/noparse]basicstamps] Best way to store a string in a SPI Eeprom?
    > >
    > >
    > >In the App-kit 8K-Eeprom program, the BS2 writes and retrieves a
    > >value from a given address.
    > >
    > >Is there a fast code of sending a whole string (not passing the
    > >block off course) and then retrieve it the same way?
    > >
    > >I use BS2p.
    > >
    > >Thanks for some solutions.
    > >
    > >
    > >
    > >
    > >To UNSUBSCRIBE, just send mail to:
    > > basicstamps-unsubscribe@yahoogroups.com
    > >from the same email address that you subscribed. Text in the
    Subject
    > >and Body of the message will be ignored.
    > >
    > >
    > >Your use of Yahoo! Groups is subject to
    > >http://docs.yahoo.com/info/terms/
    > >
    > >
    > >
    > >
    > >This message has been scanned by WebShield. Please report SPAM to
    > >abuse@p...
    > >
    > >
    > >
    > >
    > >To UNSUBSCRIBE, just send mail to:
    > > basicstamps-unsubscribe@yahoogroups.com
    > >from the same email address that you subscribed. Text in the
    Subject and
    > >Body of the message will be ignored.
    > >
    > >
    > >Your use of Yahoo! Groups is subject to
    http://docs.yahoo.com/info/terms/
  • ArchiverArchiver Posts: 46,084
    edited 2003-08-10 15:31
    Using SHIFTOUT I'm afraid you will have to do it a byte at a time. Part
    of the reason for this is that SHIFTOUT allows you to shift other than
    8-bit values, so you cannot use "string" designations (slash parameter)
    in SHIFTOUT like you can in other routines (I2COUT, for example).

    -- Jon Williams
    -- Parallax


    Original Message
    From: stein_frostad [noparse]/noparse]mailto:[url=http://forums.parallaxinc.com/group/basicstamps/post?postID=uWQfQt1mwXBVX7dqqR81Sazlr8Q5Mb7SEIiDrPEklBImTJVRFJWJNMifFqBbsse2GkbQl_4jQwc0xH3EBBReSMp5Sslk]Stein_Frostad@m...[/url
    Sent: Sunday, August 10, 2003 6:39 AM
    To: basicstamps@yahoogroups.com
    Subject: [noparse][[/noparse]basicstamps] Re: Best way to store a string in a SPI Eeprom?


    I'm impressed of the inbuilt functions in BS2p. I try to utilize
    them as often as possible.

    The data flash AT45DB041 from ATMEL, is a SPI memory holding 2048
    pages * 256 bytes (0.54 Meg) and also has two 264-bytes SRAM data
    buffers. I was hoping to try out this circuit in the future, but
    first I should understand the use of the regular SPI Eeprom. In fact
    I have not even checked the price or accessibility from ATMEL, but
    my regular IC-shop doesn't sell ATMEL. I know that Tracy Allen has
    written that he has used this memory.

    I was asking how to use the shiftout/shiftin to store and retrieve
    string to the Eeprom.

    This DEMO-code works, but is there a better way instead of clocking
    in the char one byte at the time. Then perhaps I don't have to send
    one char at the time to the LCD.

    CON and VAR from 8K Eeprom APP-kit
    EEwrite:
    low CS ' Activate the EEPROM.
    shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]WriteEE]' Send write opcode.
    Eeaddr=8191
    For Index= 0 to 13
    EEaddr=EEaddr+1
    Gosub Send_addr ' Send the address.
    Lookup index,[noparse][[/noparse]"This is a test"],Result
    shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]Result] ' Send the data.
    Next
    high CS ' Deactivate the EEPROM.
    return ' Return to program.

    EEread:
    low CS ' Activate the EEPROM.
    shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]ReadEE] ' Send the read opcode.
    EEaddr=0
    For Index=0 to 13
    EEaddr=EEaddr+1
    Gosub Send_addr ' Send the address.
    shiftin DATA_N,CLK,msbpre,[noparse][[/noparse]INdata]' Get the data.
    Debug Indata
    LCDOUT 1,MoveCrsr+Index,[noparse][[/noparse]INdata]' LCD must then show one
    char at the time.
    Next
    high CS ' Deactivate the EEPROM.
    return ' Return to program.

    --- In basicstamps@yahoogroups.com, "Chuck Chargin Jr."
    <cchargin@e...> wrote:
    > Hello,
    >
    > Don't forget that some I2C EEPROMs have page write buffer
    boundaries. For
    > example the Microchip 24LC32A has a page write buffer of 32
    bytes. If you
    > start writing at address 16 then you can only write 16 bytes
    before the
    > page write buffer rolls over. To use the whole buffer you have to
    start
    > writing at 32 bytes boundaries (0, 32, 64, etc..).
    >
    > This caused me quite a bit of headache when I first tried using
    one. I
    > skimmed over it when I read the spec sheet!
    >
    > Chuck Chargin Jr.
    >
    > At 04:51 PM 8/9/2003 -0700, you wrote:
    > >Since you're using the BS2p you might consider a change to I2C
    memory,
    > >as the built-in I2C commands will simplify EEPROM access.
    > >
    > >-- Jon Williams
    > >-- Applications Engineer, Parallax
    > >-- Dallas Office
    > >
    > >
    > >
    Original Message
    > >From: stein_frostad [noparse][[/noparse]mailto:Stein_Frostad@m...]
    > >Sent: Saturday, August 09, 2003 5:16 PM
    > >To: basicstamps@yahoogroups.com
    > >Subject: [noparse][[/noparse]basicstamps] Best way to store a string in a SPI Eeprom?
    > >
    > >
    > >In the App-kit 8K-Eeprom program, the BS2 writes and retrieves a
    > >value from a given address.
    > >
    > >Is there a fast code of sending a whole string (not passing the block

    > >off course) and then retrieve it the same way?
    > >
    > >I use BS2p.
    > >
    > >Thanks for some solutions.
    > >
    > >
    > >
    > >
    > >To UNSUBSCRIBE, just send mail to:
    > > basicstamps-unsubscribe@yahoogroups.com
    > >from the same email address that you subscribed. Text in the
    Subject
    > >and Body of the message will be ignored.
    > >
    > >
    > >Your use of Yahoo! Groups is subject to
    > >http://docs.yahoo.com/info/terms/
    > >
    > >
    > >
    > >
    > >This message has been scanned by WebShield. Please report SPAM to
    > >abuse@p...
    > >
    > >
    > >
    > >
    > >To UNSUBSCRIBE, just send mail to:
    > > basicstamps-unsubscribe@yahoogroups.com
    > >from the same email address that you subscribed. Text in the
    Subject and
    > >Body of the message will be ignored.
    > >
    > >
    > >Your use of Yahoo! Groups is subject to
    http://docs.yahoo.com/info/terms/


    To UNSUBSCRIBE, just send mail to:
    basicstamps-unsubscribe@yahoogroups.com
    from the same email address that you subscribed. Text in the Subject
    and Body of the message will be ignored.


    Your use of Yahoo! Groups is subject to
    http://docs.yahoo.com/info/terms/




    This message has been scanned by WebShield. Please report SPAM to
    abuse@p....
  • ArchiverArchiver Posts: 46,084
    edited 2003-08-11 10:15
    EEPROM self-increments its address within each block, so you don't
    necessarily have to send the address for each byte. However, like
    I2C, you have to respect the block boundaries, otherwise you will end
    up overwriting in circles back at the beginning of the same block.
    The block size is usually quite small, like 16 or 32 bytes. (The
    ATMEL dataflash blocks are 264 bytes).

    Say you want to send a word data, then use
    GOSUB send_addr
    shiftout dpin,cpin,msbfirst,[noparse][[/noparse]word_data\16] ' sixteen bits

    Strings? The idea is to send the address and initiate a new block
    only when the string crosses block boundaries. Remember that it
    takes a few milliseconds for eeprom to write data, so if you can
    write a whole block at once, you can save a lot of execution time.
    Suppose a string is stored (buffered) starting at address 0 in the
    SPRAM of the BS2p, and that the string is N bytes long, which may be
    more or less than the blocksize. The string needs to be moved to
    eeprom, starting at address held in ADDR0. Suppose the blocksize=32
    bytes.

    ' {$PBASIC 2.5}
    for i=0 to N-1 ' N bytes in string
    addr=addr0+i ' address of next byte in eeprom
    if addr // blocksize = 0 OR i=0 then gosub send_addr ' do this
    only to start a new block write.
    get i,char ' from SPRAM
    shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]char] ' Send the data, but don't
    close the write
    next
    high CS ' close the final write.
    end ' would normally update ADDR0=ADDR0+N

    send_addr: ' start new block
    high CS ' close last write
    ' should check the eeprom status byte here, to allow it to complete
    the write!!! or PAUSE 9
    low CS
    shiftout dta,clk,msbfirst,[noparse][[/noparse]WREN] ' write enable opcode.
    high CS ' register it.
    low CS ' Activate EEPROM.
    shiftout dta,clk,msbfirst,[noparse][[/noparse]WrEE] ' write opcode.
    high CS ' register it low CS
    ' send address
    shiftout dta,clk,msbfirst,[noparse][[/noparse]ADDR\16]
    return ' with address open for writing

    There may be better ways to code it, with an inner loop that does not
    test for the beginning of the block. This kind of routine also is
    good for erasing eeprom, say, because you can send cycles of 16 $FFFF
    to the whole memory array, and burn each block in multiples of 32
    bytes.

    -- Tracy




    >This DEMO-code works, but is there a better way instead of clocking
    >in the char one byte at the time. Then perhaps I don't have to send
    >one char at the time to the LCD.
    >
    >CON and VAR from 8K Eeprom APP-kit
    >EEwrite:
    > low CS ' Activate the EEPROM.
    > shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]WriteEE]' Send write opcode.
    > Eeaddr=8191
    > For Index= 0 to 13
    > EEaddr=EEaddr+1
    > Gosub Send_addr ' Send the address.
    > Lookup index,[noparse][[/noparse]"This is a test"],Result
    > shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]Result] ' Send the data.
    > Next
    > high CS ' Deactivate the EEPROM.
    >return ' Return to program.
    >
    >EEread:
    > low CS ' Activate the EEPROM.
    > shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]ReadEE] ' Send the read opcode.
    > EEaddr=0
    > For Index=0 to 13
    > EEaddr=EEaddr+1
    > Gosub Send_addr ' Send the address.
    > shiftin DATA_N,CLK,msbpre,[noparse][[/noparse]INdata]' Get the data.
    > Debug Indata
    > LCDOUT 1,MoveCrsr+Index,[noparse][[/noparse]INdata]' LCD must then show one
    >char at the time.
    > Next
    > high CS ' Deactivate the EEPROM.
    >return ' Return to program.
    >
    >--- In basicstamps@yahoogroups.com, "Chuck Chargin Jr."
    ><cchargin@e...> wrote:
    >> Hello,
    >>
    >> Don't forget that some I2C EEPROMs have page write buffer
    >boundaries. For
    >> example the Microchip 24LC32A has a page write buffer of 32
    >bytes. If you
    >> start writing at address 16 then you can only write 16 bytes
    >before the
    >> page write buffer rolls over. To use the whole buffer you have to
    >start
    >> writing at 32 bytes boundaries (0, 32, 64, etc..).
    >>
    >> This caused me quite a bit of headache when I first tried using
    >one. I
    >> skimmed over it when I read the spec sheet!
    >>
    >> Chuck Chargin Jr.
    >>
    >> At 04:51 PM 8/9/2003 -0700, you wrote:
    >> >Since you're using the BS2p you might consider a change to I2C
    >memory,
    >> >as the built-in I2C commands will simplify EEPROM access.
    >> >
    >> >-- Jon Williams
    >> >-- Applications Engineer, Parallax
    >> >-- Dallas Office
    >> >
    >> >
    >> >
    Original Message
    >> >From: stein_frostad [noparse][[/noparse]mailto:Stein_Frostad@m...]
    >> >Sent: Saturday, August 09, 2003 5:16 PM
    >> >To: basicstamps@yahoogroups.com
    >> >Subject: [noparse][[/noparse]basicstamps] Best way to store a string in a SPI Eeprom?
    >> >
    >> >
    >> >In the App-kit 8K-Eeprom program, the BS2 writes and retrieves a
    >> >value from a given address.
    >> >
    >> >Is there a fast code of sending a whole string (not passing the
    >> >block off course) and then retrieve it the same way?
    >> >
    >> >I use BS2p.
    >> >
    >> >Thanks for some solutions.
    >> >
    >> >
    >> >
    >> >
    >> >To UNSUBSCRIBE, just send mail to:
    >> > basicstamps-unsubscribe@yahoogroups.com
    >> >from the same email address that you subscribed. Text in the
    >Subject
    >> >and Body of the message will be ignored.
    >> >
    >> >
    >> >Your use of Yahoo! Groups is subject to
    >> >http://docs.yahoo.com/info/terms/
    >> >
    >> >
    >> >
    >> >
    >> >This message has been scanned by WebShield. Please report SPAM to
    >> >abuse@p...
    >> >
    >> >
    >> >
    >> >
    >> >To UNSUBSCRIBE, just send mail to:
    >> > basicstamps-unsubscribe@yahoogroups.com
    >> >from the same email address that you subscribed. Text in the
    >Subject and
    >> >Body of the message will be ignored.
    >> >
    >> >
    >> >Your use of Yahoo! Groups is subject to
    >http://docs.yahoo.com/info/terms/
    >
    >
    >To UNSUBSCRIBE, just send mail to:
    > basicstamps-unsubscribe@yahoogroups.com
    >from the same email address that you subscribed. Text in the
    >Subject and Body of the message will be ignored.
    >
    >
    >Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
  • ArchiverArchiver Posts: 46,084
    edited 2003-08-11 20:00
    Thanks Tracy, your help is really appreciated.
    I just got hold of a free sample Atmel IC as well.

    Stein.

    --- In basicstamps@yahoogroups.com, Tracy Allen <tracy@e...> wrote:
    > EEPROM self-increments its address within each block, so you don't
    > necessarily have to send the address for each byte. However, like
    > I2C, you have to respect the block boundaries, otherwise you will
    end
    > up overwriting in circles back at the beginning of the same
    block.
    > The block size is usually quite small, like 16 or 32 bytes. (The
    > ATMEL dataflash blocks are 264 bytes).
    >
    > Say you want to send a word data, then use
    > GOSUB send_addr
    > shiftout dpin,cpin,msbfirst,[noparse][[/noparse]word_data\16] ' sixteen bits
    >
    > Strings? The idea is to send the address and initiate a new
    block
    > only when the string crosses block boundaries. Remember that it
    > takes a few milliseconds for eeprom to write data, so if you can
    > write a whole block at once, you can save a lot of execution time.
    > Suppose a string is stored (buffered) starting at address 0 in the
    > SPRAM of the BS2p, and that the string is N bytes long, which may
    be
    > more or less than the blocksize. The string needs to be moved to
    > eeprom, starting at address held in ADDR0. Suppose the
    blocksize=32
    > bytes.
    >
    > ' {$PBASIC 2.5}
    > for i=0 to N-1 ' N bytes in string
    > addr=addr0+i ' address of next byte in eeprom
    > if addr // blocksize = 0 OR i=0 then gosub send_addr ' do
    this
    > only to start a new block write.
    > get i,char ' from SPRAM
    > shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]char] ' Send the data, but
    don't
    > close the write
    > next
    > high CS ' close the final write.
    > end ' would normally update ADDR0=ADDR0+N
    >
    > send_addr: ' start new block
    > high CS ' close last write
    > ' should check the eeprom status byte here, to allow it to
    complete
    > the write!!! or PAUSE 9
    > low CS
    > shiftout dta,clk,msbfirst,[noparse][[/noparse]WREN] ' write enable opcode.
    > high CS ' register it.
    > low CS ' Activate EEPROM.
    > shiftout dta,clk,msbfirst,[noparse][[/noparse]WrEE] ' write opcode.
    > high CS ' register it low CS
    > ' send address
    > shiftout dta,clk,msbfirst,[noparse][[/noparse]ADDR\16]
    > return ' with address open for writing
    >
    > There may be better ways to code it, with an inner loop that does
    not
    > test for the beginning of the block. This kind of routine also is
    > good for erasing eeprom, say, because you can send cycles of 16
    $FFFF
    > to the whole memory array, and burn each block in multiples of 32
    > bytes.
    >
    > -- Tracy
    >
    >
    >
    >
    > >This DEMO-code works, but is there a better way instead of
    clocking
    > >in the char one byte at the time. Then perhaps I don't have to
    send
    > >one char at the time to the LCD.
    > >
    > >CON and VAR from 8K Eeprom APP-kit
    > >EEwrite:
    > > low CS ' Activate the EEPROM.
    > > shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]WriteEE]' Send write opcode.
    > > Eeaddr=8191
    > > For Index= 0 to 13
    > > EEaddr=EEaddr+1
    > > Gosub Send_addr ' Send the address.
    > > Lookup index,[noparse][[/noparse]"This is a test"],Result
    > > shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]Result] ' Send the data.
    > > Next
    > > high CS ' Deactivate the EEPROM.
    > >return ' Return to program.
    > >
    > >EEread:
    > > low CS ' Activate the EEPROM.
    > > shiftout DATA_N,CLK,msbfirst,[noparse][[/noparse]ReadEE] ' Send the read
    opcode.
    > > EEaddr=0
    > > For Index=0 to 13
    > > EEaddr=EEaddr+1
    > > Gosub Send_addr ' Send the address.
    > > shiftin DATA_N,CLK,msbpre,[noparse][[/noparse]INdata]' Get the data.
    > > Debug Indata
    > > LCDOUT 1,MoveCrsr+Index,[noparse][[/noparse]INdata]' LCD must then show one
    > >char at the time.
    > > Next
    > > high CS ' Deactivate the EEPROM.
    > >return ' Return to program.
    > >
    > >--- In basicstamps@yahoogroups.com, "Chuck Chargin Jr."
    > ><cchargin@e...> wrote:
    > >> Hello,
    > >>
    > >> Don't forget that some I2C EEPROMs have page write buffer
    > >boundaries. For
    > >> example the Microchip 24LC32A has a page write buffer of 32
    > >bytes. If you
    > >> start writing at address 16 then you can only write 16 bytes
    > >before the
    > >> page write buffer rolls over. To use the whole buffer you have
    to
    > >start
    > >> writing at 32 bytes boundaries (0, 32, 64, etc..).
    > >>
    > >> This caused me quite a bit of headache when I first tried using
    > >one. I
    > >> skimmed over it when I read the spec sheet!
    > >>
    > >> Chuck Chargin Jr.
    > >>
    > >> At 04:51 PM 8/9/2003 -0700, you wrote:
    > >> >Since you're using the BS2p you might consider a change to I2C
    > >memory,
    > >> >as the built-in I2C commands will simplify EEPROM access.
    > >> >
    > >> >-- Jon Williams
    > >> >-- Applications Engineer, Parallax
    > >> >-- Dallas Office
    > >> >
    > >> >
    > >> >
    Original Message
    > >> >From: stein_frostad [noparse][[/noparse]mailto:Stein_Frostad@m...]
    > >> >Sent: Saturday, August 09, 2003 5:16 PM
    > >> >To: basicstamps@yahoogroups.com
    > >> >Subject: [noparse][[/noparse]basicstamps] Best way to store a string in a SPI
    Eeprom?
    > >> >
    > >> >
    > >> >In the App-kit 8K-Eeprom program, the BS2 writes and retrieves
    a
    > >> >value from a given address.
    > >> >
    > >> >Is there a fast code of sending a whole string (not passing the
    > >> >block off course) and then retrieve it the same way?
    > >> >
    > >> >I use BS2p.
    > >> >
    > >> >Thanks for some solutions.
    > >> >
    > >> >
    > >> >
    > >> >
    > >> >To UNSUBSCRIBE, just send mail to:
    > >> > basicstamps-unsubscribe@yahoogroups.com
    > >> >from the same email address that you subscribed. Text in the
    > >Subject
    > >> >and Body of the message will be ignored.
    > >> >
    > >> >
    > >> >Your use of Yahoo! Groups is subject to
    > >> >http://docs.yahoo.com/info/terms/
    > >> >
    > >> >
    > >> >
    > >> >
    > >> >This message has been scanned by WebShield. Please report SPAM
    to
    > >> >abuse@p...
    > >> >
    > >> >
    > >> >
    > >> >
    > >> >To UNSUBSCRIBE, just send mail to:
    > >> > basicstamps-unsubscribe@yahoogroups.com
    > >> >from the same email address that you subscribed. Text in the
    > >Subject and
    > >> >Body of the message will be ignored.
    > >> >
    > >> >
    > >> >Your use of Yahoo! Groups is subject to
    > >http://docs.yahoo.com/info/terms/
    > >
    > >
    > >To UNSUBSCRIBE, just send mail to:
    > > basicstamps-unsubscribe@yahoogroups.com
    > >from the same email address that you subscribed. Text in the
    > >Subject and Body of the message will be ignored.
    > >
    > >
    > >Your use of Yahoo! Groups is subject to
    http://docs.yahoo.com/info/terms/
Sign In or Register to comment.