www.mikrocontroller.net

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


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wegstabenverbuchsler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

vielleicht hilft dir auch die App Note von Atmel.

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

Gruß

Kon

Autor: Marcus (Gast)
Datum:

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

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcus (Gast)
Datum:

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

Marcus

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.