Shop OBEX P1 Docs P2 Docs Learn Events
I2CIN Help — Parallax Forums

I2CIN Help

ArchiverArchiver Posts: 46,084
edited 2002-09-21 00:01 in General Discussion
The I2CIN command doesn't arbitrarily clear variables. Without
seeing your code, I'm guessing you may be reading in more bytes of
data than you have set aside for their receipt, thereby storing the
incoming data into other variables' locations. If you'll post your
code, someone will probably see the problem.


Regards,

Steve

On 20 Sep 02 at 18:53, pjk_usa2002 wrote:

> Can someone tell me why when I use the "I2CIN" command it resets all
> of my variables to "0"...

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2002-09-20 19:53
    Can someone tell me why when I use the "I2CIN" command it resets all
    of my variables to "0". The only work around I have found is to use
    the "PUT" command for all of my variables to scratch pad ram before
    the "I2CIN" command executes and a "GET" command to retreive after...

    Thank you in advance
  • ArchiverArchiver Posts: 46,084
    edited 2002-09-20 21:03
    Can you be more specific? With a code example, perhaps? I've done quite a
    lot of work with I2CIN and have never had any trouble with it. What you're
    experiencing is not the norm -- I'm wondering if you have a bus short that is
    causing the Stamp to reset.

    -- Jon Williams
    -- Parallax


    In a message dated 9/20/02 1:55:38 PM Central Daylight Time,
    pkocmoud@h... writes:


    > Can someone tell me why when I use the "I2CIN" command it resets all
    > of my variables to "0". The only work around I have found is to use
    > the "PUT" command for all of my variables to scratch pad ram before
    > the "I2CIN" command executes and a "GET" command to retreive after...
    >
    >




    [noparse][[/noparse]Non-text portions of this message have been removed]
  • ArchiverArchiver Posts: 46,084
    edited 2002-09-20 21:45
    This is an excerpt of my code. Assuming you press 1 and the program branches
    to CHAN1...After the 1st (See in Code Below) I2CIN command, the SerInPort
    and SerSpeed varibles goto 0 and the next (See in Code Below)I2CIN command
    gets stupid due to the lack on Address and Command Variables. I can
    subastute the variables for constants and it works fine! This is my
    problem...

    '{$STAMP BS2p}

    Value VAR WORD
    ValueLow VAR BYTE
    ValueHigh VAR BYTE
    Channel VAR BYTE
    ADAddress VAR BYTE
    SerInPort VAR BYTE
    SerOutPort VAR BYTE
    SerSpeed VAR BYTE

    Command1 CON %10001100
    Command2 CON %11001100
    Command3 CON %10011100
    Command4 CON %11011100
    Command5 CON %10101100
    Command6 CON %11101100
    Command7 CON %10111100
    Command8 CON %11111100

    ADAddress = %10010001
    SerSpeed = 240
    SerInPort = 16
    SerOutPort = 16

    INITIALIZE:
    Debug "Hello"

    MAIN:
    DEBUG "WAITING", " " , BIN SERINPORT, " " , BIN sERsPEED
    SERIN SerInPort,SerSpeed,[noparse][[/noparse]DEC Channel]
    Branch Channel, [noparse][[/noparse]ZERO,CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN1,CHAN6,CHAN7,CHAN8]
    Goto ERROR

    CHAN1:
    DEBUG "Entered 1"
    SEROUT SerOutPort,SerSpeed, [noparse][[/noparse]65]
    I2CIN 8,ADADDRESS, COMMAND8,[noparse][[/noparse]STR VALUE\16]
    <
    1st Execution

    DEBUG cls, BIN COMMAND1, " ",BIN ADADDRESS, " " , DEC VALUE, cr
    I2CIN 8,ADADDRESS, COMMAND2,[noparse][[/noparse]VALUE]
    <
    2st Execution

    DEBUG BIN COMMAND2, " ",BIN ADADDRESS, " " , DEC VALUE, cr
    I2CIN 8,ADADDRESS, COMMAND3,[noparse][[/noparse]VALUE]
    DEBUG BIN COMMAND3, " ",BIN ADADDRESS, " " , DEC VALUE, cr
    I2CIN 8,ADADDRESS, COMMAND4,[noparse][[/noparse]VALUE]
    DEBUG BIN COMMAND4, " ",BIN ADADDRESS, " " , DEC VALUE, cr
    I2CIN 8,ADADDRESS, COMMAND5,[noparse][[/noparse]VALUE]
    DEBUG BIN COMMAND5, " ",BIN ADADDRESS, " " , DEC VALUE, cr
    I2CIN 8,ADADDRESS, COMMAND6,[noparse][[/noparse]VALUE]
    DEBUG BIN COMMAND6, " ",BIN ADADDRESS, " " , DEC VALUE, cr
    I2CIN 8,ADADDRESS, COMMAND7,[noparse][[/noparse]VALUE]
    DEBUG BIN COMMAND7, " ",BIN ADADDRESS, " " , DEC VALUE, cr
    I2CIN 8,ADADDRESS, COMMAND8,[noparse][[/noparse]VALUE]
    DEBUG BIN COMMAND8, " ",BIN ADADDRESS, " " , DEC VALUE
    GOTO MAIN

    <<<<EXCERPT>>>>

    Original Message
    From: S Parkis [noparse]/noparse]mailto:[url=http://forums.parallaxinc.com/group/basicstamps/post?postID=tfdVLCuCzb8CQs-leOHD0ZbPGyb60jQqrAexs0BMWcLXL7jbi_o3upO6XPTcaLP3hkw4z-yNOahkm2X4]parkiss@e...[/url
    Sent: Friday, September 20, 2002 12:03 AM
    To: basicstamps@yahoogroups.com
    Subject: Re: [noparse][[/noparse]basicstamps] I2CIN Help


    The I2CIN command doesn't arbitrarily clear variables. Without
    seeing your code, I'm guessing you may be reading in more bytes of
    data than you have set aside for their receipt, thereby storing the
    incoming data into other variables' locations. If you'll post your
    code, someone will probably see the problem.


    Regards,

    Steve

    On 20 Sep 02 at 18:53, pjk_usa2002 wrote:

    > Can someone tell me why when I use the "I2CIN" command it resets all
    > of my variables to "0"...

    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 2002-09-20 21:50
    Post some code examples and the stamp type you're using (2p or 2p40).
    I've been working with I2CIN all day and haven't experienced what you're
    seeing.

    As someone else mentioned, it might be some sort of a brownout
    condition. Do you have any sort of audible or visual indicator of
    program start (like the piezo beep example used in the Boe Bot?) might
    be a good idea, at least during the development phase.

    On Fri, 2002-09-20 at 14:53, pjk_usa2002 wrote:
    > Can someone tell me why when I use the "I2CIN" command it resets all
    > of my variables to "0". The only work around I have found is to use
    > the "PUT" command for all of my variables to scratch pad ram before
    > the "I2CIN" command executes and a "GET" command to retreive after...
    >
  • ArchiverArchiver Posts: 46,084
    edited 2002-09-20 22:06
    At 03:45 PM 9/20/2002 -0500, you wrote:
    >This is an excerpt of my code. Assuming you press 1 and the program branches
    >to CHAN1...After the 1st (See in Code Below) I2CIN command, the SerInPort
    >and SerSpeed varibles goto 0 and the next (See in Code Below)I2CIN command
    >gets stupid due to the lack on Address and Command Variables. I can
    >subastute the variables for constants and it works fine! This is my
    >problem...

    Phillip -

    Try starting with something other than Port 16 and see if anything changes.

    Regards,

    Bruce Bates
  • ArchiverArchiver Posts: 46,084
    edited 2002-09-20 23:50
    I believe I found your problem. Your I2CIN line tells the Stamp to get 16
    bytes of data and put it in variable called Value. The Stamp will happily do
    this. What's happening though, is the compiler is assigning Value to RAM
    locations zero and one since it's a Word and Words are assigend first. So,
    your I2CIN line is overwriting your other variables -- you [noparse][[/noparse]inadvertently]
    told it to.

    Change your definition to this:

    value VAR Byte(16)

    to allocate 16 bytes of RAM space for your data.

    If your intention was to read 16 bits, you don't need the \16. Change your
    I2CIN line to this:

    I2CIN 8,ADADDRESS, COMMAND8,[noparse][[/noparse]value.LowByte, value.HighByte]

    This works because I2C devices are byte-oriented.

    I hope this helps.

    -- Jon Williams
    -- Parallax



    In a message dated 9/20/02 3:48:47 PM Central Daylight Time,
    pkocmoud@h... writes:


    > This is an excerpt of my code. Assuming you press 1 and the program branches
    > to CHAN1...After the 1st (See in Code Below) I2CIN command, the SerInPort
    > and SerSpeed varibles goto 0 and the next (See in Code Below)I2CIN command
    > gets stupid due to the lack on Address and Command Variables. I can
    > subastute the variables for constants and it works fine! This is my
    >




    [noparse][[/noparse]Non-text portions of this message have been removed]
  • ArchiverArchiver Posts: 46,084
    edited 2002-09-21 00:01
    That worked flawlessly, Thank you and Everyone for there help!

    Phil

    Original Message
    From: jonwms@a... [noparse]/noparse]mailto:[url=http://forums.parallaxinc.com/group/basicstamps/post?postID=AvN3VoMtMPm0G_iB6iiW5Zem_CgTn_rAXq8N6nScCGRu2TrIYfhz6Izih3HdtXbyZha3oL2U]jonwms@a...[/url
    Sent: Friday, September 20, 2002 5:51 PM
    To: basicstamps@yahoogroups.com
    Subject: Re: [noparse][[/noparse]basicstamps] I2CIN Help


    I believe I found your problem. Your I2CIN line tells the Stamp to get 16
    bytes of data and put it in variable called Value. The Stamp will happily
    do
    this. What's happening though, is the compiler is assigning Value to RAM
    locations zero and one since it's a Word and Words are assigend first. So,
    your I2CIN line is overwriting your other variables -- you [noparse][[/noparse]inadvertently]
    told it to.

    Change your definition to this:

    value VAR Byte(16)

    to allocate 16 bytes of RAM space for your data.

    If your intention was to read 16 bits, you don't need the \16. Change your
    I2CIN line to this:

    I2CIN 8,ADADDRESS, COMMAND8,[noparse][[/noparse]value.LowByte, value.HighByte]

    This works because I2C devices are byte-oriented.

    I hope this helps.

    -- Jon Williams
    -- Parallax



    In a message dated 9/20/02 3:48:47 PM Central Daylight Time,
    pkocmoud@h... writes:


    > This is an excerpt of my code. Assuming you press 1 and the program
    branches
    > to CHAN1...After the 1st (See in Code Below) I2CIN command, the SerInPort
    > and SerSpeed varibles goto 0 and the next (See in Code Below)I2CIN command
    > gets stupid due to the lack on Address and Command Variables. I can
    > subastute the variables for constants and it works fine! This is my
    >




    [noparse][[/noparse]Non-text portions of this message have been removed]


    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.