Internal eeprom - erase block


Closed Thread
Results 1 to 33 of 33

Hybrid View

  1. #1
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by ria_river View Post
    Hi everyone!
    I can read and write now using the pic16f84a but I can't do that using pic16f877a.
    Is there any lines I have to add inorder to allow reading and writing the eeprom?
    I've read the 16f877a datasheet. It is stated there that I have to disable all interrupts before writing. I've tried that but still won't work.
    A working simple code for reading and writing the internal eeprom of pic16f877a is all I need.
    Please help me...
    Thank you in advance.
    Well, since you stated that you have beening trying to get it to work, why do YOU post YOUR code, and I'm sure WE can HELP YOU figure out what YOU are doing WRONG.

    And how many times do you have to post the same question, and/or hijack other threads?

  2. #2


    Did you find this post helpful? Yes | No

    Default

    Hi all,

    returning to the original thread...

    I have sucessfully created the circuit and code to work with data and save them it to the external eeprom with a determinated timming.

    I have managed to save/read data in 2 blocks ( 2 sessions ).

    I have one part of the code that is responsable to erase both blocks of data.

    My erasing code is simple and i use a set of ( For x to y...next ) instructions where x and y are the block's starting address and ending address.

    I could use more memory blocks and increase the project's performance but i limited it to 2 blocks because the erasing process takes too long ( 2/3 minutes for both blocks ).

    I know that i could use a faster clock to increase the instruction's speed and erasing process, but i'm working with the internal clock of a 16F88.

    Is there a way i can speed a bit more via software ? Maybe a diferent code/set of instructions that work a bit better ?

    Thanks

  3. #3
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by ruijc View Post
    I could use more memory blocks and increase the project's performance but i limited it to 2 blocks because the erasing process takes too long ( 2/3 minutes for both blocks ).
    I know that i could use a faster clock to increase the instruction's speed and erasing process, but i'm working with the internal clock of a 16F88.
    Is there a way i can speed a bit more via software ? Maybe a diferent code/set of instructions that work a bit better ?
    Thanks
    Post your code. 2-3 minutes is entirely TOO LONG! There has to be something silly going on that's causing it to take sooooo long.

  4. #4
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default

    By "block" do you mean the "page" feature of external eeproms?

    If so, page write takes about the same time as writing a single byte. Should be somewhere between 2ms to 10ms depending on the eeprom you are using.

    It seems that your block writing routine is not really accuate.

    -------------------
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

  5. #5


    Did you find this post helpful? Yes | No

    Default

    Hello sayzer,

    i dont mean page.

    When i say block it means that i'm using an area of memory for one record session and other area for a diferent record session.

    For example...

    Using memory address from 0 to 3000 will be used as "block" 1 or record session #1 and memory address 3500 to 6500 will be used as "block" 2 or session #2.

    The user will choose ( using a button ) where it will record ( either block 1 or 2 ) and the same concept is used when reading back data.

    I'm using a 16F88 pic with internal osc and a 24LC512 external eeprom.
    The program works very well except the erasing rotine ( note that i'm erasing all blocks at the same time ).

    With 2 blocks it erases in an acceptable time frame...but i would like to use more blocks without loosing too much time erasing them all.

  6. #6
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default

    ruijc, But why are you required to erase all of the data? Why not just keep a couple of pointers? 1 for number of data bytes recorded and 1 for the next data location. The reason for 2 is to verify if either is corrupted. Just update the 2 pointers when writing the data or clear them when you require a memory clear function.

    Dave Purola,
    N8NTA

  7. #7


    Did you find this post helpful? Yes | No

    Default

    Hello Dave,

    Very interesting idea.

    It makes perfect sense. It's a completly diferent logic this way.

    Thanks

    What i thought was:

    I can reserve 4 bytes ( using 2 blocks of data...reserve more with more blocks ) of memory such as:

    1 will record the starting address for first block
    1 will record the ending point for the first block
    1 will record the starting point of second block
    1 will record the ending address of second block

    This way i can have variable size of block with data

    These can be stored either in the external or internal eeprom ( i guess it will be safer to store them in the external one )

    For reading it will lookup these bytes for it to know where to start colecting data and where to stop.

    To erase just simply put these to 0 ( reminding to check for 0 before start recording ).


    I think it can work this way, dont you think ?



    .

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. config bits
    By brianD in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 9th February 2010, 13:45
  3. PICBasic newbie problem
    By ELCouz in forum mel PIC BASIC Pro
    Replies: 32
    Last Post: - 12th February 2008, 00:55
  4. PortE problems (PIC18F4455)
    By RubenR in forum mel PIC BASIC Pro
    Replies: 15
    Last Post: - 12th July 2006, 15:26
  5. Internal EEPROM Read/write Addressing Errors with 18F PIC's
    By Melanie in forum FAQ - Frequently Asked Questions
    Replies: 18
    Last Post: - 12th July 2005, 19:42

Members who have read this thread : 0

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