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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.