633 DOW Device IDs

I have no urgent question here. Mostly tihis seems the place to share what I think I've figured out, and some verification or elaboration on interesting tangents might be nice.

Background: with 32 temp sensors attatched and most of them wet, keeping them ordered is a bit of work; which is which and how does the 633 order them from 0 to 31?

What I Found: The newer Wintest reports sensor ID's, but based on the Wintest reports I could not see how the 633 ordered the sensors. After exploring the Read Dow Device Information command's results, I concluded that something in the way the 633 reports via Read Dow Device Information is endian backwards bitwise within a byte and likely MSB ... LSB backwards. Without getting into all the details ( read my programming for that ) I wrote a variation of the 633-port to read and report both the raw and [ by my head scritching ] unscrambled ROM Ids and then throw up little tick marks in the console to show wheather any particular sonsor is warmer or cooler:

Code:
mk4:/usr/src/633-port-18-IDS# ./test633
Ultra-simple 633 command-line communications example.
Crystalfotnz America, Inc. [url]http://www.crystalfontz.com[/url]

          633-port-IDS modification by annonymous_putterer


3=open (/dev/ttyS1, 2)
tcgetattr(3, -1073744144 )
      wintest      bitflipped
  #   ID  ID  ID   ID  ID  ID
C=83(19 = Set Temp. Rpt),L=0,D="",CRC=0xF6D8
 00   C0  0D  88 : 03  b0  11
 01   F0  3A  88 : 0f  5c  11
 02   58  23  88 : 1a  c4  11
 03   F4  36  88 : 2f  6c  11
 04   EC  0E  88 : 37  70  11
 05   1C  4B  88 : 38  d2  11
 06   22  13  88 : 44  c8  11
 07   92  3B  88 : 49  dc  11
 08   F2  28  88 : 4f  14  11
 09   CA  83  88 : 53  c1  11
 10   AA  76  88 : 55  6e  11
 11   5A  37  88 : 5a  ec  11
 12   BA  4E  88 : 5d  72  11
 13   7A  41  88 : 5e  82  11
 14   FA  82  88 : 5f  41  11
 15   86  4C  88 : 61  32  11
 16   66  3F  88 : 66  fc  11
 17   96  79  88 : 69  9e  11
 18   F6  1E  88 : 6f  78  11
 19   8E  18  88 : 71  18  11
 20   FE  4E  88 : 7f  72  11
 21   F5  5F  88 : af  fa  11
 22   CD  1B  88 : b3  d8  11
 23   BD  48  88 : bd  12  11
 24   FD  61  88 : bf  86  11
 25   C3  15  88 : c3  a8  11
 26   23  1A  88 : c4  58  11
 27   33  50  88 : cc  0a  11
 28   07  61  40 : e0  86  02
 29   67  1C  88 : e6  38  11
 30   4F  3B  88 : f2  dc  11
 31   AF  50  88 : f5  0a  11
C=83(19 = Set Temp. Rpt),L=0,D="",CRC=0xF6D8

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
 
             4                                                                         29
               --                11       14             19                   26
       2
    1                                                             --
                                                   17                      --       --
                                    12                               23       --
                        --                                     21
                                                                  22
                                          14    16
                                                         19                               --
               --     7                                           22             --
                   6             11 12                         -- 22
                                                      18    20    22    24
                                                                  22    24             29
                                                                  22 23 24    26    --
                                                16                22    24 25
                                                                  22 23 24    26
                                                      18          22 23 24    26
         --                                              19       22 23 24    26
                                          14                      22 23 24    26
       2                                                                24    26       29
    1                                                             22       --                31
                                    12          16                   23 --                30
                                                                        -- --
                                 11                                     -- --
mk4:/usr/src/633-port-18-IDS#
The first section is on the left of the colon, the ROM IDs (minus the CRC portion ) as reported raw by the Read Dow Device Information command and Wintest, and on the right of the colon, the IDs when endianly-bit-transposed. That is to say that the bits of the left most byte of sensor zero above, 11000000, are summed by Wintest as 1*128 + 1*64 = 192 (decimal) = C0 (hex) and to the right of tho colon the same bits are summed as 1*1 + 1*2 = 3 (decimal and hexadecimal). Take the 1st column after the colon (and presumably the second and then the third in decreasing significance) to see how the 633 orders the sensors from 0-31. This summing of bits to yield 3 instead of 192 == C0 is what I am calling here 'endian backwards bitwise within a byte' and seems to be a necessary step in seeing a meaningful pattern in the 0-31 ordering.

The second section is based on live temperature reporting. Any temp significantly warmer gets it's number printed & cooler gets '--'. Calibrated for sqeezing one in your fingers or blowing on it for a few seconds, vs. moving one to the window.
Looking for additional LCD resources? Check out our LCD blog for the latest developments in LCD technology.
 
Last edited:

CF Tech

Administrator
There is an algorithm published on Dallas' site that enumerates devices on the one-wire bus. The firmware follows this routine and adds them to the device table as they are found, starting at slot 0.

I believe that the algorithm sorts them by the one-wire's 64 bit unique identifier. I am also pretty sure that the numbers reported by WinTest are byte reversed from what is in the Dallas data sheets.

One approach is to plug only one sensor at a time, get it detected and then mark it with its unique identifier. Then in your software, make a table of unique identifiers vs. function. Then label the sensors with their function, indexed by the unique identifier.

By using this technique, even if a sensor is removed (which will change the slot number of all the sensors above it) the function will still follow the correct sensor.
 
USB LCD Displays - Graphic and Character LCDs with a Keypad

CF Tech

Administrator
By the way, use the "code" tags:

[_c_o_d_e_] here is some mono-spaced text [_/_c_o_d_e_]

Without the "_" to get text columns to line up.
 
Top