Hier gibt es die Möglichkeit, den CRC8 Code für eigene 1-Wire-Salves zu berechnen. Dies ist das letzte Byte in der 8 Byte (64 Bit) langen ID mit der jedes 1-Wire Gerät eindeutig adressiert wird. Bei den Original-Chips von MAXIM ist die Eindeutigkeit von Haus aus gegeben. Bei eigenen 1-Wire-Geräten muss selbst auf eindeutige IDs geachtet werden. Das erste Byte gibt immer die Gerätefamilie an, bei dem Thermometer DS18B20 ist es 28h und bei dem Zählerbaustein DS2423 1Dh.

Zur Berechnung muss der Code in der Form

{0x28,0xA2,0xD9,0x84,0x00,0x00,0x01,0x00}

eingegeben werden. Das letzte Byte wird dann einfach überschrieben.

 


Die 1-Wire ID mit korrekten CRC lautet:

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}



 

PHP-Quellcode zur Berechnung

\\$ra enthaelt mind. die ersten 7 Bytes der ID
     $lscrc=0x0;
     for ($i=0;$i<7;$i++) { 
         for ($bit=1;$bit<256;$bit=$bit*2) {
             if (($ra[$i]&$bit)==$bit) $lactbit=1; else $lactbit=0;
             if (($lscrc&1)!=$lactbit) $lscrc=($lscrc>>1)^0x8c; else $lscrc=($lscrc>>1);
          }
     }
     $ra[7]=$lscrc;

You have no rights to post comments

Zum Seitenanfang