EEprom, warum ist das so

Gast #141347
Hi.

Frage mich schon die ganze Zeit, wie das jetzt mit dem EEprom
funktioniert.

Man nimmt doch den EEprom, um Daten zu speichern, so wie beim SRAM, nur
das der nach Spannungsabfall wieder weg ist. Der EEprom bleibt doch nach
wegnehmen der Spannung, oder?

So, jetzt will ich was ins EEprom speichern, aber wohin?. Beim
AVRSTUDIO ist beim EEprom schon alles mit Hezzahlen vollgeschrieben,
wenn ich den Debugger starte. Wie kommt das? Warum sind nicht alle
EEprom Adressen aud FF, sowie beim SRAM.

Weil das Programm schreibt er ja ins Flash, oder?

Vielen Dank im voraus.

Gruß Avusgalaxy
Gast
"Der EEprom bleibt doch nach wegnehmen der Spannung, oder?"
ja

"So, jetzt will ich was ins EEprom speichern, aber wohin?"
such dir was aus. du hast die freie wahl

"Warum sind nicht alle EEprom Adressen aud FF, sowie beim SRAM. "
sind sie auch nach einem chip erase. keine ahnung warum im debugger
nicht

"Weil das Programm schreibt er ja ins Flash, oder?"
ja
Gast
Eine Frage noch....

Wenn ich ins SRAM das Register 16 in der Adresse 0x0060 ablegen will,
dann mach ich das doch so:

STS 0x0060, R16

Wenn ich es mir wieder holen will, dann so:

LDS R16, 0x0060

Wie sieht das dann beim EEprom aus?

Bei den Beispielen im Tutorial wird auf sowas nicht eingegangen, oder
ich verstehe was falsch.

Wie könnte ich den Hex-Wert des Registers 16 ins EEprom speichern, und
dann eventuell wieder auslesen=?

Weiß das jemand?

Gruß Avusgalaxy
Gast
Ich finde das in den Datenblättern exzellent beschrieben, teilweise
sogar mit Beispielcode. Warum liest Du nicht da nach?

Kurzfassung:
Lesen:
- Adresse der gewünschte EEPROM-Zelle in das Register EEAR (bzw. EEARL
und EEARH je nach Modell) laden
- Das EERE-Bit im Register EECR setzen (auf 1)
- je nach Modell: Warten bis das EERE-Bit wieder zurückgesetzt wurde
(auf 0)
- Daten (1 Byte) aus dem Register EEDR lesen

Schreiben:
- Adresse der gewünschte EEPROM-Zelle in das Register EEAR (bzw. EEARL
und EEARH bei mehr als 256 Bytes EEPROM) laden
- zu schreibende Daten in das Register EEDR laden
- das EEMWE-Bit im Register EECR setzen
- im nächsten Befehl das EEWE-Bit im Register EECR setzen
- Der Schreibvorgang ist beendet, wenn das EEWE-Bit wieder
zurückgesetzt wurde

Da es (gerade beim Schreiben) auf das Timing ankommt, sollte man
Interrupts wenn möglich nicht zulassen.

Christian

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.