Re: Master/Slave Kategorie: I²C-Bus (von André H. - 21.08.2003 11:26) | |
Als Antwort auf Master/Slave von womisa - 21.08.2003 9:50
| |
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. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: Re: Master/Slave (von womisa - 21.08.2003 11:55) Re: Master/Slave (von André H. - 24.08.2003 10:48) |