I2C with any PIC?


Closed Thread
Results 1 to 13 of 13
  1. #1
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    891

    Default I2C with any PIC?

    Hello,

    I'm not used to handle I2C communication.

    In several datasheets, I've seen some specific information about the I2C capability of this or that chip.

    My question is: what makes the difference between PICs that have a I2C capacity described in their datasheet and the other ones that don't?

    (...i just have the feeling my question is not clear enough...)
    Roger

  2. #2
    Join Date
    Feb 2005
    Location
    Kolkata-India
    Posts
    563


    Did you find this post helpful? Yes | No

    Default PBP uses a software I2C

    Hi,

    PBP uses a software based I2C so it does not actually matter if your chip has an onboard hardware I2C. It will never use it.
    Regards

    Sougata

  3. #3
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    891


    Did you find this post helpful? Yes | No

    Default

    Thanks Sougata,

    This is what I thought since I use a 12F675 and a 24LCxxx memory via I2C and this PIC has no specific I2C interface (...and, of course, it works).

    So what is the "advantage" or simply the reason for certain PICs to have a I2C interface?
    Roger

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


    Did you find this post helpful? Yes | No

    Default

    well, usually faster than most software solution, usually provide interrupts triggers, etc etc etc. Same for USART (HSERIN/HSEROUT) against SEROUT/SERIN etc etc.
    Steve

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

  5. #5
    Join Date
    Oct 2004
    Location
    Hangover, Germany
    Posts
    289


    Did you find this post helpful? Yes | No

    Talking

    ...just try to code a slave-I2C !

    Then you will see, what advantages a hardware-modul can give to you !

    ...and it gives you so much performance, if you use the hardware in an intelligent way!
    PBP 2.50C, MCS+ 3.0.0.5, MPLAB 8, MPASM 5.14, ASIX Presto, PoScope, mE mikroBasic V7.2, PICKIT2

  6. #6
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by BigWumpus View Post
    ...just try to code a slave-I2C !

    Then you will see, what advantages a hardware-modul can give to you !

    ...and it gives you so much performance, if you use the hardware in an intelligent way!
    Somewhere out there, is a site with practically complete I2C-slave code, uses the hardware and PBP to handle things. Apparently it works like a champ. A 2nd PIC18F452 is slave-I2C programmed to act just like a 24LC256 and it's accessed by the 1st 18F452 using PBP's I2C commands. Wish I remembered where that was...

  7. #7
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    Many of us have done this but for professional reasons we are unable or unwilling to share the code. However, Robert Soubie detailed his adventures with I2CSlave using Melabs PICBasic, and posted all his code here...

    http://www.astrosurf.com/soubie/pic_as_an_i2c_slave.htm

    Well done Robert!

  8. #8
    Join Date
    Nov 2008
    Posts
    48


    Did you find this post helpful? Yes | No

    Default

    Hi Melanie,
    i tried Roberts I2C Slave routine, but it is not clear how to access the Slave with I2CREAD / I2CWRITE with Melabs PBP from the Master.
    In the I2CREAD and I2CWRITE commands are also "address" parameters given, is this the same to be used as the parameter RXBuffer(0)?
    Does any one have an exmaple for me?
    Regards,
    Ralf

  9. #9
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    Other than telling you that Robert achieved the goal that many seek but few accomplish, and he documented everything on his website (I'm assuming it's all still there), I can't add any more, because I haven't actually tried his software myself.

  10. #10
    Join Date
    Nov 2008
    Posts
    48


    Did you find this post helpful? Yes | No

    Default

    Hello Melanie,
    yes there is a lot on the website, but there is not describd how to access it with I2CREAD / I2CWRITE. May be i am blind.... Maybe anyone else can help...?
    Regards,
    Ralf

  11. #11
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by ralfmayr View Post
    Hello Melanie,
    yes there is a lot on the website, but there is not describd how to access it with I2CREAD / I2CWRITE. May be i am blind.... Maybe anyone else can help...?
    Regards,
    Ralf
    from the second page of his web site:
    http://www.astrosurf.com/soubie/fichiers/i2cInt.pbp
    http://www.astrosurf.com/soubie/fichiers/Proc_i2c.pbp
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  12. #12
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    You would still use I2CREAD and I2CWRITE as per normal in the Master PIC. It's only the slave PIC that would use the new routines.

  13. #13
    Join Date
    Nov 2008
    Posts
    48


    Did you find this post helpful? Yes | No

    Default

    Hello Melanie,
    hello Joe,
    thanks for your answers.
    I have the code from Robert, i also implemented his code in my interrupt
    service of the slave (a 2431), all no problem, but:
    The problem i have is that i do not understand how it works. When writing or reading with my master (a 6722) to / from the slave, i alwasy get sensless values from the slave. The slave routine from Robert waits for 3 RXbuffer values (0 - 2), the first value of RXBuffer(0) indicates in i2c_proc.pbp the var-id, all other two bytes are the values. But when writing three values with I2CWRITE sda, scl, addr, [b1, b2, b3], the service routine gives back "0" for all two TX Values (defined in the i2c_proc.pbp there have been other values defined).
    In the pbp manual, there is also a value possible behind the address (before the "[", but using this value also for the RXBuffer(0) results also in senseless values.
    So i think the I2CREAD / I2CWRITE command i use in a wrong way, so i am looking for a master code example, which controls a slave to see the correct usage.
    Uff..... understood?
    BR
    Ralf

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. Use pic as slave in I2C
    By robert0 in forum General
    Replies: 2
    Last Post: - 3rd February 2006, 19:26
  5. Adding a pic in I2C network....
    By robert0 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 2nd May 2005, 12:07

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