mikrocontroller.net

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


Autor: avusgalaxy (Gast)
Datum:

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

Autor: Tobi (Gast)
Datum:

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

Autor: avusgalaxy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke Tobi

Autor: avusgalaxy (Gast)
Datum:

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

Autor: Christian Zietz (Gast)
Datum:

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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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