- 12V Akku mit 280 Ah bauen         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: Speicherstellen im EEprom werden überschrieben ?!

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Anzeige

    Praxistest und DIY Projekte
    Hallo Albundy

    Den nächsten Datensatz schreibst du dann an Adresse + 26.
    Aber nur wenn der Block in die Page passt.
    Wenn ich jetzt zweimal 26Byte (=ein Block) hintereinander geschrieben habe geht es sich mit +26 dann nicht mehr aus.
    Dann dürfte ich die nächsten 26byte erst wieder in die nächste Page schreiben..
    Dann geht mir ja relativ viel Platz imm EEprom verloren.
    Sehe ich das richtig ?

  2. #12
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Wenn ich jetzt zweimal 26Byte (=ein Block) hintereinander geschrieben habe geht es sich mit +26 dann nicht mehr aus.
    Sorry, dass habe ich jetzt nicht verstanden.
    Aber egal. Klammer dich nicht so an den Begriff Page. Diese muss ja nicht 64 Byte groß sein.
    Bei dir wäre z.B.
    Page 1 von Speicherstelle 0 bis 25
    Page 2 von 26 bis 52
    Page 3 von 53 bis 79
    u.s.w.
    Also adressierst du den 1. Datensatz an Adresse 0, den 2. Datensatz an Adresse 26 und den 3. Datensatz an Adresse 53.
    Da du nach jedem Datensatz (26 Byte) ein Stop sendest, ist für den Eeprom die Page beendet und eine neue kannst du an jeder beliebigen Speicherstelle anfangen lassen. Es gibt nur die Beschränkung (64 Byte) nach oben.

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo
    War jetzt doch am Holzweg.

    Durch die Aussage:
    Nein, die Pages sind fest vorgegeben.
    Dachte ich mir jetzt, dass die EEprom Pages fix an Adressen vom EEprom gebunden sind.
    Aber durch nachlesen von:
    Das erste BYte, welches du schreibst ist fest deffiniert durch die adresse, die du mitschickst.
    Scheint das doch nicht so zu sein.

    Zusammenfassung:
    Die "64byte page-write" sind praktisch ein zwischenspeicher im Eeprom für den Datenempfang.
    Das Stop Kommando veranlasst das EEprom dann, diesen Buffer
    von max 64Byte, nachhaltig dann in den EEprom-Speicher zu schreiben.
    (nacher ca. 10ms warten)

    Wenn ich mehr als 64 Byte in den Buffer schreibe, überschreibt er den Buffer , bei Null beginnend.

    Liege ich da jetzt richtig ?

    Aber durch nochmaliges durchlesen, hat mich jezt wieder dieser Satz verunsichert:
    Natürlich kannst du auch gezielt an irgendeine Adresse ein Word oder ähnliches schreiben. Du musst dabei nur beachten, das immer nur 1 Byte geschrieben wird und dann ein Stop kommen muss.
    Der Nachteil bei dieser Methode ist die Wartezeit nach jedem geschriebenen Byte. (siehe Datenblatt unter Writecycle Time )
    Muss ich den Page-Modus extra aktivieren, oder ist der immer aktiviert und schliesst einfach mit dem Stop Befehl ?

    Wenn das unter Zusammenfassung jetzt stimmt: müsste mein Code ja eigentlich funktionieren , weil ich ja nach jedem Word, Long oder Byte, ein Stop habe !

    l.G. Roberto (schwere Geburt )

  4. #14
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Zusammenfassung:
    Die "64byte page-write" sind praktisch ein zwischenspeicher im Eeprom für den Datenempfang.
    Das Stop Kommando veranlasst das EEprom dann, diesen Buffer
    von max 64Byte, nachhaltig dann in den EEprom-Speicher zu schreiben.
    (nacher ca. 10ms warten)

    Wenn ich mehr als 64 Byte in den Buffer schreibe, überschreibt er den Buffer , bei Null beginnend.
    Das ist korrekt.
    Muss ich den Page-Modus extra aktivieren, oder ist der immer aktiviert und schliesst einfach mit dem Stop Befehl ?
    Der wird aktiviert, sobald du mehr als 1 Byte ohne Stop schreibst.
    Wenn das unter Zusammenfassung jetzt stimmt: müsste mein Code ja eigentlich funktionieren , weil ich ja nach jedem Word, Long oder Byte, ein Stop habe !
    Siehe Eeprom_Word_schreiben oder Eeprom_Long_schreiben.
    Was fällt dir auf ?
    Das habe ich aber schon mal erwähnt.
    Natürlich kannst du auch gezielt an irgendeine Adresse ein Word oder ähnliches schreiben. Du musst dabei nur beachten, das immer nur 1 Byte geschrieben wird und dann ein Stop kommen muss.

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo Albundy

    Das ist korrekt.
    Gut
    Siehe Eeprom_Word_schreiben oder Eeprom_Long_schreiben.
    Was fällt dir auf ?
    mmhh..
    Wie meinst Du das ?

    Ich sehe das bei meinem Code dann praktisch so, dass das schreiben "einer" Long-Variable als schreiben eines Pages (aus sicht des EEproms)
    gesehen wird.
    Wird mit Stop geschlossen und ist unter 64 Byte.
    Müsste also passen ?!

    Warum funktioniert dann das Speichern nicht richtig ?

    l.G.

  6. #16
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Hallo Roberto,

    ich habe mir jetzt einmal andere I2C Eeprom Datenblätter angesehen, da beim 24LC256 nicht sonderlich viel über den Page Write Modus steht.
    In einem stand, dass die Pageadresse ein vielfaches des Pagebuffers sein muss.
    Wenn das beim 24LC256 auch so ist, sind die Pageadressen doch fest vorgegeben.
    Sorry, das habe ich in dem Datenblatt, auch jetzt nach gezielter Suche nicht gefunden.
    Damit wäre dann aber klar, warum nach dem 3.Datensatz der Inhalt überschrieben wird.
    Der 1.Datensatz auf Speicherstelle 192 (Page 3) wird korrekt geschrieben.
    Der 3.Datensatz passt aber nicht mehr komplett in die Page und überschreibt mit den überzähligen Bytes den Anfang.

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo Albundy

    Dann stimmt meine zusammenfassung doch nicht

    In einem stand, dass die Pageadresse ein vielfaches des Pagebuffers sein muss.
    Würde sich mit der Aussage von Rage_empire decken.
    Nein, die Pages sind fest vorgegeben. Das erste BYte, welches du schreibst ist fest deffiniert durch die adresse, die du mitschickst. Wenn du nun keine "Stopbedingung" schickst und einfach weiterschreibst, schreibst du in die Page weiter. Wenn du die Page "Überrennst" (dabei über dessen Adressbereich fährst) fängst du nicht bei der nächsten an, sondrer bei der gleichen ganz von vorn (springst also zurück!)
    Könnte man sich das dann so wie ein Buch mit Seiten vorstellen?!
    Wenn ich nur Byte schreibe, blättert das EEprom die Seiten (Pages) selber um. Wenn ich aber längere Daten schreibe, muss ich selber schauen, dass umgeblättert wird ?!
    Ich selber kann aber nicht umblättern. Ausser wen zu Ende der Seite(Page) hin, Byte's geschrieben werden, die dann überlaufen und das EEprom umblättert ?

    Stimmt das so ?

    Was sagst Du Rage_Empire?

    L.G.

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo

    Habe jetzt mal im Internet geschaut.
    Leider findet man sehr wenig darüber:
    Hierbie bekomme ich den EE_Page-Write nicht hin. In allen Applikationen von Atmel sind nur Byteweise Schreib- und Lesezugriffe aufgefuehrt. Im Datenblatt ist alles theoretisch gut beschrieben. Die Page-Write-Applikation hierzu fehlt aber ganz.
    von hier:http://www.c51.de/c51.de/Kommunik/Forumlesen.php

    und hier was in Deutsch:
    http://www.eseo.de/i2c.htm
    Der seitenweise Zugriff ist identisch mit dem zuvor beschriebenen byteweisen Zugriff. Hier wird jedoch anstelle von nur einem Datenbyte gleich mehrere Datenbytes gesendet. EEPROM's unterstützen meist zwischen 8 und 16 Bytes pro seitenweiser Zugriff. Das EEPROM inkrementiert automatisch seinen internen Speicherzeiger zwischen den Schreibzyklen. Wird die höchste Adresse erreicht, so findet automatisch ein Umbruch statt und der Zeiger springt auf die erste Adresse zurück. Der große Vorteil des seitenweise Zugriffs ist das Senden von mehreren Bytes innerhalb nur eines Schreibzyklus.
    Da frage ich mich, für was ich den Pages-Modus überhaupt verwenden kann, wenn ich den Rest dann nur mehr mit Bytes vollschreiben kann,
    damit das Eeprom auf die nächste Seite springt. ?!

    Ich glaube ich werde dann doch besser bei dem Byte-schreiben bleiben

    Danke Euch zwei für die Mühe und die Zeit

    L.G. Roberto

  9. #19
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Zitat Zitat von Roberto
    Könnte man sich das dann so wie ein Buch mit Seiten vorstellen?!
    Wenn ich nur Byte schreibe, blättert das EEprom die Seiten (Pages) selber um. Wenn ich aber längere Daten schreibe, muss ich selber schauen, dass umgeblättert wird ?!
    Genau so würde ich das auch sehen!

    Jedenfalls hab ich meine Routinen alle auf Byte für Byte umgeschrieben und habe seit dem nie wieder Probleme gehabt.
    Die Denkweise der meisten Menschen ist vergleichbar mit einer Sicht durch ein Strohhalm.

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2004
    Ort
    GRAZ
    Alter
    58
    Beiträge
    576
    Hallo

    Es hat mich jetzt doch keine ruhe gelassen
    Probiere gerade 35 mal ein Word in das Eeprom zu speichern.
    (Adresse 0-70)
    Dann wieder auslesen.
    Die Werte sind dann von 0-70 wieder da. ?!
    Jetzt werde ich mal eine Page von 65 Länge probieren..

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress