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
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).
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
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.
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
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!
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?
Hansjörg schrieb: > Also kann man die gerammte Page mit full Speed rein prügeln? Ja, das ist ja Sinn der Sache.
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.