Forum: Mikrocontroller und Digitale Elektronik Wie funktioniert ein 1wire Bus ?


von Markus (Gast)


Lesenswert?

Hallo,
ich habe hier nach "1 wire" gesucht, aber keinen guten Einstieg/Link
zur Definition/Erklärung des 1 wire Busses gefunden :(
Ich möchte mit minimalsten Mitteln mehrere µC kontrollierte Geräte
(Meßwerterfassung, Aktuator-Steuerung usw.) auf die einfachste Weise
miteinander über mindestens 1m Entfernung miteinander verbinden.
Also ungefähr so etwas:

+------+              +------+              +--------+
|Master|              |Sensor|              |Aktuator|
|      |---1m Draht---|      |---1m Draht---|        |--- usw.
|      |              |      |              |        |
+------+              +------+              +--------+

Soweit ich es verstanden habe, wird der 1 wire Bus im von jedem
Teilnehmer auf Low gezogen, um zu übertragen.
Ist das richtig ?
Wenn ich nun in jedem Teilnehmer, die ja eine eigenständige
Stromversorgung haben, den 1 wire mit Strom versorge, kann ich dann
einen Meter und mehr Entfernung überbrücken ?
Soweit meine Frage zur E-Technik ;)
Nun etwas ganz anderes, wo bekomme ich eine Einführung in 1 wire
Software für ATMEL µCs her ?
Weil die können zwar I2C, SPI und UART aber kein hardwaremäßiges 1 wire
:(
Hintergrund ist, das einige Sensoren und Aktuatoren bereits vorhanden
sind und gerade mal einen Pin frei haben.
Konkret handelt es sich um ATTiny25 und ATTiny13 µCs.
Als Master dachte ich an einen ATMega8, der via RS232 mit einem PC
verbunden ist.
Nochmal zusammengefaßt:
1. Wo bekomme ich eine gute physikalische Beschreibung des 1wire Bus?
2. Wo bekomme ich eine gute Einführung/Beispiel für Atmel µCs ?
3. Wo bekomme ich eine gute Beschreibung des 1wire Protokolls ?
4. Der Code sollte C sein (Assembler wenns einfach inline geht).
Vielen Dank,
Markus

von Wegstabenverbuchsler (Gast)


Lesenswert?

Das Grundprinzip vom alten Koax-Ethernet (war auch nur 1 Signalstrippe
für alle angeschlossenen Teilneher)

CSMA/CD (Carrier Sense Multiple Access / Collision Detection)

Horche (als sendendes Gerät) in die Leitung rein, ob die grad frei ist
(=Carrier Sense)

Falls die Leitung als frei erkannt wird, dann quassel los. Da das
grundsätzlich auch mehrere angeschhlossene Geräte gleichzeitig machen
könnten (=Multiple Access), greift:

Prüfe während des Versands) ob die Signale zerquetscht aussehen (weil
sie mit einem ebenfalls grade sendennden Gerät zusammen geraschelt sind
(=collision detection)

und um sein zu übermittelndes Zeugs dennoch loszuwerden, mache
folgendes. Warte eine willkürliche (zufällige) Zeit zwischen xxx und
yyy Millisekunden, und dann versuchs noch mal

von Roland P. (pram)


Lesenswert?

Solange er einen definierten Master hat braucht er eigentlich kein
CSMA/CD Protokoll.

Das 1wire Protokoll funktioniert in Etwa so:
Zuerst wird der Bus eine Zeit lang auf high gelassen, dabei können sich
die Kondensatoren in den Clients aufladen. Dann erfolgt die serielle
Datenübertragung. Die Kondensatoren stellen dann kurzfristig die
Stromversorgung der Clients sicher.
Des Weiteren gibt es noch so was wie einen Tree-Walk. Damit lässt sich
der Bus nach Devices abscannen
(das gibts bei Dallas als PDF zum Nachlesen)
Such mal nach DS1820, da das der wohl meist verwendete Baustein ist,
findest du da vermutl. den meisten Code damit.

Übrigens vorsicht beim Nachbau con slaves.
Der Begriff (und evtl auch das Protokoll) 1wire ist soweit ich weiß von
dallas geschützt.

Gruß
Roland

von Profi (Gast)


Lesenswert?

Bei Dallas/Maxim findest Du alle Definitionen zum Standard.
http://www.maxim-ic.com/products/ibutton/tech_support.cfm

Ein Vorteil könnte die Stromversorgung über die Bus-Leitung sein
(parasite power), kann man (auch bei anderen Protokollen) über eine
(Schottky-)Diode und einen Kondensator realisieren.

Evtl. eignet sich auch das CAN-Protokoll mit vereinfachtem
Hardware-Protokoll. Die Zustände dominant und rezessiv kann man bei
kurzen Verbindungen auch nicht-differentiell realisieren (z.B. wired-or
mit Dioden: dominant = low, rezessiv = high).
Aber das geht nicht in Software.

von Kon (Gast)


Lesenswert?

Hi,

vielleicht hilft dir auch die App Note von Atmel.

http://www.atmel.com/dyn/resources/prod_documents/doc2579.pdf

Gruß

Kon

von Marcus (Gast)


Lesenswert?

wie wäre es mit TwoWire/I2C?
da gibt es gleich sehr viele bauteile mit passendem interface und sehr
viel dokumentation.

von Uwe Bonnes (Gast)


Lesenswert?

One-Wire erlaubt viele gleich Devices an einem Bus. Das kann I2C oder
SPI nicht bieten. Ausserdem erhaelt man eindeutige Hardware IDs, die
man auslesen kann, dass kann auch ein Vorteil sein.

Wenn man einen UART am uC uebrig hat, ist die Ansteuerung auch nicht
schwierig.

von Marcus (Gast)


Lesenswert?

Warum sollte das mit SPI nicht gehen, dafür gibts doch den Chip- oder
Slave-Select.

Marcus

von Marcus (Gast)


Lesenswert?

SPI hat aber wieder 4 adern...
I2C nur 2 und auch ne hardware/slave adresse und somit auch viele
devices an einem bus; mit busbuffer (P82B96) sogar beliebig viele.

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
Noch kein Account? Hier anmelden.