Bus Signale beim DS2438 auslesen.

Hallo,

hier nun die Bussignale eines DS2438 aus Speicher Mangel musste ich den ersten Befehl weg lassen, um das weit aus interessante Ende noch mit auf zu nehmen.
Eine Besonderheit hat es mit dem DS2438 und IPS, der DS2438 hat nur einen A/D Wandler den man auf VAD oder VDD umschalten kann, IPS macht das nun mit einen Trick und liesst den DS2438 zweimal aus einmal mit Schalterstellung VDD und einmal mit VAD.
Hier ein paar Erklärungen, wird noch erweitert:

0x55 0x26 0xDC 0x39 0xF5 0x00 0x00 0x00 0x5F

Mit dieser Sequenz wird ein bestimmter 1-Wire Baustein ausgewählt.
0x55 = Ist der Befehl MatchROM, somit wird nur der Baustein mit der nachfolgenden Seriennummer angesprochen.
0x26 ist noch ein besonderer Teil der Seriennummer, alle DS2438 haben an dieser Stelle eine 0x26 zu stehen, der Rest der Seriennummer ist zufällig.

0xBE 0x00 0x0F 0x00 0x1A 0xEF 0x01 0xFE 0xff 0x00 0xAC

0xBE eine Seite aus dem DS2438 auslesen.
0x00 Auslesen der Seite 0
0x0F Momentane Konfiguration hier mit dem Bit für VDD auslesen.
Die nächsten 2 Bytes enthalten die Temperatur, diese 2 Bytes müßen für menschliches Verständnis erst ein mal vertauscht werden, wir erhalten:
0x1a 0x00
Daraus können wir aber immer noch keinen Temperaturwert erkennen, deshalb wandeln wir die Zahlen von HEX in Binär um:
00110100 00000000
^ Das erste Bit gibt an ob es sich um eine positive oder negative Temperatur handelt, in unseren Fall 0, also Positiv.
Die restlichen 7 Bits sind die Temperatur ohne Kommastellen, bei uns also 26°C
Das zweite Byte gibt die Kommastellen an, in unseren Fall ist es zwar einfach nämlich 0 die gesamte Temperatur ist also 26,0°C
Nicht so einfach ist es wenn der Baustein eine Kommastelle gemessen hat.
Nehmen wir an das zweite Byte würde so aussehen 10110000 (0xB0)
Dann müssen rechts erst ein mal 3 nullen abgeschnitten werden, wir erhalten
10110. 10110 entspricht dezimal der Zahl 22 was aber nicht die Nachkommastellen sind, sondern die Anzahl der Schritte der Kommastelle.
Der Ds2438 misst die Kommastellen in Schritten von 0,03125°C, wir erhalten also 22 x 0,03125°C = 0,6875°C, Zusammen gesetzt 26,6875°C

Als nächstes folgten 2 Bytes mit den Spannungswert den der A/D Wandler gemessen hat:
0xEF 0x01, diese beiden Bytes müssen wieder getauscht werden, wir erhalten
0x01 0xEF oder 0x01EF was wiederum dezimal 495 ergibt und wieder die Anzahl der Schritte ist.
Der A/D Wandler arbeitet in Schritten von 0,01 Volt diese mal 495 ergibt 4,95Volt welche weil wir ja gerade VDD gemessen haben die Versorgungsspannung des Bausteinen ist.

0x4E 0x00 0x07

0x4E Schreibbefehl für eine Seite.
0x00 Schreiben aus Seite 0
0x07 Wert der in die Seite geschrieben wird, diesmal mit der Schalterstellung VAD Messen.

Schöne Grüße
Thomas