Forum: Mikrocontroller und Digitale Elektronik EEprom, warum ist das so


von avusgalaxy (Gast)


Lesenswert?

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

von Tobi (Gast)


Lesenswert?

"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

von avusgalaxy (Gast)


Lesenswert?

danke Tobi

von avusgalaxy (Gast)


Lesenswert?

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

von Christian Zietz (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.