Forum: Mikrocontroller und Digitale Elektronik EEPROM mit 4 Adresspins gesucht


von Justus (Gast)


Lesenswert?

Hallo liebes Forum,

Ich möchte 10-Leiterkarten eindeutig über eine EEPROM-Adresse 
identifizieren.
Da es keine verschiedenen Bestückungsvarianten geben soll, also auch 
immer identische EEPROMs (gleiche Basisadresse), suche ich aktuell nach 
einem EEPROM
mit mehr als 3 Adresspins. Gibt es sowas überhaupt?

Danke vorab!

von EAF (Gast)


Lesenswert?

Nöö...
3, ja
4 nöö
Mehr ja.

Wäre das DS2431 was für dich?

von Patrick C. (pcrom)


Lesenswert?

Mehr informationen benoetigt....
- Meinst du I2C EEPROMs ?
- Werden 10 gleichen Platinen auf dem Gleichen moment angeschlossen ?
- Gib mal ein block diagramm, damit wir uns ein bisschen ein bild 
erzeugen koennen

Patrick aus die Niederlaende

von Stefan F. (Gast)


Lesenswert?

Wie viele Bytes brauchst du denn pro Adressraum?

von STK500-Besitzer (Gast)


Lesenswert?

Justus schrieb:
> Ich möchte 10-Leiterkarten eindeutig über eine EEPROM-Adresse
> identifizieren.

Ist zwar kein EEPROM, hat aber ein paar Adreseepins mehr: 27C16

Mal mal bitte einen Plan, wie du dir das vorstellst!

von Falk B. (falk)


Lesenswert?

Es gibt Seriennummer-ICs mit One Wire.

von STK500-Besitzer (Gast)


Lesenswert?

Falk B. schrieb:
> Es gibt Seriennummer-ICs mit One Wire.

Mäuseklaviere und 8-Bit-Vergleicher auch. ;)

von PittyJ (Gast)


Lesenswert?

Könnte man die ID nicht in das Eeprom schreiben, wenn es genug Platz 
hätte?

von EAF (Gast)


Lesenswert?

PittyJ schrieb:
> Könnte man die ID nicht in das Eeprom schreiben, wenn es genug Platz
> hätte?

In welches der 10

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

PittyJ schrieb:
> Könnte man die ID nicht in das Eeprom schreiben, wenn es genug Platz hätte?
Und dann alle am I2C parallel hängenden ID-EEPROMs mit der selben 
Adresse auslesen...

von Justus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

sorry vergessen mitzuteilen: Es müssen zwingend I2C-EEPROMs sein.
Hier im Anhang, mal meine aktuelle Idee, ohne Anspruch, das das die 
finale Lösung sein soll ;)

Ich muss irgendwie gewährleisten, das jedes PCB eindeutig erkennbar ist 
und auch weiß, auf welcher Position es im Stack ist.
Eine Bestückungsvariante ist nicht möglich, also auch keine EEPROMs mit 
unterschiedlicher Basisadresse im Chip.

von Justus (Gast)


Lesenswert?

Sollte der Anhang zu klein sein (schlecht lesbar), bitte Bescheid geben

von EAF (Gast)


Lesenswert?

Justus schrieb:
> Ich muss irgendwie gewährleisten, das jedes PCB eindeutig erkennbar ist
> und auch weiß, auf welcher Position es im Stack ist.
Das scheint mir wenig Problem zu sein!

Justus schrieb:
> Es müssen zwingend I2C-EEPROMs sein.
Und damit dürftest du verloren haben!

von Dieter W. (dds5)


Lesenswert?

Da bleibt wohl nur ein kleiner µ-Controller.

von Anselm (Gast)


Lesenswert?

Wie willst du die Position der Platinennummer im Stack detektieren?

von (prx) A. K. (prx)


Lesenswert?

Anselm schrieb:
> Wie willst du die Position der Platinennummer im Stack detektieren?

Hast du die Adder übersehen? Auf 0 reagiert die erste Platine, auf 1 die 
nächste, ...

von Patrick C. (pcrom)


Lesenswert?

Wie viele anschlusze sind verfuegbar zwischen die Platinen ?
Vielleicht kan man die haelfte der chips SDA und SCL umtauschen ?

von (prx) A. K. (prx)


Lesenswert?

Dieter W. schrieb:
> Da bleibt wohl nur ein kleiner µ-Controller.

... als I2C-EEPROM.

Was dann auch den Adder einspart und die Daisy-Chain von 8 auf 2 Pins 
eindampft. Bei Power-Up ist jeder DC-Out auf 1. Die erste Platine hat 
DC-In auf 0 und nur dann reagiert der µC. Nun kann der zentrale 
Controller den ersten ansprechen, per Protokoll umadressieren und dessen 
DC-Out auf 0 setzen. Damit wird die zweite Platine ansprechbar, usw. Am 
Ende hat jede Platine bis zum Powerdown ihre eigene Adresse und die 
Zentrale weiss was wo steckt.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Dieter W. schrieb:
> Da bleibt wohl nur ein kleiner µ-Controller.

Nur muss dann natürlich der Master mit dem Clock Stretching eines µC als 
I2C-Slave leben können.

von Εrnst B. (ernst)


Lesenswert?

Pack auf jede Platine ein D-FlipFlop, dessen Ausgang an einen Adresspin 
vom Eeprom geht (sozusagen als Enable) und als Data-In zur nächsten 
Platine.

Dein Master kann dann (mit nur drei Leitungen statt der Vier in deinem 
Plan, Data, Clock, Reset) ein Enable-Bit durch den Platinenstapel 
durchschieben, die jeweils aktive Platine hat das Eeprom an der 
gewünschten Adresse, die "andere" Adresse, auf der die 15 anderen 
Eeproms liegen, sollte man halt nicht ansprechen.

von Bauform B. (bauformb)


Lesenswert?

Wie wird denn die restliche Elektronik auf den Platinen adressiert (oder 
ist da nur das EEPROM drauf)? Vielleicht ist eine Symbiose möglich? 
I2C-LED-Treiber haben bis zu 7 Adress-Pins und man bekommt ein paar 
Ausgänge geschenkt. Extremes Beispiel: PCA9633, 16 Pins, 7 Adress-Pins, 
4 Ausgänge.

von Peter D. (peda)


Lesenswert?

Εrnst B. schrieb:
> Dein Master kann dann (mit nur drei Leitungen statt der Vier in deinem
> Plan, Data, Clock, Reset) ein Enable-Bit durch den Platinenstapel
> durchschieben

2 Leitungen reichen. Nach 10 Clocks ist der Zustand der 10 D-FFs 
bekannt.
Es reichen sogar 9 Clocks, der letzte D-FF hängt ja in der Luft.

von STK500-Besitzer (Gast)


Lesenswert?

Peter D. schrieb:
> Es reichen sogar 9 Clocks, der letzte D-FF hängt ja in der Luft.

Wenn man die Leitung zum Master zurückführt, weiß man auch wie viele 
Boards am Bus hängen.

von Εrnst B. (ernst)


Lesenswert?

Peter D. schrieb:
> 2 Leitungen reichen. Nach 10 Clocks ist der Zustand der 10 D-FFs
> bekannt.

Ja. Meine Sorge war, dass die Flipflops beim Power-On evtl. keinen 
definierten Zustand haben. Aber man kann ja einmal "leer" durchtakten.

STK500-Besitzer schrieb:
> Wenn man die Leitung zum Master zurückführt, weiß man auch wie viele
> Boards am Bus hängen.

oder man schaut, nach wievielen Schritten kein EEProm mehr reagiert.
Ist in dem Platinenstapel einfacher zu verdrahten als die 
Signalrückführung.

Was noch zu klären wäre, da habe ich im Microchip 24c32-Datenblatt nix 
zu gefunden, ist ob das EEprom seine Adresspins bei jedem Request prüft, 
oder nur einmal beim hochfahren.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Justus schrieb:
> Ich muss irgendwie gewährleisten, das jedes PCB eindeutig erkennbar ist
Damit sind ja wohl irgendwelche Modultypen gemeint. Wieviele 
unterschiedliche Platinen/Module gibt es?

Justus schrieb:
> Es müssen zwingend I2C-EEPROMs sein.
Blöd auch. Ich würde da einfach SPI nehmen, und dann ein 
PISO-Schieberegister pro Platine mit Pgeln hart kofigurieren (oder 
Dipschalter dran machen). Und dann die Schleife jeweils mit einem 
1k-Widerstand schließen. Mit ein wenig Nachdenken kann man sich aus aus 
dem CLK mit einem einem RC-Glied den Latch-Enable generieren: wenn eine 
Zeit lang kein Takt mehr kommt, wird der parallele Wert gelatcht.
1
                  8-Bit-ID
2
Master            Dev 1              Dev 2              Dev 3
3
                 00000100           00111100           00111100
4
    CLK ----------o------------------o------------------o-----------------x
5
                  v                  v                  v
6
     "1" ------- Di    Do ----o---- Di    Do ----o---- Di    Do ----o----x
7
                              |                  |                  |
8
                             1k                 1k                  1k
9
                              |                  |                  |
10
     Di ----------<Buffer-----o-----<Buffer------o------<Buffer-----o----x
11
                        gepufferter Pegel                    letztes Device
12
                        "überschreibt" den                   --> 1k-Brücke
13
                        durch den 1k-Widerstand              schließt Kreis
14
                        gebrückten Pegel
Die ID sollte immer 1 Null haben, und wenn nach n*8 Taktimpulsen nur 
noch "11111111" kommt, dan sind alle Slaves durch.

Und weil man dafür Hardwaretechnisch zu viel Klimbim braucht würde ich 
es in einen 6-Pin µC packen und per Software lösen. Und das Einlesen der 
Konfig würde ich genauso per Software machen und das Timing dadurch 
entspannen. Juckt ja nichts, wenn das Duchtakten der für 10 Slaves 
nötigen z.B. 80 Bit dann 20ms dauert...

: Bearbeitet durch Moderator
von Jester (Gast)


Lesenswert?

Daisy Chain geht gefühlsmäßig in die richtige Richtung - ist aber noch 
nicht ganz stimmig.
Kannst du vielleicht die Steckplätze kodieren? 4bit Steckplatz-Nummer 
über die backplane?

von Joachim B. (jar)


Lesenswert?

Justus schrieb:
> sorry vergessen mitzuteilen: Es müssen zwingend I2C-EEPROMs sein.
> Hier im Anhang, mal meine aktuelle Idee, ohne Anspruch, das das die
> finale Lösung sein soll ;)
>
> Ich muss irgendwie gewährleisten, das jedes PCB eindeutig erkennbar ist
> und auch weiß, auf welcher Position es im Stack ist.

warum nicht mit onewire Seriennummer?
http://www.dl8ma.de/Arduino/SerNum/

von EAF (Gast)


Lesenswert?

Joachim B. schrieb:
> warum nicht mit onewire Seriennummer?

Du bist jetzt der dritte!
2 haben keine Antwort bekommen.
Bekommst du eine?

Hast du überhaupt die "Aufgabe" verstanden?
Es sollen nicht nur die Dinger identifiziert werden, sondern auch ihre 
Position im Stapel.
Wie macht man das mit OneWire?

von Rainer M. (excogitator)


Lesenswert?

Müssen alle EEPROMs zwingend am selben I2C-Bus hängen?
Falls nein, wäre ein I2C-Multiplexer evtl. eine Lösung (z.B. PCA9548A).

Gruß
Rainer

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich hätte auch vorgeschlagen dass man die Backplane an 4 Pins codiert.
Damit würde man den "Adder" sowie zusätzliche 4 Pins nach dem Adder 
sparen.

Zusätzlicher Vorteil:
Wenn ein Steckplatz dazwischen defekt ist oder einfach nicht gesteckt, 
dann funktionieren die anderen noch weiter.
Das würde mit der Adder-Schaltug nicht gehen.

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Markus M. schrieb:
> Ich hätte auch vorgeschlagen dass man die Backplane an 4 Pins codiert.

Wenn er denn eine Backplane / Bus-Platine hat.

Man könnte die Posts/das Schema-Bildchen von Justus auch so 
interpretieren dass die Platinen alle übereinandergestapelt werden 
sollen, neudeutsch "HAT". Also mit Steckerleiste unten an der Platine, 
Buchsenleiste oben, alles ineinandergesteckt.

von EAF (Gast)


Lesenswert?

Es ist sicherlich/vielleicht sowas gemeint:
https://www.ebay.de/itm/284888933915

von Christian B. (luckyfu)


Lesenswert?

Nimm doch einen I2C Multiplexer. Dann kannst du jedem Steckverbinder 
einen eigenen Kanal zuweisen und du kannst immer die selbe EEPROM 
Adresse nutzen. so machen wir das bei unseren Geräten mit der 
Möglichkeit, mehrere Handstücke anzuschließen. Die haben alle die 
Gleiche Adresse. Du musst nur den aktiven Multiplexerkanal deaktivieren, 
bevor du zum nächsten Umschaltest, sonst gibt das eine veroderte Antwort 
aus mehreren Eeproms. Frag nicht, woher ich das weiß...

p.s.: Das funktioniert natürlich nur, wenn du getrennte Anschlüsse für 
die jeweiligen PCBs hast, also quasi eine Sternverkabelung. Wenn die 
alle Seriell hängen, geht das nicht.

: Bearbeitet durch User
von STK500-Besitzer (Gast)


Lesenswert?

Welchen Sinn soll diese "Adressiermöglichkeit" haben?
In dem Blockschaltbild fehlen doch noch die Leitungen des 
Kommunikationsbusses.
Mit dieser Schaltung kann man bis zu 16 EEPROMs von einem Master aus 
ansprechen, aber was sollen die Slaves mit der Information anfangen, die 
nur beim Master landet?

von STK500-Besitzer (Gast)


Lesenswert?

Justus schrieb:
> Da es keine verschiedenen Bestückungsvarianten geben soll

Gilt das nur für das Adress-EEPROM?
Der Rest der Platine kann anderes sein?
Ansonsten wäre das ziemlich sinnfrei.

von Frank K. (fchk)


Lesenswert?

EAF schrieb:

> Wie macht man das mit OneWire?

Mir fällt da der hier ein:

https://datasheets.maximintegrated.com/en/ds/DS28E04-100.pdf

Da gibt es 7 Adresspins, sollte also reichen.

fchk

von EAF (Gast)


Lesenswert?

Frank K. schrieb:
> Mir fällt da der hier ein:

Interessant!
Den habe ich noch nie gesehen.....

Wenn der, und der "Adder", dann zusammen billiger als ein Tiny (o.ä.) 
sind, dann lohnt sich das evtl.

von Runner (Gast)


Lesenswert?

Frank K. schrieb:
> EAF schrieb:
>
>> Wie macht man das mit OneWire?
>
> Mir fällt da der hier ein:
>
> https://datasheets.maximintegrated.com/en/ds/DS28E04-100.pdf
>
> Da gibt es 7 Adresspins, sollte also reichen.
>
> fchk

Leider 1-Wire EEPROM

Justus schrieb:
> Hallo,
>
> sorry vergessen mitzuteilen: Es müssen zwingend I2C-EEPROMs sein.

von EAF (Gast)


Lesenswert?

Runner schrieb:
> Leider 1-Wire EEPROM
Das EEPROM in dem DS muss man ja nicht nutzen...

Der DS hat genug Adressen und kann 2 Ax Pins eines I2C EEPROM 
manipulieren.

von Runner (Gast)


Lesenswert?

EAF schrieb:
> Runner schrieb:
>> Leider 1-Wire EEPROM
> Das EEPROM in dem DS muss man ja nicht nutzen...
>
> Der DS hat genug Adressen und kann 2 Ax Pins eines I2C EEPROM
> manipulieren.

Das bringt dem TO aber nicht viel. Wenn ein I2C EEPROM nur 3 Adressbits 
hat, ergibt das auf dem I2C Bus maximal 8 unterschiedliche Adressen, 
egal ob/wie an den Adressbits manipuliert wird. Er möchte aber 10 
EEPROMs adressieren.

von EAF (Gast)


Lesenswert?

Runner schrieb:
> Er möchte aber 10
> EEPROMs adressieren.

Kann er ja machen....
Wie schon gesagt, die 2 Pio Pins nutzen um die Adressen umzuschalten.

Also alle EEPROM auf die selbe Adresse legen.
Diese Adresse niemals nutzen.
Dann kann man mit den 2 Pios nach Belieben bis zu 4 EEPROM zu einer Zeit 
auf andere Adressen legen.
Also so eine Art Bank Switching etablieren.

von Εrnst B. (ernst)


Lesenswert?

EAF schrieb:
> Dann kann man mit den 2 Pios nach Belieben bis zu 4 EEPROM zu einer Zeit
> auf andere Adressen legen.
> Also so eine Art Bank Switching etablieren.

Damit kriegst du aber immer noch nicht die Anforderung gelöst, die 
Reihenfolge der Module zu erkennen.
Die Lösung mit den FlipFlop/Schieberegistern liefert das, ist billiger, 
und braucht nur einen Pin mehr.

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

Frank K. schrieb:
> Mir fällt da der hier ein:
>
> https://datasheets.maximintegrated.com/en/ds/DS28E04-100.pdf
>
> Da gibt es 7 Adresspins, sollte also reichen.

Justus schrieb:
> sorry vergessen mitzuteilen: Es müssen zwingend I2C-EEPROMs sein.

Naja, Zwänge werden meist von Menschen gemacht und wenn die Natur ein 
Geschenk wie den DS28E04-100 bringt...

Mit einem DS2484 oder DS2485 verliert der 1-Wire-Bus seinen Schrecken. 
Die konvertieren I2C zu 1-Wire und sorgen in Hardware für das korrekte 
Timing.

von Justus (Gast)


Lesenswert?

Hallo,

erstmal herzlichen Dank für die rege Teilnahme und eure Ideen!

Jetzt brauche ich etwas Zeit um hier zu lesen, hatte gerstern keine Zeit 
mehr.

Das I2C zwingend ist, hängt daran, das auf der Backplane (Gateways) noch 
andere I2C-Slaves sitzen. Mit dem 1Wire-to-I2C-converter, liese sich 
diese Problem aber umgehen.
Die Idee mit 1Wire finde ich aktuell am interessantesten, Danke!

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.