Forum: Analoge Elektronik und Schaltungstechnik Serielles EEprom 25LC1024 Verständnis Problem


von sd_ram (Gast)


Lesenswert?

Schönen Sonntag,
ich möchte mit meinem Atmega328 das 25LC1024 verwenden.
Und Grundsätzlich funktioniert es auch. Das heißt ich kann eine Structur 
ins EEprom schreiben und auch wieder lesen.
Nur leider verstehe ich nicht was mit den Pages gemeint ist.
Ich habe im Moment einfach eine 24Bit Adresse die ich als start Adresse 
verwende.
Reicht das oder muss ich mit den ganzen Pages auseinandersetzen?
Kann mir jemand erklären was diese Pages sind?
Danke für die Hilfe

von Wolfgang (Gast)


Lesenswert?

sd_ram schrieb:
> Kann mir jemand erklären was diese Pages sind?

Das sind Speicherseiten von 256Bytes die gemeinsam angesprochen werden 
können (Page Erase Befehl, Page Write Sequence im Kap.2.2 DS).

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

auch mit dem "ack" Signal ist aufzupassen, denn intern befinden sich im 
Prinzip zwei getrennte Geräte, wovon je eines abhängig von der Adresse 
aktiv ist.

MfG

von A. B. (Gast)


Lesenswert?

Man kann natürlich einzelne Bytes schreiben (Lesen sowieso) ohne 
Rücksicht auf die einzelnen Seiten. Nur:

Jedes Schreiben eines Bytes dauert dann typisch 5ms. Beschreibt man 
aber alle Bytes einer Page in einem Rutsch, fällt für die gesamte Page 
nur einmal diese Zeit an.

von Christian S. (roehrenvorheizer)


Lesenswert?

Mittels "Byte write" kann ein einzelnes Byte geschrieben werden, mittels 
"page write" können nach der Startadresse bis zu 128 Bytes nacheinander 
geschrieben werden, wie in figure 6.2 dargestellt. Analog verhält es 
sich beim Lesen. Für größere Datenmengen muß nach 128 Bytes wieder die 
nächste Startadresse angegeben werden.

MfG

von Joachim B. (jar)


Lesenswert?

A. B. schrieb:
> dauert dann typisch 5ms

leider findet man dieses "typische" in fast jeder LIB was zu unnötigen 
Verzögerungen führt, vor allem bei Einzelbytes.
Besser ist busy abzufragen oder wann der Chip wieder bereit ist, 
Polling!

Natürlich ist pageweise schreiben dann besser, ist immer eine Abwägung 
von Aufwand und Nutzen (Aufwand den Chip gemäß seines Datenblatt zu 
beschreiben).

Ich polle lieber ACK/Busy als sinnlose 5ms bei jedem Byte zu warten!

von Hansjörg (Gast)


Lesenswert?

A. B. schrieb:
> Man kann natürlich einzelne Bytes schreiben (Lesen sowieso) ohne
> Rücksicht auf die einzelnen Seiten. Nur:
>
> Jedes Schreiben eines Bytes dauert dann typisch 5ms. Beschreibt man
> aber alle Bytes einer Page in einem Rutsch, fällt für die gesamte Page
> nur einmal diese Zeit an.

Also kann man die gerammte Page mit full Speed rein prügeln?

von hinz (Gast)


Lesenswert?

Hansjörg schrieb:
> Also kann man die gerammte Page mit full Speed rein prügeln?

Ja, das ist ja Sinn der Sache.

von hinz (Gast)


Lesenswert?

Und beim 25LC1024 sind die Pages 256 Bytes lang.

von sd_ram (Gast)


Lesenswert?

Vielen Dank für die Erklärung!
Das bringt mich weiter.Theoretisch kann ich nach jedem Byte das Busy 
Flag auswerten und auch 500 Byte hintereinander schreiben, habe ich das 
richtig verstanden?

von hinz (Gast)


Lesenswert?

sd_ram schrieb:

> Theoretisch kann ich nach jedem Byte das Busy
> Flag auswerten und auch 500 Byte hintereinander schreiben, habe ich das
> richtig verstanden?

Kostet halt CPU-Zeit.

von A. B. (Gast)


Lesenswert?

Joachim B. schrieb:
> A. B. schrieb:
>> dauert dann typisch 5ms
>
> leider findet man dieses "typische" in fast jeder LIB was zu unnötigen
> Verzögerungen führt, vor allem bei Einzelbytes.
> Besser ist busy abzufragen oder wann der Chip wieder bereit ist,
> Polling!

Eine feste 5ms Verzögerung einzubauen, ist mehr als blöd. Gibt es 
tatsächlich so dumme Leute? Solch eine "LIB" gebührt nur ein Platz, 
nämlich /dev/null ...
Denn "typisch" heißt ja auch gerade nicht "maximal".

Allerdings ist Polling auch eine schlechte Idee, wenn es zwischendurch 
noch was anderes zu tun gäbe. Besser so alle 100us bis 1000us pollen und 
die Zeit dazwischen anderweitig nutzen.

von Christian S. (roehrenvorheizer)


Lesenswert?

sd_ram schrieb:
> Theoretisch kann ich nach jedem Byte das Busy
> Flag auswerten und auch 500 Byte hintereinander schreiben, habe ich das
> richtig verstanden?

Nein, nicht ganz. Nach jedem Byte das einzeln geschrieben wurde und der 
Zugriff abgeschlossen wurde. Bei I2C also nach STOP.
Nicht 500, sondern maximal so viele wie die Page an Länge hat.

Ich habe mal an einem Exemplar die Zeit bis zum ACK mittels DSO 
ausgemessen. Der Wert war reproduzierbar von etwa 4,5 ms.

mfG

: Bearbeitet durch User
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.