Shop OBEX P1 Docs P2 Docs Learn Events
Which is which — Parallax Forums

Which is which

ArchiverArchiver Posts: 46,084
edited 2001-05-30 06:39 in General Discussion

Could someone please explain the order of bits in the byte below.· Which is lsb and do they just go from left to right or right to left .· RTCCmd is 00010

SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]

\2,Value]

·LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2001-05-29 17:39
    The least significant bit (LSB) is on the right -- the most significant bit
    (MSB) is on the left. 00010 is 2 decimal.

    Original Message


    Could someone please explain the order of bits in the byte below. Which is
    lsb and do they just go from left to right or right to left . RTCCmd is
    00010

    SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]

    \2,Value]

    LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]
  • ArchiverArchiver Posts: 46,084
    edited 2001-05-29 17:51
    >Could someone please explain the order of bits in the byte below.
    >Which is lsb and do they just go from left to right or right to left
    >. RTCCmd is 00010
    >
    >SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]
    >
    >\2,Value]
    >
    > LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]

    The bits in your example will be transmitted in a funny order. Each
    _element_ in your list of values will be transmitted lsb first. They
    will come out as follows (assuming value=15, binary 00001111).

    0010000111110000
    ^^^^^^^^-value lsb first
    ^^-\2 lsb first
    ^^^^^-\5 lsb first
    ^-\1

    The bits appended to value are probably some command information.
    How are they supposed to come out?

    -- Tracy
  • ArchiverArchiver Posts: 46,084
    edited 2001-05-29 18:35
    Tracy, the command is for a DS1302 timechip. All the code I have for this
    chip uses the time function in the 24 hour format. I am attempting to
    change the command byte to use it in 12 hour time. The seventh bit is
    suppose to designate 12 or 24 hour time and the fifth bit is suppose to be
    AM or PM. I am having a hard time figuring out which bit to change but your
    response helps. Is not (%0\1,RTCCmd\5,%10\2) the same as 00001010 if RTCCmd
    = 00010 Each command is a byte long.

    Sorry, the color of my fonts in the editor is white and I thought I just
    pasted one command.
    This is the actual line of code:
    SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]



    ---- Original Message
    From: "Tracy Allen" <tracy@e...>
    To: <basicstamps@yahoogroups.com>
    Sent: Tuesday, May 29, 2001 11:51 AM
    Subject: Re: [noparse][[/noparse]basicstamps] Which is which


    > >Could someone please explain the order of bits in the byte below.
    > >Which is lsb and do they just go from left to right or right to left
    > >. RTCCmd is 00010
    > >
    > >SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]
    > >
    > >\2,Value]
    > >
    > > LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,Value]
    >
    > The bits in your example will be transmitted in a funny order. Each
    > _element_ in your list of values will be transmitted lsb first. They
    > will come out as follows (assuming value=15, binary 00001111).
    >
    > 0010000111110000
    > ^^^^^^^^-value lsb first
    > ^^-\2 lsb first
    > ^^^^^-\5 lsb first
    > ^-\1
    >
    > The bits appended to value are probably some command information.
    > How are they supposed to come out?
    >
    > -- Tracy
    >
    >
    >
    >
    > Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
    >
    >
    >
  • ArchiverArchiver Posts: 46,084
    edited 2001-05-30 06:39
    Hi ricky,

    I think your confusion arises because the commands are really 16 bits
    long, not 8. The 12/24 and pm bits are in the second byte. Here is
    the sequence of bits you have to send to the DS1302 to set the
    "hours" register--Please read this sequence from right to left,
    because you are going to send it least significant bit first:

    1010011010000100
    0--low for write
    00010--address register 2
    0--address clock (not RAM)
    1--write enable
    00110--6 o'clock
    1--pm
    0--nothing
    1--specify 12 (not 24) hour format

    You can deliver that to the DS1302 in several different ways.

    high rst
    SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%1010011010000100\16]
    low rst

    or
    x var word
    X=%1010011010000100
    high rst
    SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]X\16]
    low rst

    or
    x var word
    clock12 con %10000000
    pm con %00100000
    hoursR con 2<<1 ' shift left to put it in position
    writeC con %10000000

    x.byte0=writeC + hoursR
    x.byte1=clock12 + pm + 6
    high rst
    SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]x\16]
    low rst

    I think you did have it almost right, but I prefer to combine all of
    the command values into one word as above and then send it:

    value=%10100110
    SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%0\1,%00010\5,%10\2,value]

    You wondered specifically about how to set the 12/24 bit and the pm
    bit. Those are in the 5th and 7th bits of what you called "value".
    10100110
    ^^^^^--6 o'clock
    ^--pm
    ^--12 hour clock


    -- regards,
    Thomas Tracy Allen Ph.D.
    electronically monitored ecosystems
    mailto:tracy@e...
    http://www.emesystems.com



    >Tracy, the command is for a DS1302 timechip. All the code I have for this
    >chip uses the time function in the 24 hour format. I am attempting to
    >change the command byte to use it in 12 hour time. The seventh bit is
    >suppose to designate 12 or 24 hour time and the fifth bit is suppose to be
    >AM or PM. I am having a hard time figuring out which bit to change but your
    >response helps. Is not (%0\1,RTCCmd\5,%10\2) the same as 00001010 if RTCCmd
    >= 00010 Each command is a byte long.
    >
    >Sorry, the color of my fonts in the editor is white and I thought I just
    >pasted one command.
    >This is the actual line of code:
    >SHIFTOUT Dta, Clk, LSBFIRST, [noparse][[/noparse]%0\1,RTCCmd\5,%10\2,value]
Sign In or Register to comment.