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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von sd_ram (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Und beim 25LC1024 sind die Pages 256 Bytes lang.

von sd_ram (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.