Forum: Mikrocontroller und Digitale Elektronik PIC18F2480 mit I2C-switch


von Simon R. (simonpunktcom)


Lesenswert?

Hallo Gemeinde,

habe vor mit einem µC 2 Sensoren mit der gleichen Adresse auszulesen und 
benötige logischer Weise einen I2C-switch. Kann mir jemand einen switch 
empfehlen? Ich hätte den PCA9546A verwendet, hat vieleicht jemand ein 
Schaltungsbeispiel auf Lager? Und besteht die Möglichkeit den switch 
nicht über den µC umschalten zu lassen, sprich durch eine Art Tackt 
(Multivibrator an den Adresseingängen)?

Gruß, Simon

von Norbert M. (Gast)


Lesenswert?

Simon Rdg schrieb:
> Ich hätte den PCA9546A verwendet, hat vieleicht jemand ein
> Schaltungsbeispiel auf Lager?

Die ergibt sich eigentlich recht klar aus dem Datenblatt,
Sensor 1 z.B. an SC0 und SD0 und Sensor 2 z.B. an SC1 und SD1.
Controller sinniger weise an SDA und SCL, Versorgung an VDD etc.
Im NXP-Datenblatt auf Seite 11 ist übrigens das von Dir gewünschte
Schaltungsbeispiel aufgezeichnet. Im TI-Datenblatt ists auf Seite 15.

> Und besteht die Möglichkeit den switch nicht über den µC
> umschalten zu lassen,

Noe, die Umschaltung zwischen erfolgt ja durch Beschreiben eines
internen Registers (Control register) - dürfte schwer werden, das
ohne Digitalbaustein zu erreichen. Obwohl, theoretisch kannst Du
Takt und Datenbits auch händisch mit Tastern reindrücken.

> sprich durch eine Art Tackt (Multivibrator an den Adresseingängen)?

Hmm, abgesehen davon, daß es der Chip übel nehmen wird, wenn man
im laufenden Betrieb an den Adresspins herum/takt/et:
Die Adresspins sind dazu da, damit man die Adresse des 9546er
abändern kann. Also jene, mit der er selbst angesprochen werden
kann. Mit der Umschaltung der Kanäle haben die gar nix zu tun.

> Kann mir jemand einen switch empfehlen?

LTC4312 vielleicht? Das ist ein 2-kanaliger I2C-MUX, bei dem die
Auswahl der Kanäle ganz einfach über zwei Pins erfolgt, braucht also
kein Schreiben in irgendwelche Register oder Ähnliches.

Was soll das Gannze denn überhaupt werden? Und wozu der PIC18
im Titel, wenn Du anscheinend doch keinen Controller nehmen willst?

> Gruß, Simon

LG, N0R

von Simon R. (simonpunktcom)


Lesenswert?

Danke für die hilfreiche Antwort,

>Die Adresspins sind dazu da, damit man die Adresse des 9546er abändern kann.
>Also jene, mit der er selbst angesprochen werden kann.
>Mit der Umschaltung der Kanäle haben die gar nix zu tun.

das wusste ich nicht wie wechselt er denn zwischen den beiden Sensoren?

Ich Baue eine Steuerung in der die 2 Sensoren als Näherungsschalter 
fungieren sollen, den PIC brauche ich zum auslesen der Sensoren, da 
diese ohne I2C nicht funktionieren.

An den Ausgängen des PICs hängen verschiedene Leuchtmittel, geschalten 
über einen NPN.

Gruß Simon

von Falk B. (falk)


Lesenswert?

@ Simon Rdg (simonpunktcom)

>Ich Baue eine Steuerung in der die 2 Sensoren als Näherungsschalter
>fungieren sollen, den PIC brauche ich zum auslesen der Sensoren, da
>diese ohne I2C nicht funktionieren.

Und wo sit dann das Problem, wenn der PIC die Umschaltung macht?

>An den Ausgängen des PICs hängen verschiedene Leuchtmittel, geschalten
>über einen NPN.

Also Krümelkram. Man kann auch I2C relativ leicht rein in Software 
machen, dann braucht man gar keinen I2C Switch, sondern klemmt die 
beiden ICs an getrennte I2C Busse am PIC.

von Norbert M. (Gast)


Lesenswert?

Simon Rdg schrieb:
>> Die Adresspins sind dazu da, damit man die Adresse des 9546er
>> abändern kann.Also jene, mit der er selbst angesprochen werden kann.
>> Mit der Umschaltung der Kanäle haben die gar nix zu tun.
> das wusste ich nicht wie wechselt er denn zwischen den beiden Sensoren?

Naja, so wie ich geschrieben habe:
>>> die Umschaltung zwischen erfolgt ja durch Beschreiben eines
>>> internen Registers

Du stellst praktisch "in Hardware" die Adresse des 9546ers mit den Pins
ein. Wenn du nur einen hast, dann kannst Du sie alle drei Pins auf
Ground legen, das enstpricht dann Hex-Adresse E0 (bzw. E1 zum 
Schreiben). Im NXP-Datenblatt ist das auf Seite 5 ganz anschaulich 
gezeigt. Dann beschreibst Du das Control-Register mit einem Byte, dessen 
4 letzte Bits definieren den Channel. Also wenn Bit Nummer 0 auf 1 
gesetzt wird, dann ist Channel Null 0 bzw der erste Kanal von den 4 
aktiv, Bit 1 setzt Channel 1, Bit 2 Channel 2 und Bit 3 Channel 3. Das 
steht im NXP-Datenblatt auf Seite 6, lesen musst Du es trotzdem selbst.

> Ich Baue eine Steuerung in der die 2 Sensoren als Näherungsschalter
> fungieren sollen, den PIC brauche ich zum auslesen der Sensoren, da
> diese ohne I2C nicht funktionieren.

Bist Du genau auf diese zwei exakt gleichen Sensoren angewiesen?
Um welche Sensoren handelt es sich denn? Es wäre ja auch möglich,
daß sich ähnlich dem PCA9546A die Sensoren ebenfalls mittels Pins
in ihrer Adresse ändern lassen, dann wäre das Switchen natürlich
hinfällig. Das Datenblatt des Sensors hast Du hoffentlich zumindest
überflogen, oder auch nicht?

> An den Ausgängen des PICs hängen verschiedene Leuchtmittel, geschalten
> über einen NPN.

Man könnte auch, wie schon von Falk vorgeschlagen, einfach zwischen
den Sensoren umschalten bzw. einfach den Sensor, den man grade nicht
braucht, vom Bus abklemmen. Ich bin mir grade nicht hundertprozentig
sicher, ob es genügen würde, den Sensor mittels Transistor einfach
von der Taktleitung abzuklemmen, und bin auch zu faul, mir das gerade
näher zu Gemüte zu führen, aber prinzipiell müsste das klappen. Dann
brächte man zwei Transisitoren. Ansonsten müsste es auch mit einem
passenden Analogschalter funktionieren. In der Edelversion von mir
aus noch mit einem Gatter bzw. Flip-Flop davor. Oder eben einen MUX
nehmen, wie oben angeboten, der macht das alles schon "halbautomagisch".

Die vorgeschlagene zusätzliche Software-I2C-Impelemntierung halte
ich persönlich eher für unnötigen Overkill, wenn ich ehrlich bin.
Besonders in diesem Fall, wo's anscheinend schon mit dem Lesen von
Datenblättern hapert, stelle ich es mir das eher schwierig vor.

> Gruß Simon

Gruß zurück und viel Erfolg,
Norbi

von Frank K. (fchk)


Lesenswert?

Warum nimmst Du denn nicht gleich einen PIC, der zwei I2C-Einheiten hat?
zB PIC18F26K22

MAPS hilft beim Ausssuchen.
http://www.microchip.com/maps/microcontroller.aspx

fchk

von Simon Rdg (Gast)


Lesenswert?

Weil ich den nicht auf lager habe... ich habe lediglich den 18f2480... 
an den i2c bin ich angewiesen weil ich den sensor sfh7776 verwebde und 
dieser ohne i2c garnichts macht... :/

von Frank K. (fchk)


Lesenswert?

Simon Rdg schrieb:
> Weil ich den nicht auf lager habe... ich habe lediglich den 18f2480...
> an den i2c bin ich angewiesen weil ich den sensor sfh7776 verwebde und
> dieser ohne i2c garnichts macht... :/

Ach herrje! Reíchelt verkauft Dir nichts? Der PIC18F25K22 (mit weniger 
Flash) steht mit 2.55€ im Katalog. Ich denke, daran soll es nicht 
liegen. Sonst bist Du in einem Monat noch nicht weiter.

fchk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.