www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AND-Wired Bus auch so möglich?


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe eine grundsätzliche Frage zur Realisierung.
Setup A,B,C Komponenten möchten kommunizieren. Ob multimaster
oder nur ein Master, soll offen sein bzw in Software implementiert
werden.

Erste saubere Methode, die ich mir vorstelle, ist:
Jeder Teilnehmer muss 2 I/O Pins entbehren. Einer davon wird
als Input konfiguriert und lauscht/pollt an der/die gemeinsame/n
Datenleitung. Der andere wird als Output konfiguruert und steuert
einen Transistor oder MOSFET, der die Datenleitung zur Masse
zieht, wenn durchgesteuert. Sind alle Transistoren gesperrt,
zieht ein Widerstand Datenleitung auf Vdd.

Diese Methode finde ich sauber und ist denke ich mal den meisten
gut bekannt.

Was ich mich frage ist, ob eine derartige Verbindung auch mit
einem Pin auskommen kann, der abwechselnd als Input/Output
umkonfiguriert wird. Folgendermassen soll es implementiert werden:
Datenleitung hängt auch über R an Vdd. Im Idle stellen alle
auf Input und pollen(in welchen Abständen auch immer) die Leitung,
auf Startkondition wartend. Will nun einer senden, stellt er
seinen Pin Output, und sendet. Bevor er das tut lauscht er natürlich,
und stellt sicher, dass die Leitung auf '1' ist.
Wie sauber ist diese Methode?

Bei beiden wird die Kollisionvermeidung in Software implementiert.
Vom Kommunikationsprotokol sehe ich keine Unterschiede.

Grüsse, Daniel

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar geht das. Allerdings muss der Pin natürlich als Open Drain 
arbeiten, also ohne aktivem Pullup. Obacht: Je nach Typ des Controllers 
wird es vielleicht nicht möglich sein, den tatsächlichen Zustand eines 
solchen Pins zu erfahren, was hier aber zwingend notwendig ist.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Klar geht das. Allerdings muss der Pin natürlich als Open Drain
>arbeiten, also ohne aktivem Pullup.

Ist Open Drain bzw Open Collector nicht gerade dadurch charakterisiert,
dass Pullup Widerstand da ist?
Wenn ich nach diesem Einwand überlege, so ist der Pullup nicht
zwingend notwendig. Im Hinterkopf habe ich allerdings die Aussage,
dass es besser ist, Busse auf definierte Spannungspegel zu legen,
da ein schwebender Bus ("floating") anfällig für elektromagnetische
Strahlung ist. Wenn alle Teilnehmer auf Input schalten, so ist das
doch gleichwertig mit tristate, oder? Dh der Bus schwebt dann, wenn
kein Pullup da ist.

>Obacht: Je nach Typ des Controllers
>wird es vielleicht nicht möglich sein, den tatsächlichen Zustand eines
>solchen Pins zu erfahren, was hier aber zwingend notwendig ist.

Welche Controller sind nicht in der Lage dazu?
Vom PIC weiss ich, dass er das liest, was tatsächlich auf der
Leitung ist und nicht den vorher eingeschriebenen Wert. Also
wenn Pin auf Output konfiguriert ist und 1 treibt, aber die
Leitung viel niederohmiger irgendwo zur Masse geht, gewinnt die 0.
Beim Lesen wird 0 erkannt.
Was macht ein AVR, atmega8 in diesem Fall?

Grüsse, Daniel

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.