Berechnung des CRC-Bytes einer 1-Wire ID
Hier gibt es die Möglichkeit, den CRC8 Code für eigene 1-Wire-Slaves 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, einige Codes stehen unten.
Die 1-Wire ID mit korrektem CRC lautet:
–
Erzeugen einer „eindeutigen“ ID
Zur Vereinfachung kann hier eine eindeutige ID generiert werden, die zumindest unter allen hier erzeugten IDs (und bei allen von mir bestellten Platinen mit 1-Wire-Simulation) einzigartig ist.
Einige oft verwendete Family-IDs
PHP-Quellcode zur Berechnung
// $ra enthält mind. die ersten 7 Bytes der ID
$lscrc = 0x0;
for ($i = 0; $i < 7; $i++) {
for ($bit = 1; $bit < 256; $bit = $bit * 2) {
$lactbit = (($ra[$i] & $bit) == $bit) ? 1 : 0;
if (($lscrc & 1) != $lactbit) $lscrc = ($lscrc >> 1) ^ 0x8c; else $lscrc = ($lscrc >> 1);
}
}
$ra[7] = $lscrc;
