Forum: Mikrocontroller und Digitale Elektronik I2C Device per Jumper trennen


von Peter K. (peterka2000)


Angehängte Dateien:

Lesenswert?

Ich habe zwei I2C Devices (24C08) die ich an einen Mikrocontroller 
anschließen werde. Ich hätte gerne eine Auswahlmöglichkeit zwischen 
EEPROM 1 und EEPROM 2 - geht das einfach per Jumper? Also so wie der 
Schaltplan im Anhang? R1, R2, R3 sind 2,2 kOhm

von Uwe B. (derexponent)


Lesenswert?

theoretisch schon...aber du kannst auch beide EEproms
gleichzeitig betreiben (ohne Jumper)

einfach durch unterscheidliche Adressvergabe an den A0 bis A2
Pins der EEproms

Gruss Uwe

von mmm (Gast)


Lesenswert?

Warum micht Parallelbetrieb? Adressen natürlich anpassen.

von Stefan (Gast)


Lesenswert?

Die Taktleitung musst du auch trennen.
Umd bei den E²Proms würde ich schwache Pull-Up Widerstände (z.B. 47k) 
vorschalten, damit sie nicht auf zufällige Signale "aus der Luft" 
reagieren.

Eleganter wäre es, beide E²Proms parallel zu schalten und durch 
unterschiedliche Adressen zu unterscheiden. Du könntest z.B. an A0 
jeweils einen Jumper mit Pull-Up Widerstand anklemmen. Der Chip, wo der 
Jumper gesteckt ist, fühlt sich angesprochen.

Oder Du schließt den Jumper an den Mikrocontroller an und fragst ihn per 
Software an. Dann brauchst Du nur einen Jumper, keinen Pull-Up 
Widerstand und verdrahtest A0 beim einen Chip auf High und beim anderen 
auf Low.

von Nicolas S. (Gast)


Lesenswert?

Eher SCL als SCA auftrennen.

Oder den EEPROMs per Jumper unterschiedliche Adressen geben, das wäre 
vermutlich am saubersten.

von Peter K. (peterka2000)


Lesenswert?

mmm schrieb:
> Warum micht Parallelbetrieb? Adressen natürlich anpassen.
Das ist quasi ein fertiges System wo der Nutzer zwischen zwei 
Speicherinhalten wählen kann.
Also muss ich SCL auch trennen?

von Peter K. (peterka2000)


Lesenswert?

OK, die Frage nochmal klar:
Was muss ich trennen?
- SDA
- SCL
- SCL und SDA
- VDD

von JoergL (Gast)


Lesenswert?

NUR SDA.
Und hinter dem Jumper muß noch ein Pullup hin, daß das getrennte SDA 
sicher auf high liegt.
SCL kann verbunden bleiben. Durch die Flanken am SCL zieht der EEPROM 
minimalst mehr Strom, das sollte aber kein Problem sein.

von JoergL (Gast)


Lesenswert?

Nachtrag: Wenn Du VCC trennen willst, dann müssen auch beide SDA und SCL 
getrennt werden, sonst bekommt der Chip VCC über die beiden Leitungen - 
das tut ihm vermutlich nicht gut.

von Frank M. (frank_m35)


Lesenswert?

Wurde schon knapp erwähnt, warum betreibst du nicht beide EEPROMs 
zeitgleich, jedoch eben mit anderer Adresse.

Den EEPROM den dein uC letztendlich verwendet könntest du durch einen 
Jumper an einem Portpin ermittlen. Je nachdem ob der Pin 1 oder 0 ist, 
verwendest du die Adresse für EEPROM1 oder EEPROM2.

Ebenso könntest du einen Jumper auf bspw. den A0 Pin der EEPROMs setzen, 
wodurch der Jumper die Adresse des EEPROM ändert. Also du hast einen 
PullDown Widerstand von 100k an dem A0 Pin beider EEPROMs. Dann hast du 
einen Stecker mit 3 Pins wobei der mittlere Pin VCC ist, der rechte auf 
A0 vom EEPROM2 geht, der linke auf A0 vom EEPROM1. Wird der Jumper links 
gesetzt so ist A0 vom EEPROM1 auf VCC, wird der Jumper rechts gesetzt so 
ist A0 von EEPROM2 auf VCC, ist kein Jumper drin, so ist A0 beider 
EEPROMs auf VSS und es spricht keiner an.

Oder eben du trennst den EEPROM vom Netz und kappst du Bus Leitung, was 
ich als das umständlichste ansehe da es die meisten Jumper benötigt.

von Peter K. (peterka2000)


Lesenswert?

So, noch mal eine Frage zur Widerstanddimensionierung, ich arbeite mit 
3,3 V.
PullUp SDA/SCL 2,2 k.
PullDown A0 100k, ist das nicht ein wenig viel?
Haut das so hin?

von Frank M. (frank_m35)


Lesenswert?

Da ich Batterieanwendungen meist baue verwende ich fast ausschließlich 
100k als Pull-Up/Down.
Falls der Stromverbrauch nicht kritisch bei dir ist, kannst du auch 
problemlos 10k oder irgendwas dazwischen verwenden, 100k sollten aber 
gut in normalen Umgebungen funktionieren.

2.2kOhm für I2C ist schon recht niedrig, funktioniert aber auf alle 
Fälle. 4.7k ist so ein typischer Standarwert. Es kommt eben drauf an 
wieviele Geräte am Bus hängen:
http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html

von Gregor B. (Gast)


Lesenswert?

Peter K. schrieb:
> PullDown A0 100k, ist das nicht ein wenig viel?

Pull-Down auf A0 hilft gar nichts.
Bei den 24C08 oder LC08 von Microchip sind die Anschlüsse A0 bi A2 nicht 
intern verbunden, machen also nichts.

Bei den CAT24C08 von On Semi, den M24C08 von ST oder den AT24C08 von 
Atmel ist jeweils nur der Pin A2 belegt.

Die CAT24C08 haben zudem einen internen Pull-Down von ungefähr 100k, die 
anderen beiden nicht.
Also wenn, dann kannst Du nur die Leitung A2 nehmen.
Dazu benutzt Du einen Jumper mit 3 Kontakten. An den mittleren legst Du 
5V über 1k Pull-Up, an die beiden äußeren kommt jeweils ein Signal A2 
von den EEPROMS.
Die Leitungen werden am EEPROM mitt 100k gegen GND geklemmt, entweder 
über den internen Pull-Down oder über einen externen.
Wenn Du jetzt den Pull-Up mit der Leitung A2 vonn EEPROM 1 verbindest, 
erwartet EEPROM 1 auf Bit 3 der Slave-Adresse eine 1 und EEPROM 2 eine 
0.
Jetzt musst Du dich nur noch dafür entscheiden, ob bei Dir diese Bit bei 
der Übertragung 1 oder 0 ist. Das kannst Du fest lassen, der Jumper 
selektiert dann, ob sich EEPROM 1 oder 2 angesprochen fühlt, das jeweils 
andere reagiert nicht.

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.