PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DS1820 Reihenfolge festlegen



cas
10.12.2009, 17:30
Hallo,

wenn man mehrere DS an einem "Bus" also alle an einem Port hat, wie kann ich dann die Reihenfolge bestimmen?

In den Beispielprogrammen wird meistens der erste gesucht und dann der nächste und dann der nächste usw.

Aber welcher ist das denn nun genau???
Was passiert, wenn ein DS sich beim ersten Aufrufen nicht meldet?

Kann man 5 oder 6 DS jeweils einzeln an einem eigenem Port per Atmega betreiben?

Danke für die Hilfe von Euch

MfG CAS

linux_80
10.12.2009, 20:55
Hallo,

Du musst die IDs aller DSen kennen, dann weiss man auch welcher wo welche Temperatur misst. Das Heisst, wenn man die IDs der DS1820 kennt, kann man die auch gezielt am Bus ansprechen.

Jeden einzeln an einem Port geht natürlich auch, ist aber eher Verschwendung.

Markus_HH
10.12.2009, 21:14
Das schöne an dem 1-wire (sind ja eigtl. 2 bzw 3, wenn man sie nicht parasitär nutzt) ist ja grade, dass man nur _ein_ Kabel benötigt. Bei mehreren Ports wären es auch mehrere Kabel. Das macht ja nicht viel Sinn, oder?
Ich mache es so, dass ich die einzelnen DS18S20 zuerst identifiziere (ID) und mir dann merke, welcher DS die entsprechende ID hat. Dann kann man sie per Software nachher einfach zuordnen.

cas
11.12.2009, 08:40
ist schn richtig, aber man hat immer die dreifache Arbeit.
Erstmal die ID lesen (jeden einzeln), dann als gesamtes aufrufen und dann im Programm oder sonstwie (Dipschalter oder so) im Programm zuordnen.

Muß man eigentlich einen Pin am C-Port benutzen oder geht auch ein anderer?

Wie funktionert das, wenn die Daten/praktisch auf der Betriebsspannung mitlaufen sollen (also insgesamt nur 2 Adern?) ?

MfG CAS

screwdriver
11.12.2009, 08:43
Die Frage von cas bezieht sich vermutlich auf die in den Bascom-Beispielprogrammen benutzten Funktionen 1WIRESEARCHFIRST() und 1WIRESEARCHNEXT().


wenn man mehrere DS an einem "Bus" also alle an einem Port hat, wie kann ich dann die Reihenfolge bestimmen?
Die Reihenfolge ist durch die Seriennummern der 1Wire-Chips festgelegt und beginnt mit der niedrigsten gefundenen Seriennummer.


Was passiert, wenn ein DS sich beim ersten Aufrufen nicht meldet?
Der taucht dann in der Liste nicht auf und die nachfolgenden rücken auf.


wenn man mehrere DS an einem "Bus" also alle an einem Port hat, wie kann ich dann die Reihenfolge bestimmen?
In den Beispielprogrammen wird meistens der erste gesucht und dann der nächste und dann der nächste usw.

Fazit: Wie cas eigentlich schon richtig vermutet, ist diese Methode nicht geeignet einen Bus von Temperatursensoren abzufragen, bei dem jedem Sensor eine feste Meßstelle zugeordnet ist. Das muß wie meine Vorredner schon schrieben über die vorher erfasste Seriennummer (ID) geschehen.

Die Bascom-Funktionen 1WIRESEARCHFIRST() und 1WIRESEARCHNEXT() nutzen den ROM SEARCH COMMAND der 1Wire-Chips. Diese Funktion macht nur Sinn, wenn ich einen Bus mit ständig wechselnden Teilnehmern zyklisch durchsuche, wie es z.B. bei Objekterkennungen oder Anwesenheitskontrollen der Fall ist.

Siehe www.ibutton.com/ibuttons/standard.pdf (C.3. Seite 51)

screwdriver