DS2438 auslesen

Gast #954054
Lesenswert?

Hallo zusammen,

ich möchte einen Battery Monitor auslesen. Dieser arbeitet wie 
Temperatursensoren von Dallas mit dem 1-wire Interface. Das Programm hab 
ich nach der Vorlage des AppNote von Atmel selber geschrieben. Nun 
möchte ich die Spannung, Temperatur und den Strom auslesen, doch das 
will nicht funktionieren. Ich mache als erstes einen Skip Rom (0xCC) und 
schicke danach meine Anforderung. Wenn ich nun das Scratchpad auslesen 
will, schickt er mir als erstes das Configurationbyte, dessen Wert auch 
stimmt. alle weiteren Bytes sind dann '0' bis auf das letzte, das 
Threshold byte, das überträgt auch wieder einen Wert. Daraus schließe 
ich mal, dass meine Software funktioniert.
Um eine Temperatur auszulesen gehe ich folgendermaßen vor:

Hier ersteinmal die Temperatur messen:
reset;
skip rom (0xCC);
Convert T (0x44);
reset;

Un dann vom scratchpad auslesen:
reset;
skip rom (0xCC);
Read Scratchpad (0xBE);
Page 0 (0x00);
Read Byte 0 ();
Read Byte 1 ();
Read Byte 2 ();
.
.
.
Read Byte 7 ();
reset;

Byte 0 und Byte 8 enthalten Daten, die restlichen nicht. Hat es was 
damit zu tun, dass Byte 0 und 7 non volatile sind?

Habe ich hier irgendwo einen Denkfehler oder sonstigen Fehler? Also das 
Timing und somit die Übertragung müsste ja eigentlich 
stimmen...(sourcecode im Anhang).

Hoffe ihr könnt mir helfen.

Gruß
Patrick
Angehängte Dateien:
#954308
Lesenswert?

Auf den ersten Blick sieht alles gut aus - allerdings ist dein Timing 
immer hart an der Grenze des erlaubten, z.B.

unsigned char read_bit (void)
  pin_low();
  _delay_us(6);
  pull_up();
  _delay_us(9);

Hier würde ich 2µs und 10µs warten, um noch sicher innerhalb des 
Sampling-Window von 15µs zu sein. Frequenz des Controllers ist richtig 
eingestellt?
Daran scheint dein Problem aber nicht zu liegen.

Ist denn das "Temperature Busy Flag" auch wirklich nicht mehr gesetzt 
wenn du die Daten ausliest?
Benutzt du nur den internen Pullup? Der könnte etwas schwach sein für 
die Datenleitung.
Hat der DS eine eigene Spannungsversorgung oder läuft er im parasitic 
mode?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren