Hallo, ich bin im Moment dabei den Temperatursensor DS18S20 zu programmieren und soweit funktioniert alles. Allerdings möchte ich nun mehrere Sensoren an einen Bus hängen und dafür ist ja nötig, dass ich die Seriennummern kenne, oder? Ich versteh allerdings nicht, wie ich den Code bekomme. Mit READ_ROM soll es ja irgendwie möglich sein, wenn nur ein Sensor am BUS ist, dessen Seriennummer zu bekommen. Wird dann nach dem Befehl READ_ROM vom Sensor der komplette 64-BIT code gesendet? Oder muss ich noch einen READ_SCRATCHPAD anfügen? Ich habe das Prinzip nicht durchschaut. Das Datenblatt habe ich mir natürlich durchgelesen, finde aber, dass dort nicht ersichtlich ist, wie die Prozedur abzulaufen hat. LG
Lukas S. schrieb: > Wird dann nach dem Befehl READ_ROM vom > Sensor der komplette 64-BIT code gesendet? JA! >Oder muss ich noch einen READ_SCRATCHPAD anfügen? Nein! SCRATCHPAD wirst du zwar auch auslesen wollen, weil Du die Temperatur auch wissen willst. Aber für den ROM-Code brauchst es nicht auszulesen. TX Reset Master issues reset pulse. RX Presence DS18S20 responds with presence pulse. TX CCh Master issues Skip ROM command. TX Reset Master issues reset pulse. TX 33h Master issues READ - ROM command. Ab da den 64 Bit-Code in einen speicher ablegen. Also 8 byte.
Klasse, funktioniert super, vielen Dank! wie funktioniert dann die MATCH_ROM routine? reset; MATCH_ROM command; und dann den 64-BIT code des jeweiligen Sensors? anschließend einen DS18S20 command? ist dies irgendwo im Datenblatt beschrieben? Für den SEARCH_ROM find ich auch keine Vorgehensweise. LG
>Für den SEARCH_ROM find ich auch keine Vorgehensweise. http://www.maxim-ic.com/app-notes/index.mvp/id/187 Ab Seite 51: http://pdfserv.maxim-ic.com/en/an/AN937.pdf
Lukas S. schrieb: > wie funktioniert dann die MATCH_ROM routine? > reset; > > MATCH_ROM command; > und dann den 64-BIT code des jeweiligen Sensors? Genau so! > anschließend einen DS18S20 command? Versteh ich jetzt nicht! > ist dies irgendwo im Datenblatt beschrieben? JA! Seite 17 Example 1 > Für den SEARCH_ROM find ich auch keine Vorgehensweise. Die Routine dazu gibt es im Netz sogar von Dallas aber wirklich nützlich find ich Search_ROM eh nicht.
Lukas S. schrieb: > Für den SEARCH_ROM find ich auch keine Vorgehensweise. Z.B.: Beitrag "DS1820, DS18B20 in C" Klaus schrieb: > aber wirklich nützlich > find ich Search_ROM eh nicht. Doch, ist es. Man kann damit sehr bequem alle Sensoren auslesen und muß nicht die Codes aller Sensoren speichern. Nach jedem Search-ROM ist ein Sensor adressiert und kann ausgelesen werden. Um einen Sensor einer Meßstelle zuzuordnen, kann man eine Nummer in dessen EEPROM (2 Byte) speichern. Peter
danke euch beiden @Peter: die sachen hatte ich mir schon angeguckt, aber wirklich schlau bin ich aus dem Purogrammiertem nicht geworden. Um was zu lernen, muss ich das einfach von Grund auf selbst programmieren und nachvollziehen... u
Entspricht doch dem Ablaufdiagramm im Datenblatt mit kleinen Optimierungen für den Programmablauf. Der Trick ist, jedes Bit wird zweimal gelesen und dann wird das Bit gesendet, für das sich der Algorithmus entschieden hat. Ein Zähler merkt sich die Position der letzten Diskrepanz, damit im nächsten Durchlauf der entgegengesetzte Pegel gesendet werden kann. Sind alle Diskrepanzen aufgelöst, dann wurde der letzte Sensor gefunden. Jeder Durchlauf adressiert einen Sensor. Man kann in gleich auslesen oder seine Adresse irgendwohin speichern. Peter
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.