mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 1 Wire mit Atmega328


Autor: Michi M. (mutzmutz)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich stehe unglaublich auf dem Schlauch im moment, also bitte 
entschuldigt schon jetzt die Frage :-) ! Recherchiere schon ziemlich 
lange und werd mir immer unsicherer...

Ich beschäftige mich im moment mit dem 1 Wire Bus. Eigentlich ist mir 
alles klar bzw. ich werde mich noch in die Thematik einarbeiten, der 
Punkt wo ich schon jetzt nicht 100% sicher bin ist, was für 
anforderungen der Pin des Masters (ich würde gerne den ATmega328 
verwenden, da ich den noch rumliegen habe) haben muss. Nach meinem 
wissen muss es ein  I/O Pin mit open collector oder tristate sein (weil 
beim 1 wire extern ein pull up platziert werden muss) ?! Im datenblatt 
des ATmega328 steht bei den I/O's dass diese Konfigurierbar sind... aber 
das sind dann auch schon alle infos, die ich gefunden habe !? Irgendwas 
stimmt doch hier nicht :) ?!

kann mir jemand auf die sprünge helfen ?
vielen dank

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der AVR kann ein Pin
 1. auf 0 ziehen
 2. auf 1 ziehen
 3. in ruhe lassen
 4. Hochohmig auf 1 ziehen

1+2 ist ein normaler logic Ausgang.
Variante 3 für Eingänge (tristate),
die 4. wenn man eine Pullup habe möchte.

Wenn man Zwischen 1 und 3 umschaltet hat man einen
open collector.

Also PORT auf 0 und DDR umschalten.
Wobei dann DDR = 1 0V am Pin ergibt.

Autor: Steffen Cölln (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Prizip ist es einfach. Die Busleitung ist eine über 
Pull-Up-Widerstand auf +5 Volt liegende Leitung. Alle Teilnehmer am Bus 
sind Open-Collektor-Ausgänge und ziehen den Bus auf GND. Deren Eingänge 
sollten, damit diese den Bus nicht auch ein bisschen runterziehen, 
CMOS-Eingänge sein. Kondensatoren auf dem Bus sind nicht erlaubt.

Wenn ein Teilnehmer eine Kommunikation einleiten will, legt er für eine 
bestimmte Zeit den Bus auf NULL -> Bus-Reset, dann sendet er als 
"Master" eine serielle Adresse an natürlich alle Teilnehmer und wartet 
danach eine bestimmte Zeit, bis sich der entsprechende Partner mit einer 
NULL für eine bestimmte Zeit meldet. Dann können diese Beiden sich 
"frei" unterhalten mit oder ohne Protokoll. Alle NULLen auf dem Bus sind 
recht kurz (usec), weil über dem Bus u.u. auch die Versorgung der 
Teilnehmer stattfindet. Und damit die Teilnehmer nicht in den 
"IDLE"-Mode (abgeschaltet gewesen) gehen, darf eine NULL eine bestimmte 
Zeit nicht überschreiten.

Wenn der Bus für längere Zeit konstant auf 5 Volt liegt, ist er frei für 
irgendeine andere Verbindung zwischen zwei Partnern.

Übrigens, der two-wire-bus (mit GND natürlich drei Leitungen) ist das 
gleiche, nur mit dem Unterschied, dass auf einer Leitung konstant 5 Volt 
liegen (Versorgung der periferen Teilnehmer). Macht mann wenn recht 
viele Teilnehmer am Bus hängen.

Ich hoffe, das bringt dich etwas weiter.

Autor: Michi M. (mutzmutz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im klartextr heisst das, dass ich den ATmega328 für den 1 wire bus 
verwenden kann ?!
Hab ich denn das falsche Datenblatt (siehe 1. Post), oder wo finde ich 
die befehlssätze, damit ich diese IO's konfigurieren kann ?
eine andere frage, gibt es bzw. kennt jemand eine bibliothek , wo 
"fertige" kommunikations- codes vorhanden sind ?

@steffen, der 2 wire bus ist also der 1 wire mit zusätzlicher 
speiseleitung (gleiches Protokoll ?)

vielen dank an beide !

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michi M. schrieb:
> @steffen, der 2 wire bus ist also der 1 wire mit zusätzlicher
> speiseleitung (gleiches Protokoll ?)

1-Wire-Bus besteht aus einem gemeinsamen Postenzial (GND) einer 
Versorgungsspannung (+5V) und dem Datenbus. Da man Versorgungen nicht 
zählt, sagt man 1-Wire-Bus.

Man braucht nicht immer alle drei Leitungen, sondern kann teilweise auch 
auf einen sogenannten parasitären Modus ausweichen. Hierbei wird die 
Versorgungsspannung von dem Datenbus geholt (Gleichrichter, 
Kondensator).

Es bleibt aber immer der selbe 1-Wire-Bus (und kein 2-Wire).

Das 2-Wire-Interface (TWI) ist I2C. Da hast Du, neben der Versorgung und 
Masse, ein Taktsignal und ein Datensignal. Das Protokoll ist 
grundverschieden zum 1-Wire-Bus.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch was:

Michi M. schrieb:
> im klartextr heisst das, dass ich den ATmega328 für den 1 wire bus
> verwenden kann ?!

Ja.
Es geht jeder AVR (und sicherlich auch PICs - kenne mich damit nicht 
aus).

> Hab ich denn das falsche Datenblatt (siehe 1. Post), oder wo finde ich
> die befehlssätze, damit ich diese IO's konfigurieren kann ?

Tim schrieb:
> Der AVR kann ein Pin
>  1. auf 0 ziehen
>  2. auf 1 ziehen
>  3. in ruhe lassen
>  4. Hochohmig auf 1 ziehen

Ich glaube schon, dass Du das richtige DB hast.

1 und 2 bedeutet, dass der Pin als Ausgang geschaltet wird.
3 und 4 auf Eingang. 3 = Pullup aus; 4 = Pullup ein.

Für 1-Wire schaltest Du die erforderlichen Signale mittels 
Datenrichtungsregister um - nicht über das Portregister.

PORT = 0
High bedeutet Pin in Ruhe lassen (also 3 = DDR auf Eingang)
Low  bedeutet Pin auf 0 ziehen (also 1 = DDR auf Ausgang)

Des weiteren ist noch ein Pullup-Widerstand notwendig.

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.