Serielles EEprom 25LC1024 Verständnis Problem

Gast #6436391
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
Gast #6436426
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.
#6436434
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
#6436448
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!
Gast #6436480
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?
Gast #6436507
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.
#6436540
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren