Hallo, ich will mich jetzt mal mit dem EEPROM der DS18S20/DS18B20 befassen und diese auslesen bzw. beschreiben. Das Datenblatt sagt ja, daß bei Power-Up die EEPROM-Daten schon im Scratchpad bereitliegen. Will man die EEPROM-Daten jedoch explizit nochmals auslesen (d.h. vom EEPROM ins Scratchpad übertragen), so dauert dies komischerweise einige Zeit. Die Datenblätter sagen dazu, man könne nach dem Senden des Auslesebefehls "RecallEE" (0xB8) "read-time slots" senden und aus deren Antwort den Status herausfinden bzw. feststellen, wann die Übertragung beendet ist. Das geht so ja auch beim Auslesen einer Temperaturwandlung; dort weiß man aber aus dem Datenblatt, daß dies max. 750 ms dauern kann; also kann man sich die "read-time slots" sparen und setzt dort einfach einen entsprechenden Delay (z.B. 800 ms oder 1000 ms), das wars. Das Datenblatt gibt jedoch überhaupt nichts her, wie lange diese Zeit bzw. der notwendige Delay beim EEPROM-Auslesen ist. Beim EEPROM-Schreiben sind es 10 ms, das steht im Datenblatt, aber fürs Lesen finde ich nichts. Hat sich jemand mal damit befaßt und kennt den sicheren Delay-Wert bzw. eine Quelle, wo es steht? Ich konnte nichts finden. Danke. Günter
Die Wandelzeit hat nix mit der Auslesezeit zu tun. Wandelzeit ist abhängig von der Auflösung und beträgt bei 12 Bit eben 750ms. Die Zeit für das Lesen ist doch unten im Datenblatt beschrieben. Man kann nach einem convert Befehl auch gleich lesen, nur erhält man eben die vorhergegangenen Werte. Simples Beispiel: Power up und direktes lesen des scratchpads zeigt eine "Temperatur" von 85,0 Grad, ein Testwert. Will man die aktuelle Tewmperatur muss man nach der Messung die Wandelzeit abwarten.
Jörn P. schrieb: > Wandelzeit ist > abhängig von der Auflösung und beträgt bei 12 Bit eben 750ms. aber bei parasitärer Speisung darf auch nicht zu schnell abgefragt werden, die internen Kondensatoren müssen sich auch wieder aufladen können.
Jörn P. schrieb: > Will man die aktuelle Tewmperatur muss man nach der Messung die > Wandelzeit abwarten. Hast du die Frage nicht verstanden?
Günter R. schrieb: > Das Datenblatt sagt ja, daß bei > Power-Up die EEPROM-Daten schon im Scratchpad bereitliegen. So ist es. "RecallEE" wird daher (fast) jeder als nutzlos abhaken.
Peter D. schrieb: > Günter R. schrieb: >> Das Datenblatt sagt ja, daß bei >> Power-Up die EEPROM-Daten schon im Scratchpad bereitliegen. > > So ist es. > "RecallEE" wird daher (fast) jeder als nutzlos abhaken. Das mag schon so sein und ist im normalen Betrieb auch richtig. Ich will jetzt aber ins EEPROM schreiben (das macht ja wohl auch fast niemand), um z.B. eine Sensornummer dort abzulegen. Dabei wurde empfohlen, das hatte ich irgendwo gelesen, danach das EEPROM zurückzulesen, um den Erfolg der Operation zu verifizieren. Und dafür benötigt man RecallEE. Außerdem gehts mir hier auch um ein "akademisches Interesse": warum ist die Wartezeit dafür - im Gegensatz zu den anderen Zeiten für EEPROM-Schreiben oder die Temp-Wandlungszeit - im Datenblatt nicht angegeben? Das ist sonderbar und es wird ja kein Geheimnis sein. Aber offensichtlich weiß es keiner. Man kann es ja an einigen Exemplaren messen, das ist ja leicht. Wäre aber schön, wenn der Hersteller für diesen Wert auch einen definierten Maximalwert angegeben hätte, mit dessen Einhaltung man immer auf der sicheren Seite wäre. Günter
Vermutlich ist die Lesezugriffszeit des EEproms nicht signifikant gegenüber den üblichen Zeiten des 1wire-Protokolls. Aber wenn man es genau wissen will, dann messen. -EEprom mit 0xAA beschreiben -Scratchpad mit 0x55 beschreiben -Recall EEprom ausführen und sofort -read Scratchpad hinterher Ich vermute, daß 0xAA in der untersuchten Bytezelle steht.
Carl D. schrieb: > Vermutlich ist die Lesezugriffszeit des EEproms nicht signifikant > gegenüber den üblichen Zeiten des 1wire-Protokolls. > > Aber wenn man es genau wissen will, dann messen. > -EEprom mit 0xAA beschreiben > -Scratchpad mit 0x55 beschreiben > -Recall EEprom ausführen und sofort > -read Scratchpad hinterher > Ich vermute, daß 0xAA in der untersuchten Bytezelle steht. Hallo Carl, danke für diese Anregung. Ich denke auch, daß es bltzschnell geht und daß dein beschriebenes Experiment so ausgeht. Man weiß dann aber dennoch nicht, wie knapp man gerade noch Erfolg hatte oder wie eine Exemplarstreuung einen Mißerfolg bringen könnte (klar: sehr theoretische Überlegung). Aber es geht noch einfacher und genauer. Im Datenblatt wird ja empfohlen, nach dem Copy-Befehl über "read-time slots" den Status abzufragen, damit erfährt man ja, wann die Copy-to-EEPROM-Operation abgeschlossen ist. Man nimmt sich einen freien Portpin, der durch Initialisierung zunäcbst low ausgibt, setzt ihn nach dem Copy-Befehl auf high, liest die read-time slots, bis der Status sagt "abgeschlossen" und setzt dann den Pin low. Dann muß man nur per Oszilloskop oder Zähler die Impulslänge messen und hat den Wert, und zwar recht genau. Read-time slots sind natürlich viel kürzer als das Lesen des gesamten Scratchpads. Das werde ich in Kürze mal machen und euch vom Ergebnis berichten. Aber wie gesagt: ich wundere mich immer noch darüber, warum der Hersteller, der die internen Abläufe ja genau kennt, darüber keine Angaben macht.
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.