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
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.
>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.
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
so ein Mist, sollte natürlich "umdrehen, erst H dann L" sein. MFG Uwe
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
Na setze doch mal die EESAVE-Fuse (in AVR-Studio "Preserve EEPROM during Chip-Erase"), dann wird das EEPROM beim Flashen nicht mehr überschrieben!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.