mikrocontroller.net

Forum: Compiler & IDEs Text in eeprom


Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI,

Wer kann mir mit dem eeprom helfen ? ich habe von keine ahnung, da ich
es noch nie brauchte. Habe schon einige tutorials gelesen, aber bin
nicht damit klar gekommen bzw. es wurde drüber kein wort verloren...
ich nutze einen atmega32 bzw. at2313 zum testen und schreibe in C mit
WinAVR

Mein Problem ist:
Ich will einen festen ASCII-text für ein LCD in den eeprom schreiben,
da er im flash nur platz verschwendet. wird ja nur gelegentlich
benötigt.
aber ich habe keine ahnung wie ich mir eine eeprom-datei erzeugen kann,
wo dies drinnen steht. angeblich soll man dies über eine
compileranweisung machen können, aber nur wie ?
kann mir jemand von euch bei diesem problem helfen ?

Danke

MfG
Bert

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine "Compileranweisung", sondern ein Aufruf von (avr-)objcopy mit
entsprechenden Parametern, welche die Daten aus der "Section eeprom"
in eine hex-Datei umwandelt. Wenn das Makefile der WinAVR/MFile-Vorlage
entspricht, wird beim "make all" eine .epp-Datei erzeugt.

Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den hinweis.
eine .epp-Datei wird ja erzeugt, aber ohne inhalt. Wie kann ich sie mit
inhalt erzeugen lassen ?

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Glaub ich bin zu blöd dafür !!!
Aber dennoch danke für eure antworten

Autor: gaston (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo ihr beiden.
die Lösung des besagten Problems würde mich eigentlich auch
interessieren. Es ist ja mit assebler (AVRstudio) möglich, über eine
.eseg - Tabelle die .eep datei mit daten zu füllen, und über das Label
wieder abzurufen.
z.B.
.eseg
text1:  .db   "Text fürs LCD"
text2:  .db  "blablalolol ja"
usw.

ist sowas auch mit WinAVR möglich?
danke, mfg gaston

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zitat mthomas vom 21.04.2005 19:29

Welche Fragen laesst
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
offen?

Autor: Markus Muelln (seeadler78)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Man kann den Text folgendermasen in das EEPROM legen.

const unsigned char _attribute_ ((section (".eeprom")))
text[]={'T','O','O','R'};

const unsigned char                     // gibt den Datentyp an
_attribute_ ((section (".eeprom")))   // ins EEPROM
text[]={'T','O','O','R'};               // Variable die ins
EEPROM soll

bis dann

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus:
1. Ich glaube kaum, dass dem Thread Opener nach mehr als einem Jahr
diese Information noch was bringt. Wenn er sein Problem nicht
mittlerweile selbst gelöst hat, ist ihm wohl nicht mehr zu helfen!

2. Für _attribute_ ((section (".eeprom"))) gibt es in der libc
extra eine Kurzschreibweise, nämlich EEMEM. Dadurch wird das Ganze viel
übersichtlicher.

3. Wenn Du einen Text so ablegst, bekommst Du mit einiger
Wahrscheinlichkeit Probleme, wenn Du ihn über eine
String-Ausgabe-Funktion ausgeben willst. ASCII-Strings werden
eigentlich grundsätzlich mit abschließendem Nullterminator gespeichert,
damit man weiß, wo der String zu Ende ist. Also wenn, dann so:
EEMEM text[]={'T','O','O','R','\0'};
Und den String kann man auch einfacher schreiben:
EEMEM text[]="TOOR";
...und das hat den angenehmen Nebeneffekt, dass man sich keine Gedanken
über den Nullterminator machen muss...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz davon abgesehen, halte ich die Begründung für die Benutzung
des EEPROMs für nicht sehr sinnvoll: der ist teurer als der RAM
(und folglich ist davon weniger da).  Hätte also eigentlich nur
Sinn, wenn der Flash sowieso schon voll ist, aber im EEPROM noch
Platz.

Weiterer Vorteil von Strings im Flash ist, dass es bereits einige
Funktionen gibt, damit man auf diese einfach zugreifen kann.  Beim
EEPROM macht man das auch alles selbst.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe grad, habe oben den Variablentyp vergessen. Muss natürlich heißen
unsigned char EEMEM text[]={'T','O','O','R','\0'};
bzw.
unsigned char EEMEM text[]="TOOR";

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.