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
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
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
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.
Hi, vielleicht hilft dir auch die App Note von Atmel. http://www.atmel.com/dyn/resources/prod_documents/doc2579.pdf Gruß Kon
wie wäre es mit TwoWire/I2C? da gibt es gleich sehr viele bauteile mit passendem interface und sehr viel dokumentation.
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.
Warum sollte das mit SPI nicht gehen, dafür gibts doch den Chip- oder Slave-Select. Marcus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.