www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM abspeichern Atmega 8


Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.

Möchte gerne ein kleines Programm mit einem LC Display machen und ein 
paar Daten auf EEPROM sichen.

Wie ich ein EEprom lesen oder beschreiben kann, weiß ich.

Mir geht es eher darum, wie ich das EEprom beschreibe, ohne es im 
Programmanfang machen zu müssen.

Also wenn ich es immer am Programmanfang machen würde, dann würde im 
EEprom immer das gleiche drin stehen, oder?

Sagen wir mal, im EEprom sind Daten für ein Lauflicht. Das wäre dann das 
Grundprogramm oder das Grundlauflicht. Wenn ich das Lauflicht verändern 
will, dann speichere ich es über die alten EEprom Daten.


Aber wie bekomm ich sie auf EEprom?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise kann jedes Brennprogramm ein EEPROM beschreiben.

Aber so würde ich das nicht machen.
Ich würde der Schaltung eine RS232 Schnittstelle verpassen.
Ins Programm kommt dann eine 'Konfigurationsmöglichkeit'
über RS232, sodass ich das Lauflicht ganz simpel mit einem
Terminalprogramm interaktiv ändern kann. Dieser Konfigurationsteil
nimmt die neuen Werte an und speichert sie im EEPROM.

Autor: Carsten Pietsch (papa_of_t)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo kriegst Du denn die neuen Daten her? Liest Du halt am Programmanfang, 
ob schon was drinsteht, wertest das aus und schreibst in Abhängigkeit 
davon den EEPROM neu. Im laufenden Programm kannst Du die Daten seriall 
per UART / PC empfangen und nach Empfang neu schreiben.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was hat eigentlich der Schreibvorgang in EEPROM mit dem Programmstart zu 
tun? Mir wars bisher eigentlich völlig Wurst wo in meinem Programmcode 
ich ins EEPROM schreibe oder daraus lese und meinen Controllern auch.

bye

Frank

Autor: Peter-neu-ulm (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andre,

unter  studio4, in Assembler, habe ich es folgendermaßen gelöst:

nach dem Assembler-statement .eseg den EEPROM-Inhalt mit .db 
hinschreiben.
Beim Assemblieren entsteht zusätzlich ein x.eep-file.

Da beim Programmieren mit dem hex-file gibt es ein obligatorisches 
chip-erase. Erst nach dem .hex file kann man das .eep file 
einprogrammieren.

Schau dir mal das Beispiel im Anhang an.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Da beim Programmieren mit dem hex-file gibt es ein obligatorisches
> chip-erase. Erst nach dem .hex file kann man das .eep file
> einprogrammieren.

...was sich bei vielen neueren AVRs per Fuse deaktivieren lässt.

Wenn die "Daten" (Lauflicht-Bitmuster) schon zur Entwurfszeit 
feststehen, dann kann man sie auch in einer Flash-Tabelle speichern. Das 
EEPROM ist eigentlich nur interessant, wenn man Daten zur Laufzeit 
ändern möchte (oder wenn es eng im Flash wird, was bei einem Lauflicht 
im Mega8 unwahrscheinlich ist). Die dazu erforderlichen Routinen für 
EEP-Zugriff sind in den Datenblättern und Appnotes recht brauchbar 
beschrieben.

...

Autor: Manni (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das gleiche Problem habe ich auch .....

Nutze AVR Studio 4.12 mit STK500 und serieller ISP Programmierung.

Problem ist:
Wenn neues Programm in den Flash geschrieben wird, wird automatisch das 
EEPROM gelöscht, was ich aber nicht möchte.

Daraufhin habe ich das Flag "Erase Device Before Programming" gelöscht 
(siehe Bild 1). Das Programmieren des Flash funktioniert aber nicht 
mehr, wenn ich das Programm neu compiliert habe (siehe Fehlermeldung 
Bild 2).

Kann mir jemand sagen, warum ich den Flash nicht einfach überschreiben 
kann, ohne das EEPROM gleichtzeitig zu löschen ?

Gruß
Manni



Autor: Manni (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier Bild 2 mit der Fehlermeldung

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manni wrote:
> Das gleiche Problem habe ich auch .....
>
> Nutze AVR Studio 4.12 mit STK500 und serieller ISP Programmierung.
>
> Problem ist:
> Wenn neues Programm in den Flash geschrieben wird, wird automatisch das
> EEPROM gelöscht, was ich aber nicht möchte.
>
> Daraufhin habe ich das Flag "Erase Device Before Programming" gelöscht

Das ist falsch!
Gehe auf Fuses und markiere preserve eeprom (oder so ähnlich, ich habe 
das jetzt nicht vor mir).

> (siehe Bild 1). Das Programmieren des Flash funktioniert aber nicht
> mehr, wenn ich das Programm neu compiliert habe (siehe Fehlermeldung
> Bild 2).
>
> Kann mir jemand sagen, warum ich den Flash nicht einfach überschreiben
> kann, ohne das EEPROM gleichtzeitig zu löschen ?

Flash lässt sich nur "im Ganzen" löschen, jedes Schreiben zieht die Bits 
bis zum nächsten Löschen nach 0. EEPROM lässt sich in beide Richtungen 
ändern, nach 1 und nach 0.

>
> Gruß
> Manni

...

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes,

das ging ja wie der Blitz. Problem gelöst !!

Nur nebenbei: bei den Fuse Bits bin ich immer etwas zurückhaltend -- aus 
bekannten Gründen -- deshalb hab' dort bisher noch nicht rumgefummelt.

Besten Dank !!
Manni

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manni wrote:
> bei den Fuse Bits bin ich immer etwas zurückhaltend -- aus
> bekannten Gründen -- deshalb hab' dort bisher noch nicht rumgefummelt.

Das ist ja ok.
Ich empfehle ja auch jedem Anfänger, die Finger erstmal von den Fusebits 
zu lassen, bis es sich etwas eingearbeitet hat und das dazu 
erforderliche Wissen und Verständnis hat. Aber irgendwann will man mehr, 
dann muss es sein, dann führt kein Weg an den Fuses vorbei. ;-)

...

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.