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:
USB LCD Displays - Graphic and Character LCDs with a Keypad

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.
 

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