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
Aus welchen Grund willst du es den parallel machen? Soviel traffic? Kaum zu glauben.
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.
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ß.
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
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.
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
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
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
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
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.