How to read write EEPROM on 12C671?


Closed Thread
Results 1 to 7 of 7
  1. #1

    Question How to read write EEPROM on 12C671?

    Hello, I am having errors while compiling my code for reading and writing on EEPROM with my 12C671.
    I tried using read, write, I2CREAD etc but there are errors always.
    Can someone please guide me as to what I could do?
    Thanks
    ___________________
    WHY things get boring when they work just fine?

  2. #2
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,614


    Did you find this post helpful? Yes | No

    Post

    Hi,

    You can find on firsts pages of the manual, $ MCU Specific issues : " ... those chips have I2C interfaced EEPROMS so, you have to use I2CRead and I2CWrite ... "

    you'll find further infos either in the Pic Datasheet and in respective commands pages of PBP Manual.

    Alain

    PS: Will you show some code ???
    Last edited by Acetronics2; - 27th February 2010 at 13:07.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  3. #3


    Did you find this post helpful? Yes | No

    Default

    I did tried to do as per the manual, but seems to be missing something:
    This is what I did:

    Code:
    DEFINE I2C_INTERNAL 1
    EEPROM 0,[0,0,0,0] 
    read 0,gpio.0
    read 1,gpio.1
    read 2,gpio.4
    read 4,gpio.5
    
    Also tried the above 4 statements using 12CREAD but :(
    Can you please add one example to read and one to write?
    I went through the manual but it does not have an example on how to write statements for INTERNAL EEPROM.
    ___________________
    WHY things get boring when they work just fine?

  4. #4
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,614


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by financecatalyst View Post
    Can you please add one example to read and one to write?
    I went through the manual but it does not have an example on how to write statements for INTERNAL EEPROM.
    Straight from the SAMPLES folder of your compiler ...

    Code:
    ' I2CREAD and I2WRITE Commands
    '
    ' Write to the first 16 locations of internal I2C EEPROM
    ' Read first 16 locations back and send to serial out repeatedly
    ' Note: for PIC12CE67x MCU's
    
            Include "modedefs.bas"          ' Include serial modes
    
    Define  I2C_INTERNAL  1
    
    ADCON1 = 7				' Set ADC pins to digital operation
    
    SO      con     1                       ' Define serial output pin
    DPIN    var     GPIO.6                 	' Data line to internal EEPROM
    CPIN    var     GPIO.7                 	' Clock line to internal EEPROM
    B0      var     byte
    B1      var     byte
    B2      var     byte
    
            For B0 = 0 To 15                ' Loop 16 times
                    I2CWRITE DPIN,CPIN,$A0,B0,[B0]  ' Write each location's address to itself
                    Pause 10                ' Delay 10ms after each write
            Next B0
    
    mainloop: For B0 = 0 To 15 step 2       ' Loop 8 times
                    I2CREAD DPIN,CPIN,$A0,B0,[B1,B2]        ' Read 2 locations in a row
                    Serout SO,N2400,[#B1," ",#B2," "]       ' Print 2 locations
            Next B0
    
            Serout SO,N2400,[10]            ' Print linefeed
    
            Goto mainloop
    also available @ Melabs site in the support section ...

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  5. #5


    Did you find this post helpful? Yes | No

    Default

    Perfect, thank you so much. Hopefully it should solve my problem.

    Will this read write operation be affected by DT-Interrupts in any way as they are also running in my code?

    Thanks again
    ___________________
    WHY things get boring when they work just fine?

  6. #6
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,614


    Did you find this post helpful? Yes | No

    Default

    my point of view is to disable interrupts before writing to EEPROM and re-enable after.

    For DT Ints ... I do not remember exactly if there's a trick to do that automatically ... I think yes ( something like "DEFINE EEPROM_USED 1" ... may be ), but you'd much better verify on the relevant thread.

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  7. #7
    Join Date
    Sep 2005
    Location
    Campbell, CA
    Posts
    1,107


    Did you find this post helpful? Yes | No

    Default

    From the PBP 2.60 manual:



    DEFINE WRITE_INT 1 ‘Disable/Enable INTs in WRITE



    If you put this in your DEFINE block, it will turn off your INTs before the WRITE and enable them after the WRITE.

    Note that if you include this DEFINE, it will always ENABLE ints when the write is finished, whether or not they were enabled when the WRITE was invoked.
    Charles Linquist

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. Cleaning up code
    By Tobias in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 2nd December 2009, 07:14
  3. Problem with I2C EEPROM addressing
    By Atom058 in forum General
    Replies: 14
    Last Post: - 3rd November 2009, 03:17
  4. PIC16F684 + LCD to use the 256bytes of EEPROM - HELP
    By xnihilo in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 7th March 2008, 14:19
  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