Forum: Mikrocontroller und Digitale Elektronik AT24C08 EEPROM


von Elbegucker (Gast)


Lesenswert?

Hallo zusammen
Ich habe gerade das EEPROM 24C08 von Atmel in Betrieb. Später möchte ich 
auf 24C512 umsteigen (Ich warte noch auf die Lieferung).
Beschreiben und lesen des EEPROM funktioniert bereits.

Nur ist mir der interne Aufbau und die Speicheradressierung noch nicht 
klar.
Der 24C08 hat 1024x8 und 16 Byte Page.
Vielleicht kann mir jemand etwas zum Aufbau/Speicheradressierung sagen.
Was ist die max. Speicher-Adresse (Word-Adresse). Und wie läuft das mit 
dem "roll over" und den "pages" ab?

Ich zitiere aus dem Datenblatt:
The address “roll over” during read is from the last byte of the last 
memory page to the first byte of the first page.
The address “roll over” during write is from the last byte of the 
current page to the first byte of the same page.

von Elbegucker (Gast)


Lesenswert?

Kann niemand etwas dazu sagen?

von Falk B. (falk)


Lesenswert?

@Elbegucker (Gast)

>Der 24C08 hat 1024x8 und 16 Byte Page.
>Vielleicht kann mir jemand etwas zum Aufbau/Speicheradressierung sagen.

Der Speicher hat die Adressen 0..1023.
Adresse 0..15 ist Page 0
Adresse 16..31 ist Page 1
...

Eine Page kann man mit einem Programmiervorgang schreiben, das macht das 
Ganze um bis zu 16mal schneller gegenüber dem einzelnen Schreiben von 
Bytes.
Not bad.

>Was ist die max. Speicher-Adresse (Word-Adresse).

Der IC hat keine Wordaradressen, nur Byteadressen.
Man kann bestenfalls mit Pagenummern arbeiten. Der Adresszähler ist 10 
Bit breit, eine Page hat 16 Byte, das sind 4 Bit (2^4=16)
Also sind die oberen 10-4=6 Bits die Pagenummer.

Page = Adresse >> 4;

>The address “roll over” during read is from the last byte of the last
>memory page to the first byte of the first page.

Ganz einfach, beim lesen mit automatischer Adresserhöhung springt der 
interne Adresszähler von 1023 auf 0.

>The address “roll over” during write is from the last byte of the
>current page to the first byte of the same page.

Beim Schreiben ist der Überlauf nur innerhalb einer Page, also von 
Adresse 15 nach Adress 0 (Page 0) oder z.B. von Adresse 575 nach Adresse 
560 (Page 35).

MFG
Falk

von Elbegucker (Gast)


Lesenswert?

>Der IC hat keine Wordaradressen, nur Byteadressen.
-->Im Datenblatt steht nur immer word address, womit die Speicherstelle 
gemeint ist. Deshalb habe ich es in Klammern geschrieben.

>Der Adresszähler ist 10 Bit breit, eine Page hat 16 Byte, das sind 4 Bit 
>(2^4=16) Also sind die oberen 10-4=6 Bits die Pagenummer.


Hmmm???
Immer noch nicht ganz verstanden.

Wenn ich ein Byte schreiben will übertrage ich ja zunächst die device 
address danach die Speicher-Adresse (8Bit) (Beim ATC512 sind es sogar 
zwei Speicher-Adressen.)und dann das zu schreibende Byte.

Wenn ich nun beim 24C08  0x28 als Speicher-Adresse übermittle, wo wird 
dann nun mein Byte gespeichert? Welche Page, Platz?

von Elbegucker (Gast)


Lesenswert?

???

von Falk B. (falk)


Lesenswert?

@ Elbegucker (Gast)

>Wenn ich ein Byte schreiben will übertrage ich ja zunächst die device
>address

Genau, das ist die Adress VOM IC, welchen man aussen mit A0..2 
einstellt.

> danach die Speicher-Adresse (8Bit)

Das ist die Adresse IM IC.

>Wenn ich nun beim 24C08  0x28 als Speicher-Adresse übermittle, wo wird
>dann nun mein Byte gespeichert? Welche Page, Platz?

Die Frage ist nicht dein Ernst?

MFG
Falk

von holger (Gast)


Lesenswert?

>>Wenn ich ein Byte schreiben will übertrage ich ja zunächst die device
>>address

>Genau, das ist die Adress VOM IC, welchen man aussen mit A0..2
>einstellt.

Einstellen kann man da aber nur A2. A1,A0 sind aussen nicht
einstellbar. Grund: Sie beinhalten die höchsten Adressbits
der Speicherstelle! Das wären hier A1=>A9 und A0=>A8.

Beim 24C512 ist das aber nicht so. Nach der device adress
muss man zwei Bytes für die Speicheradressierung senden.

von Elbegucker (Gast)


Lesenswert?

>Die Frage ist nicht dein Ernst?
Doch. Ich versehe einfach nicht wie ich mit 8 bit auf den gesamten 
Speicherbereich zugreifen kann. Wie soll man denn mit 8Bit -->255 bis 
auf 1023 kommen?

Wie kann ich mir die eine bestimmte Page auswählen?


@Holger
Das mit A2 war mir bewusst. Nur leider steht über die Pins A1,A0 bzw P1 
und P0 in der Device Adresse nichts im Datenblatt.

>Sie beinhalten die höchsten Adressbits der Speicherstelle

Das habe ich gerade auch rausgefunden. Nachdem ich in einem anderen 
Datenblatt (nicht Atmel) gelesen habe, dass das EEPROM auf 4*256*8bit 
aufgeteilt sein soll.

Habe versucht unterschiedliche Zeichen auf der "gleichen" Adresse mit 
unterschiedlich gesetzten P0 und P1 zu schreiben. Hinterher habe ich 
auch die unterschiedliche Zeichen gelesen.

Alles schön und gut.
Also angenommen ich sende nun 10 in der device addresse und 0010 1000 im 
Adressbyte. Wo landen dann meine Daten?
Und wenn das ganze in einem Viererblock sein soll, dann verstehe ich 
nicht wie das mit 64 pages of 16 byte funktionieren soll? Oder ist das 
gar nicht im Viererblock?
entweder 4*128*16  oder 8*64*16

von holger (Gast)


Lesenswert?

>Also angenommen ich sende nun 10 in der device addresse und 0010 1000 im
>Adressbyte. Wo landen dann meine Daten?

An der Adresse 10 0010 1000

von Falk B. (falk)


Lesenswert?

@ Elbegucker (Gast)

>Doch. Ich versehe einfach nicht wie ich mit 8 bit auf den gesamten
>Speicherbereich zugreifen kann. Wie soll man denn mit 8Bit -->255 bis
>auf 1023 kommen?

Ganz einfach, es wird zusammengesetzt aus den unteren 2 Adressbits im 
I2C Adressbyte, Bits B0 und B1 + die Adresse die direkt danach gesendet 
wird, macht 2+8=10 Bit.

>Wie kann ich mir die eine bestimmte Page auswählen?

Das machst du automatisch, über die Adresse. Page und Adresse sind nur 
verschiedene Zählweisen für ein und den selben Speicher.

>Datenblatt (nicht Atmel) gelesen habe, dass das EEPROM auf 4*256*8bit
>aufgeteilt sein soll.

Ist es auch. Es verhält sich wie 4 einzelne I2C Speicher mit jeweils 
2Kbit Speicher.

>Habe versucht unterschiedliche Zeichen auf der "gleichen" Adresse mit
>unterschiedlich gesetzten P0 und P1 zu schreiben. Hinterher habe ich
>auch die unterschiedliche Zeichen gelesen.

Logisch, du hast verschiedene Adressen angesprochen. Siehe oben.

>Also angenommen ich sende nun 10 in der device addresse und 0010 1000 im
>Adressbyte. Wo landen dann meine Daten?

Auf 10 0010 1000

>Und wenn das ganze in einem Viererblock sein soll, dann verstehe ich
>nicht wie das mit 64 pages of 16 byte funktionieren soll?

64x16 Bytes = 1024 Byte = 8kBit

> Oder ist das gar nicht im Viererblock?
>entweder 4*128*16  oder 8*64*16

Der IC hat 4 Blöcke, a 16 Pages a 16 Bytes, macht in Summe 1024 Byte.

http://www.datasheetcatalog.org/datasheets/90/80505_DS.pdf

MFG
Falk

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.