Bussystem "extrem"

Gast #51391
Hi,

folgendes, schon mal ansatzweise diskutiertes Problem: Ich muss mehrere
ATMELs zum kommunizieren zusammen schalten. Allerdings sind einige
Protokolle dafür nicht geeignet, denn ich brauche folgende
Voraussetzungen:

- Bussystem, "einfach" mehrere Atmels hintereinander
- Automatische Terminierung
- Automatische Meldung am Mastergerät mit ebenso automatischer
Adresszuweisung, (fast) beliebig viele Slave-Geräte hintereinander.
- Bidirektionale Kommunikation
- evtl. Hot-Swap-fähig (nicht zwingend erforderlich)

Die Schnelligkeit der Kommunikation ist dabei nicht ganz so wichtig,
wenige Bytes pro Sekunde reichen aus. Ich habe eine theoretische
Lösung, bei der zwischen jedem Gerät drei Kabel verbunden werden
müssen, außerdem "reichen" da zwei normale Ports und ein
Interrupt-Port aus. Nun meine Frage: Gibt es vielleicht für diese
Anforderungen schon eine fertige Lösung, die vielleicht sogar mit zwei
Datenleitungen auskommt? I2C scheidet wegen der benötigten
automatischen Adressvergabe leider aus...

Gruß
Sebezahn
Gast #51392
Deinen I2C Ausschluss kann ich nicht verstehen.
Solange du nur programmierte Geräte hast kannst du selbstverständlich
dynamisch Adressen vergeben.

Beispiel:
Slave wird eingeschaltet und melded sich an den Master, welcher eine
feste Adresse hat und bittet bei Nennung seiner Seriennummer um eine
Adresse.
Gibt natürlich auch viele andere Wege.

2. Beispiel:
SMbus - in der aktuellen Version ist eine automatische Adressvergabe
definiert.
Gast #51393
Hi,

oh ok, das geht bei I2C? Die Informationen, die ich gelesen habe,
sagten immer aus, man müsse die Adresse von vorne herein festlegen.
Dann werde ich noch mal in dieser Richtung weiter suchen...

SMBus sagt mir gar nix, aber google.de spuckt da ja gewaltig viel aus.
Vielen Dank für die Anregung!

Gruß
Sebezahn
Gast #51395
Hi,

das versteht sich ja wohl von selbst ;-) Erst mal habe ich mir BASCOM
bestellt, ich werde das wohl damit realisieren, die entstandenen Libs
kann ich gerne hier posten.

Gruß
Sebezahn
Gast #51397
Spezifikationen zum SMbus findest du unter www.smbus.org.
Der smbus ist soweit ähnlich zum I2C, daß man die allermeisten I2C
Komponenten verwenden kann.

Die Adresse, die die Atmels verwenden ist die, welche du ins
entsprechende Register geschrieben hast.
Also nicht zwangsweise ein hardcoded Wert.
Gast #51398
Vielen Dank, ich denke aber, ich werde mich da mal an einem eigenen
Protokoll versuchen. Schon alleine, um etwas dabei zu lernen. Immer
"nur" abkupfern bringt mich ja nicht wirklich weiter. Und die erste
Implementierungsstufe funktioniert auch schon...

Dennoch vielen Dank! Tolles Board, immer wieder!

Gruß
Sebezahn

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.