www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik unidirektionaler 8 Bit Datenbus?


Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kennt jemand von Euch, oder hat schon mal einer einen parallelen 
Datenbus aufgebaut, um z.B. x AVRs miteinander kommunizieren zu lassen.

Iststand bei mir: Jeder Atmel ist über einen Port an den Datenbus 
angekoppelt. Der Busmaster ist ein C167, der zyklisch alle 
Requestleitungen pollt. Will ein Atmel Daten senden, setzt er seine 
Requestleitung und erhält dann "irgendwann" sein Acknowledge über eine 
weitere Leitung.

Das unschöne ist nur, der Bus ist unidirektional und mit jedem weiteren 
Busteilnehmer werden wieder 2 weitere Leitungen (Request+Acknowledge) 
benötigt.

Gibt es fertige Bausteine, die so eine einfache paralelle Busankopplung 
ohne Begrenzung der Busteilnehmer ermöglichen?

Über jeden Hinweis wäre ich sehr dankbar.

Grüße
Oliver

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus welchen Grund willst du es den parallel machen? Soviel traffic? Kaum 
zu glauben.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Datenbus wurde im Glauben so konzipiert. Im nachhinein, denke ich, 
könnte es auch ein serieller sein.
Gibt es denn eine serielle Lösung mit unbegrenzter Anzahl von 
Busteilnehmern? CAN-Bus, Profi-Bus, Inter-Bus erst mal ausschließen.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also unbegrenzte Anzahl an Teilnehmern natürlich nicht!!!
So 16. Nur wenn noch einer hinzu kommen sollte, dann wäre es schön, wenn 
das Bussytem nicht ausgewechselt werden muß.

Autor: Nik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ja den RS232 Standard verwenden.
und dann zuerst ein adress byte, damit der gewünschte Controller weiss 
das er gemeint ist,
dann eine absender adresse für eine Antwort(nicht immer nötig)
und dann ein Datenbyte senden.

Son kann jeder Controller an jeden schreiben.

Nik

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Möglichkeit eine riesige Anzahl von Teilnehmern über SPI anzuhängen 
sind die kaskadierbaren IO-Expander von Maxim. Einer von diesen sitzt am 
SPI inklusive CS. Die Ausgänge des Expanders sind mit den CS-Eingängen 
der anderen Teilnehmer verbunden, ein Selektier-Befehl an den Expander 
und CS des entsprechenden Teilnehmers wird aktiviert.

Auf diese weise redet bei mir ein AT91 mit vielen kleinen AT90 Sklaven 
;) Wenn einer von ihnen etwas zu sagen hat geht das auf eine art 
Request-Controller der dem AT91 dann per UART vermittelt wer da etwas 
wollte, dannach kann dieser gezielt abgefragt werden.

Das System hört sich vielleicht etwas umständlich an, aber hat sich bei 
mir sehr bewährt.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nik,
ganz so einfach ist das leider nicht. Wollen mehrere Teilnehmer 
gleichzeitig senden, kommt es zu einer Kollision. Um dies zu verhindern, 
wird eine Busarbitrierung benötigt. Dieser Schiedsrichter sagt den 
Teilnehmern, wann sie senden dürfen und wann nicht.
Die einfachste Version wäre eine Daisy Chain. Aber auch dort kann es zu 
Kollisionen kommen, die irgendwie aufgelöst werden müssen.

Gibt es nicht irgendeinen einfachen Baustein, der so was macht?

Grüße
Oliver

Autor: Nik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es wäre auch möglich, ein counter( z.B cmos 4017, Dezimal Counter) in 
mein "system" hinein zu hängen. Jeder ausgang des 4017 wäre
mit je einem eingang eines conrollers verbunden.
Sobald der eingang vom controller 1 high ist, darf dieser senden. Ist 
der eingang von controller 2 high darf dieser senden. Alle anderen sind 
dabei unberechtigt zu senden.
Dabei käme es zu keiner Kollision mehr.

Eine zweite Möglichkeit wäre es an alle uc's die selbe RTC anzuhängen, 
dabei wäre festgelegt wann wer senden dürfte.

Nik

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sascha,
ich habe das so verstanden, daß nur über ein Request eines Atmel Sklaven 
kommuniziert werden kann. Kann Dein AT91-Master auch gezielt einen 
Sklaven ansprechen, um ihn z.B. zu konfigurieren?

Grüße
Oliver

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nik,

in einem Projekt habe ich das auch schon mal so ähnlich gemacht. 8 
Atmels müssen sich eine TxD-Leitung(UART) teilen. Ein weitererer Atmel 
pollt zyklisch die Request und erteilt dann demjenigen den Zuschlag, bei 
dem er hängen bleibt (Round Robin).
Problem dieser Lösung ist, mit jedem weiteren Teilnehmer muß auch 
komplett der Bus erweitert werden.

Besser wäre es, wenn der Bus so bleiben kann und es kommen nur die 
Leitungen zur Busankopplung hinzu.

Aber ich denke, der Request-und Acknowledge - Vorgang muß durch ein 
Bussystem realisiert werden und die eigentliche Kommunikation kann dann 
über den UART erfolgen. Wenn einer was sendet, lauschen alle anderen an 
der seriellen, ob das Paket für ihn bestimmt ist.

Grüße
Oliver

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.