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
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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.