mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEprom - ATmega16 Datenverlust nach schreiben


Autor: Kie Bitz0309 (kiebitz0309)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
  ldi r21,0x04  ; R21 mit neuen Wert laden
EEwrite:  sbic EECR,EEWE  ; warten evtl. schreiben des vorherigen Bytes
  rjmp EEwrite      ;
  ldi r16, 0x03      ; Adresse laden  LOW-Teil
          ldi r17, 0x00      ; Adresse laden HIGH-Teil
          out EEARL, r16      ; Adressregister laden
          out EEARH, r17
  out EEDR, r21      ;R21 ins EEPROM speichern
  sbi EECR,EEMWE      ;EEPROM Master Write Enable
  sbi EECR,EEWE      ;EEPROM Master Write Enable


Mit diesem Programmteil beschreibe ich die Adresse 0003h im EEprom neu. 
Das klappt auch ausgezeichnet. Interessanterweise sind jedoch die 
Inhalte der Adressen, die vorher beschrieben waren gelöscht ??
Welche eventuell andere Möglichkeit gibt es, ca. 100 Bytes mit genauer 
Adresse im EEprom abzulegen?
Ich brauche für Einstellungen immer nur bestimmte Werte, die aus diesen 
100 Werten zusammengestellt werden. Eventuell muss es aber möglich sein, 
diese Werte zu ändern.

Vielen Dank Kiebitz

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es sein, dass Du zwischendurch das Programm geändert, also den 
Flash neu beschrieben hast? Beim Löschen des Flash wird das EEPROM 
ebenfalls gelöscht. Es gibt eine Fuse, die dies verhindert.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Welche eventuell andere Möglichkeit gibt es, ca. 100 Bytes mit genauer
>Adresse im EEprom abzulegen?

Keine, das ist schon alles korrekt so. Du mußt aber sicherstellen, daß 
Dir während der EEPROM-Routine kein Interrupt dazwischenfährt, sonst 
kann das programmieren der Speicherzelle in die Hose gehen. 
Gegebenenfalls sperrst Du unmittelbar vor dem EEPROM-Aufruf die 
Interrupts global mit "cli" und schaltest sie danach mit "sei" wieder 
ein.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
>Welche eventuell andere Möglichkeit gibt es, ca. 100 Bytes mit genauer
>Adresse im EEprom abzulegen?

Im Programm
.eseg
.org 10 ;deine gewünschte Adresse
.db....... ;deine Daten

Wärend der Laufzeit nur wie du es gemacht hast nur die Ausgabe von
 out EEARL, r16      ; Adressregister laden
 out EEARH, r17

umdrehen, erst L dann H

Viel Erfolg, Uwe

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ein Mist, sollte natürlich "umdrehen, erst H dann L" sein.

MFG Uwe

Autor: Kie Bitz0309 (kiebitz0309)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die umgehende Hilfe.
Dér EEprom wird bei mir tatsächlich durch das neue Flashen gelöscht. 
Meine Routine schreibt dann die neuen Werte rein und es scheint wie eine 
Löschung während der Routine. :o(
Ich muss also grundsätzlich erst die Routiene einladen.
Danach erst den EEprom flashen.
Nochmals Danke an alle! Hoffe mich mal revanchieren zu können.
Kiebitz

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na setze doch mal die EESAVE-Fuse (in AVR-Studio "Preserve EEPROM during 
Chip-Erase"), dann wird das EEPROM beim Flashen nicht mehr 
überschrieben!

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.