PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : doppelte Verwendung von I²C Pins SDA und SCL



BurningWave
03.02.2010, 16:26
Hallo,

ich habe eine Frage bezüglich der I²C Schnittstelle: An die zwei Pins meines Mega32, die für I²C verwendet werden (SDA bzw. PC1 und SCL bzw. PC0) habe ich ein KS0108 GLCD angeschlossen (mit DB0 an PC0 und DB1 an PC1). Ich kann dieses LCD-Display aus Platzgründen nicht an einen anderen Port anschließen, möchte die I²C Schnittstelle jedoch trotzdem verwenden. Gibt es eine Möglichkeit, diese zwei Pins doppelt zu benutzen, also dass ich sowohl das GLCD, als auch die I²C Geräte an die selben Pins hänge? In diesem Fall könnte man I²C nicht zeitgleich mit dem Display ansteuern, das ist mir klar, aber würden sich die Geräte nicht evtl. trotzdem stören, wenn sie parallel angeschlossen werden würden (z.B. wenn man Befehle an das LCD-Display sendet, die zufälligerweiße ins Schema einer I²C Übertragung passen würden)? Und was ist mit den für I²C benötigten zwei Pull-Up-Widerständen? Machen die dem LCD-Display etwas aus oder ist das egal?

Falls man die Geräte nicht einfach parallel anschließen kann, hätte ich mir überlegt, mit ein paar Transistoren einen kleinen Multiplexer zu bauen, den ich mit einer Steuerleitung umschalten kann.

Was ist für dieses Problem die beste Lösung?

Ich hoffe ihr könnt mir helfen.

mfg
_R2D2

KingTobi
03.02.2010, 16:30
Hi

Du hast zwar nicht verraten was das andere Gerät ist, aber ja sollte gehen.
Auch die Pull-Up Widerstände sollten dir keine Probleme bereiten.
Könnte dadurch aber auch mal zu einem ungewollten Ereignis führen, musst halt dafür sorgen das das nichts ausmacht.

Ich selbst würde einen I2C Portexpander nehmen.
Also ein IC das über I2C angesteuert wird, und dann mehrere IOPins hat.

BurningWave
03.02.2010, 16:40
Gut, dann werde ich das mal probieren.

Ich habe schon geplant eine I²C Porterweiterung einzubauen. Das ist das erste Gerät und das zweite wird vermutlich eine DS1307 Echzeituhr.

thewulf00
04.02.2010, 19:38
Also meines Erachtens ist das sicherste der Multiplexer. Da I2C nicht so empfindlich ist, kannst Du ja einfach zwei Transistoren nehmen, die diese beiden Pins vom Display trennen, wenn Du gerade I2C nutzen möchtest. Dazu einfach die beiben Transistor-Basen mit je einem Widerstand an einen freien, anderen Pin Deines ICs.

KingTobi
04.02.2010, 19:42
Dann lieber das Display auf I2C umbauen.

BurningWave
04.02.2010, 19:57
Dann lieber das Display auf I2C umbauen.

Das geht nicht so einfach, weil die Lib für das Display, die ich benutze, nicht für I²C Ansteuerung programmiert ist (und ich kiene Lust habe alles umzuschreiben).

Wie würde das mit dem Multiplexer genau aussehen?

mfg

bax
04.02.2010, 20:44
Multiplexer dürfte auch nicht ganz so einfach gehen, weil die SDA-Leitung ein "wired AND" ist, daher ja auch die Pullups auf den Leiungen. Die Leitung muß von allen Teilnehmern am TWI auf Masse gezogen werden können. 'Ein Transistor dazwischen' funktioniert nicht. Es werden sich doch noch zwei andere Ports auf einen Expander auslagern lassen, oder?

Rajko

KingTobi
04.02.2010, 20:52
Noch eine Möglichkeit wäre ein zweiter µC, das läuft dann deine LCD Lib drauf, und du hast noch jede menge Pins für zusätzliche aufgaben.

BurningWave
04.02.2010, 22:30
Noch eine Möglichkeit wäre ein zweiter µC, das läuft dann deine LCD Lib drauf, und du hast noch jede menge Pins für zusätzliche aufgaben.

Das habe ich mir auch schon überlegt, ich bin aber zu dem Schluss gekommen, dass sich das nicht lohnt (ich habe auch nicht mehr so viel Platz auf der Platine).


Ich denke, dass ich es mal probieren werde, ob es funktioniert, beides parallel zu schalten.

021aet04
06.02.2010, 14:39
Betreibst du das LCD im 4 oder 8bit Modus? Wenn du den 8Bit Modus verwendest kannst du das Display in den 4bit Modus schalten und sparst dir Pins am µC. Sonnst könntest du z.B. einen kleinen µC (z.B. Attiny) wie oben beschrieben nehmen. Die sind klein und auch günstig. Wenn du auf der Hauptplatine keinen Platz für den Attiny hast kannst du eine kleine Platine zwischen dem Hauptport und dem LCD schalten (mit einem µC).

MfG Hannes

Bernhard667
11.02.2010, 19:36
Hallo,

vielleicht kannst Du für die I2C Geräte noch eine softwäremäßgen I2C Bus machen.

Bernhard