Re: Master/Slave Kategorie: I²C-Bus (von womisa - 21.08.2003 11:55) | |
Als Antwort auf Re: Master/Slave von André H. - 21.08.2003 11:26
| |
Hallo André, vielen Dank für die Beantwortung meiner Fragen. Darüber mu� ich nochmals in einer stillen Stunde nachdenken. Ich bin der Meinung man mü�te mit vertetbarem (Kosten)-Aufwand und einem geeigneten "controller" sowas bauen können. Aber das sollte man nicht vertiefen, da ich zu wenig Hardwarewissen habe. Noch ne Frage.: Gibt es Software/Hardware um einen I2C Bus an der Station 1 betreiben zu können? Gru� Achim > Hallo Achim, > > > kann mir jemand kurz erklären, warum z.B. die CC2-Station nur als Single-Master > > bzw. nicht als Slave angesprochen werden kann. Ist das ein Hardware oder Software > > Problem ? > > Die CC2 kann als I²C-Bus-Baustein überhauptnicht angesprochen werden. > Darum hei�t es Single-Master (Master = CC2). > Das liegt daran, da� am C164CI keine Hardware für den I²C-Bus existiert, > sondern der Bus im OS an zwei I/Os (P3.8 & .9) emuliert wird. > Um die CC2 auch als I²C-Slave benutzen zu können, müsste man einige > Interruptgesteuerte Routinen schreiben, und ihr auch eine Adresse zuweisen. > Jedoch gibt es hier ein gro�es Problem. > Da die Standardgeschwindigkeit des Busses 100kHz beträgt (es gibt auch 400KHz & 1MHz), > wäre der C164CI als Slave sehr stark damit beschäftigt, während > eines Zugriffs die Daten zu empfangen. Auch, wenn dieser > nicht angesprochen wird. Es mu� schlie�lich immer das erste Byte(Adresse) > nach einem I²C-Start analysiert werden, ob es sich um die Slaveadresse handelt. > Auch müssen die Start- und Stop-Bedingungen zuverlässig erkannt werden. > Bei einem Multi-Master-Bus, bei dem die anderen Master sehr viel senden, > wäre der C164CI teilw. stark belastet. > > Ich denke aber auch, da� das dem Entwickler des OS einfach zuviel Arbeit > war, etwas zu implementieren (und zwei Interruptsensible Ports zu opfern), > was nicht so oft benötigt wird. > Schlie�lich ist es nicht einfach, I²C-Slaveroutinen zu schreiben. > > > > Warum braucht man dazu den I2C-Koppler Baustein ? > > Den I²C-Koppler habe extra für die Fälle entwickelt, wenn man mehrere > Single-Master-Busse oder einen Single-Master-Bus mit einem Multi-Master-Bus > verbinden will. > Als Haupteinsatzweck habe ich die Verbindung mehrerer CC1-Units unterneinande > oder die Verbindung von CC1-Units mit der CC2 vorgesehen. > Um z.B. mehrerer CC2 miteinander zu verbinden, ist es vorteilhafter, > den CAN-Bus zu verwenden. > Allerdings mu� ich wiederum sagen, da� die Ansteuerung des I²C-Kopplers > sehr einfach ist. Man kann diesen quasi wie eine serielle Schnittstelle benutzen. > (So sind auch die Treiber aufgebaut.) Man kann bis zu 15 I²C-Koppler an einen > I²C-Bus hängen, sofern man keine weiteren PCF8574 am Bus betreibt. > 16 Stück, wenn das interne LCD der Unit abgeschalten wird. Dann wird eine Adresse > des PCF8574A frei (116). > (Nebenbei bin ich gerade dabei, das OS so zu modifizieren, da� auf das interne > Display keine Systemmeldungen, wie Hostmode oder Running, mehr ausgegeben werden. > Dann ist ein PCF8574A an Addr. 116 uneingeschränkt nutzbar.) > > MfG André H. | |
Antwort schreiben Antworten: Re: Master/Slave (von André H. - 24.08.2003 10:48) |