PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Über I2C 2 oder mehrere C-Control-I-Units verbinden?



Matrix1000
18.01.2004, 18:21
Hi,

ich suche eine Möglichkeit, wie man zwei oder
mehrere C-Control 1 Einheiten miteinander verbinden
kann. Die Frage ist, wie kann ich ganz simpel
Daten über den I2C Bus von einer CC1 zu einer anderen
CC1 senden?
Unter http://cctools.hs-control.de/ habe ich einen
I2C-Koppler gefunden. Brauche ich den wirklich zwingend
um eine Art Netzwerk zwischen den Units aufzubauen?
Oder kann ich auch mehrere CC1 direkt an den I2C-Bus
anbinden?
Desweiteren finde ich nahezu keine guten Beispiele,
wie man über den I2C-Bus kommunizieren kann.
Kennt jemand von euch gute Beispiele?
Ich möchte einfach nur simpel Daten über die Leitung
schicken und empfangen können.

Vielen Dank

Matthias
20.01.2004, 11:22
Du kannst dir auch selbst nen Bus erfinden, einfach ne Tackt- und ne Daten-Leitung, die die cc verbindet. dann gibst du nen Puls auf Tackt, sendest ein bit, gibst wieder nen Tacktimpuls, sendest wieder ein bit... bis du dan nen byte voll hast, musst den Speicher nur immer SHLlen. Ich hab sowas schonmal geschrieben, mal gucken ob ichs finde...

Matthias

Matrix1000
20.01.2004, 22:41
Hi

hm, wieso sollte ich ne neue Datenverbindung aufbauen,
wenn es doch die I2C gibt? Ist der Bus nicht ausgereift genug?
Ich werde schon genug mit den Applikationen zu tun haben,
dass ich die alle untergebracht bekomme, außerdem
wollte ich das Display auch über den I2C-Bus steuern.

MfG

21.01.2004, 10:29
Vermutlich versteht keiner so recht wie das mit I2C Bus und mehreren Mastern funktioniert. Ich hab da auch noch nirgends ein Beispiel gesehen. Einseitig mit einem Master das ist allerdings einfach.

Hessibaby
21.01.2004, 15:10
Hi All,
der I²C oder auch interIC Bus ist per Definition des IEEE ein Zweidrahthardwarebus mit einem Master und max. 254 Slaves wobei jeder Slave auch als Master agieren kann solange ihm diese Aufgabe zugewiesen wurde. Hört sich kompliziert an ist aber halb so wild wenn man sich an die Regeln hält. D.h. wenn ein BUS-Member redet haben alle anderen zu lauschen denn bekanntlich darf man in der Elektronik Eingänge beliebig parallel schalten -Ausgänge niemals. Diese Absprache ist aber nicht in der Norm per Definition festgelegt sondern muß bei der Implementierung selber programmiert werden -und zwar so das niemals zwei Teilnehmer gleichzeitig senden. Wenn Du Streß vermeiden willst baust Du einen Ring auf O auf I, O auf I usw. und gibst jedem Teilnehmer eine eigene Adresse. In deinem Datenpaket legst Du als erstes die Adresse und nur der der gemeint ist nimmt die Daten an die anderen ignorieren und schieben es über den eigenen Ausgang weiter.
Schon hast Du ein praktikables serielles Bussystem.
Wenn Du das allerdings mit C-Control in Basic machen willst wird Dir wohl wenig Rechenleistung für anderes übrigbleiben. Wenn mich nicht alles täuscht war in Elektor.de -zwar für deren MC68XXX Board- mal eine solche Routine in C oder sogar Assembler publiziert. Die machen überigens sehr viel mit dem I²C.
Gruß Hartmut

thille
21.01.2004, 15:28
Die Frage ist nun, wie erklärt man der C-Control 1, daß sie mal nicht der Master ist, wenn eine andere CC der Master sein soll, sei es temporär oder dauerhaft.

Gruß

Torsten

21.01.2004, 16:38
Vielleicht hilft euch diese Seite weiter
http://www.ping.be/electrozone/i2cfaq/i2cindex.htm

22.03.2004, 15:50
@Matrix1000: Wie ging es weiter bei Dir ???

@all: Auch ich will eine Verbindung zwischen 2 M-Units aufbauen. Serielle Verbindung ist schon weg; Nun wöllte ich eine I²C-Connections aufbauen. Hab aber das Problem, dass ja keine 2 Ausgänge miteinander verbunden werden dürfen. Wie soll das aber gehen ? Bei Unit-Start werden doch alle Digital-Ports auf Ausgang gestellt. :(

Hat jemand das schon realisiert ?

MedanoCC
22.03.2004, 15:51
Oh, war nicht eingeloggt ;)

MedanoCC
22.03.2004, 17:13
Ok, hab nen Fehler entdeckt. Die Ports werden natürlich bei Start als Eingang betrachtet. Also muss ich eine der beiden Units als Slave programmieren. Da besteht aber doch die Gefahr z.B. beim Übergang von PUTBYTE nach GETACK, dass beide Units gleichzeitig auf Ausgang gestellt sind, was doch ihren Tot bedeuten würde ?!!!

Blackbird
24.04.2004, 18:55
Hi Matthias kannst du das programm vielleicht posten? oder jemand anderes?

Du kannst dir auch selbst nen Bus erfinden, einfach ne Tackt- und ne Daten-Leitung, die die cc verbindet. dann gibst du nen Puls auf Tackt, sendest ein bit, gibst wieder nen Tacktimpuls, sendest wieder ein bit... bis du dan nen byte voll hast, musst den Speicher nur immer SHLlen. Ich hab sowas schonmal geschrieben, mal gucken ob ichs finde...