I need help with i2c memory


Closed Thread
Results 1 to 18 of 18

Hybrid View

  1. #1
    Join Date
    Jun 2005
    Posts
    7

    Default I need help with i2c memory

    For my senior project we are using a pic16f84. A large part of the project is storing data in a serial memory chip usint i2c. ive spent 5ish hours trying to figure this out. went through data sheets and searched online, still no success. i am confident my circuit is wired correctly. any help would be greatly appriciated.

    the memory used currently is microchip's 24AA512, we also have a 24c01 laying around to play with as well.
    i have 2 pull up resistors (5.1k) on scl and sda
    write protect is grounded

    here is my code,

    addr var byte
    sda var byte
    scl var byte
    contR con %10100001
    contW con %10100000
    x var byte 'test data'
    sda=PORTB.0
    scl=PORTB.1

    addr=%00000000
    x=3 'test data is the number 3'
    pause 100 'pause just for fun'

    I2Cwrite sda,scl,contW,addr,[x] 'should write 3 to address 0, right?'
    pause 10
    I2Cread sda,scl,contR,addr,[x] 'should read the data'
    pause 10
    serout Portb.2,4,[x] 'displays data on an LCD'


    end

    Thanks!
    Last edited by -c3-; - 16th June 2005 at 00:04.

  2. #2
    Join Date
    Jun 2005
    Location
    Wisconsin
    Posts
    382


    Did you find this post helpful? Yes | No

    Talking

    Make your addr a word variable, not byte.

    Also make sure you assign a value to your addr before the write command.

    Example:

    Addr=3
    I2Cwrite sda,scl,contW,addr,[x] 'should write 3 to address 0, right?'
    pause 10

    Finally you may want to add DEFINE I2C_SLOW 1 if things are still not working.

    Basically if your wired like the manual says and you do the above it works great.
    Last edited by DynamoBen; - 16th June 2005 at 00:07.

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


    Did you find this post helpful? Yes | No

    Default

    Try this:
    Code:
    addr var word
    sda var PORTB.0
    scl var PORTB.1
    cont con %10100000
    x var byte 'test data'
    addr=%00000000
    x=3 'test data is the number 3'
    
    I2Cwrite sda,scl,cont,addr,[x] 'should write 3 to address 0, right?'
    pause 10
    I2Cread sda,scl,cont,addr,[x] 'should read the data'
    pause 10
    serout Portb.2,4,[DEC x] 'displays data on an LCD'
    
    
    end
    Last edited by NavMicroSystems; - 16th June 2005 at 01:03.
    regards

    Ralph

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



  4. #4
    Join Date
    Jun 2005
    Location
    Wisconsin
    Posts
    382


    Did you find this post helpful? Yes | No

    Default

    Also keep in mind if your hoping to see the number three on the LCD you will need to modify your code a bit.

    serout Portb.2,4,[DEC x] 'displays ASCII version of data on an LCD'

  5. #5
    Join Date
    Jun 2005
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by NavMicroSystems
    Try this:
    Code:
    addr var word
    sda var PORTB.0
    scl var PORTB.1
    cont con %10100000
    x var byte 'test data'
    addr=%00000000
    x=3 'test data is the number 3'
    
    I2Cwrite sda,scl,cont,addr,[x] 'should write 3 to address 0, right?'
    pause 10
    I2Cread sda,scl,cont,addr,[x] 'should read the data'
    pause 10
    serout Portb.2,4,[DEC x] 'displays data on an LCD'
    
    
    end

    when i go to compile i get "bad expression" on serout Portb.2,4,[DEC x]
    i am using microcode studio.

  6. #6
    Join Date
    Jun 2005
    Location
    Wisconsin
    Posts
    382


    Did you find this post helpful? Yes | No

    Default

    You are missing the two pull-up resistors that are required.

    Try wiring it identical to the Melabs user manual. This is your best shot at getting it to work. I have included the drawing in this post.
    Attached Images Attached Images  

  7. #7
    Join Date
    Jun 2005
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by DynamoBen
    You are missing the two pull-up resistors that are required.

    Try wiring it identical to the Melabs user manual. This is your best shot at getting it to work. I have included the drawing in this post.
    you are talking about the 2 pull up resistors on scl and sda correct? they are there. as far as i can tell the only difference between what i have and your picture is the cap from vdd to ground on pin 14. ill put that in and see what happens..
    Last edited by -c3-; - 16th June 2005 at 06:54.

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by -c3-
    when i go to compile i get "bad expression" on serout Portb.2,4,[DEC x]
    i am using microcode studio.
    what about serout Portb.2,4,[#x]???
    Steve

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

  9. #9
    Join Date
    Jun 2005
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mister_e
    what about serout Portb.2,4,[#x]???

    that compiles, only problem now is i killed my lcd...... needless to say, from now on i will be a little more careful of which voltage supply i am using.... little puffs of smoke are bad....
    Last edited by -c3-; - 16th June 2005 at 06:54.

  10. #10
    Join Date
    Jun 2005
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    Tried that, still nothing. it makes me wonder if there is something with my circuit i am missing...(i think it is right...)

    if any one wants to check the wiring (its not messy)
    chip pinouts included

    http://www.siue.edu/~bluttin/circuit.htm

    thanks

    the middle chip is the uln2803, its just driving the leds, ive tried it connected, and unconnected.
    Last edited by -c3-; - 16th June 2005 at 01:33.

Similar Threads

  1. I2C Master/Slave 16F88/16F767 working code
    By DanPBP in forum Code Examples
    Replies: 2
    Last Post: - 23rd October 2012, 22:31
  2. HARDWARE I2C SAMPLE CODE question
    By Michael Wakileh in forum Code Examples
    Replies: 2
    Last Post: - 16th June 2009, 21:07
  3. I2C Master Slave issues.
    By cpayne in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 29th March 2008, 19:33
  4. A help with Write/Read a I2C memory
    By Eugeniu in forum mel PIC BASIC Pro
    Replies: 25
    Last Post: - 28th March 2008, 13:53
  5. Please help with i2cslave i2c slave
    By cycle_girl in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 1st December 2005, 13:55

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