Go Down

Topic: I2C Problem Master -> Slaves  (Read 416 times) previous topic - next topic

DrDiettrich

Es heißt Master und Slave.
Damit sind die Rollen klar verteilt.
Hardwaremäßig (physikalisch) schon, aber das Protokoll auf dieser multi-master Hardware läuft anders.

Die Kritik in #3 ist völlig fehl am Platz, da gibt es nichts schön zu reden.

fetterspanier

So Hab nochmal bei 0 Angefangen und Heute soweit alles ans laufen bekommen. Einzige Baustelle die ich nöch gerne gelöst hätte ist, das der Master zu Beginn jedem Slave eine ID vergibt als, das sie eine haben. ABer da habe ich leider keine Idee.

Tommy56

Der Slave muss die ID  (=I2C-Adresse) von Anfang an haben, da er damit angesprochen wird.

Wie soll der Master ihn anreden, wenn dieser die Adresse erst vergeben will?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

fetterspanier

Der Slave muss die ID  (=I2C-Adresse) von Anfang an haben, da er damit angesprochen wird.

Wie soll der Master ihn anreden, wenn dieser die Adresse erst vergeben will?

Gruß Tommy
Eben. :D Würde es aber gehen wäre es super weil es die Funktion/Nutzen hinterher erleichtern würde.

combie

#19
Nov 16, 2017, 04:46 am Last Edit: Nov 16, 2017, 05:09 am by combie
Quote
ABer da habe ich leider keine Idee.
Ich aber!

Und zwar:
I2C scheint das falsche (Bus) System für deine Zwecke zu sein.
"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

agmue

ABer da habe ich leider keine Idee.
Bei I2C gibt es sowas wie einen Master-Call auf Adresse 0. Da könnte der Master die Slaves auffordern, sich zu melden. Jeder Slave wartet eine per Zufall ermittelte Zeit ab und meldet sich dann mit "Ich möchte Adresse 2 sein". Dem ersten wird das bestätigt. Der nächste Slave merkt, daß Adresse 2 schon vergeben ist und versucht es mit Adresse 3.

Eventuell wäre es nötig, daß Master und Slave die Rollen tauschen. Master ist immer der, der als Master agiert.

Ob ein Aushandeln einer Adresse wirklich machbar ist, weiß ich nicht, ob es sinnvoll ist, schon überhaupt nicht.

Aber eine Idee ist es :)

DrDiettrich

Die Slaves kennen ihre Adressen, und der Master kann die angeschlossenen Geräte scannen, so wie im Programm vorgesehen - damit wären obige Fragen beantwortet.

Nachfolgend steht "Master" für den übergeordneten Controller.

Der Master könnte dann seine Kommandos broadcasten, sofern das von der Hardware und Bibliothek unsterstützt wird. Andernfalls können die Kommandos direkt an die erkannten Slaves geschickt werden - so wie im Programm vorgesehen.

Die Slaves melden Ereignisse an den Master, zusammen mit ihrer ID. Der Master muß also nichts anfordern, sondern bekommt alle Ereignisse direkt gemeldet. Im Programm fehlt noch eine funktionierende Behandlung für multi-master Kollissionen, und ein paar weitere verdächtige Abfragen wären zu prüfen und ggf. zu streichen.

fetterspanier

Ich aber!

Und zwar:
I2C scheint das falsche (Bus) System für deine Zwecke zu sein.

Welcher Bus wäre denn sinnvoller ?

combie

Welcher Bus wäre denn sinnvoller ?
Irgend ein "Daisy Chain" System.

"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

Doc_Arduino

#24
Nov 16, 2017, 06:12 pm Last Edit: Nov 16, 2017, 06:13 pm by Doc_Arduino
Hallo combie,

I2C ist doch schon eine Kette aus Gänseblümchen.     :o
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

combie

#25
Nov 16, 2017, 06:17 pm Last Edit: Nov 16, 2017, 06:48 pm by combie
Nööö...

z.B. APA102 und WS2812B bilden eine Gänseblümchen Kette.
Auch ein "Token Passing" System tut das. Manchmal sogar im Ring.


fetterspanier möchte die Adressierung  dynamisch abhandeln.
Das gibt I2C nicht her. Z.B. EEPROMs sind viel zu doof dafür.

Also eine Daisy Chain, denn da kann man auf eine Adressierung verzichten, denn eine solche ergibt sich durch die physikalische Anordnung.
"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

Doc_Arduino

#26
Nov 16, 2017, 07:43 pm Last Edit: Nov 16, 2017, 07:44 pm by Doc_Arduino
Hallo,

dann gibts ein Interpretationsmissverständnis, wobei ich nur die Verkabelung des Busses als Gänseblümchenkette betrachtet habe. Naja egal.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

combie

Quote
dann gibts ein Interpretationsmissverständnis,
Durchaus!

Eine Daisy Chain kann kein Bus sein!
Nie und nimmer.
Es ist eher das genaue Gegenteil.



Ein Bus entspricht einer Parallelschaltung.
Eine Kette, einer Reihenschaltung.
(Tipp: Nicht alles, was hinkt, ist ein Vergleich!)

Egal?
Ich glaube nicht.
Für mich auf jeden Fall nicht.
"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

DrDiettrich

Einzige Baustelle die ich nöch gerne gelöst hätte ist, das der Master zu Beginn jedem Slave eine ID vergibt als, das sie eine haben.
Dann wüßte der Master überhaupt nicht, welche Eingangssignale welcher Slave verarbeitet. Was nützt eine Meldung "Taste 15 gedrückt", wenn nicht bekannt ist, was diese Taste bedeutet? Links oder Rechts, Start oder Stop...

Dann kann man die IDs ja auch ganz weglassen, und die Kommando per Broadcast verschicken.

Go Up