eeprom Verständnisfrage

OP #363773
Lesenswert?
• ▲
▼
Hi,

wär nett, wenn mir jemand knapp erklären könnte, was es bei der
Verwendung von eeprom (variablen) zu beachten gibt.

Ich habe mich an das Tutorial gehalten, verstehe aber nicht genau, was
der Compiler da für mich macht (es passiert jedenfalls nicht das, was
ich erwartet habe). Definition global:

uint16_t top EEMEM = 220;

Was steht jetzt in der Variable, was steht im eeprom?

Der Ausleseversuch schlägt fehl (~ergibt Quatsch):

eeprom_read_word(&top) ergibt (ascii) "-1"

Hat jetzt die Variable den Wert 220, und der Platz im eeprom ist noch
gar nicht beschrieben?

So ist es, avrdude hat das .eep gar nicht geschrieben.. Jetzt
klappt's! Allerdings habe ich das eep mit WinAVR geschrieben, avrdude
wollte nicht:
loadpage instruction not defined for part "ATtiny2313"

Was muß ich da machen?
Gast #363775
Lesenswert?
• ▲
▼
> uint16_t top EEMEM = 220;

sagt dem Compiler dass er im separaten EEProm Speicher bitte 16 Bit (2
Bytes) für eine Variable mit dem Namen top reservieren soll. Zudem soll
 in dem .hex-File für das EEProm (üblicherweise mit der Extension .eep)
für diese Variable der Wert 220 eingetragenm werden.

Falls du jetzt das Programm (.hex) und das .eep File auf den MC
programmierts kannst du mit eprom_read_word(&top) diesen Wert von 220
ins RAM/in ein Register holen. Mit eeprom_write_word() kannst du diesen
Wert überschreiben.
Gast #363776
Lesenswert?
• ▲
▼
Kann man eigentlich mit EEMEM auch die Adresse im EEPROM angeben??
Geht darum, um komplette verschiedene Array's während des compilierens
zu erzeugen; mir ist dabei halt mal aufgefallen, daß der Compiler
durchaus auch mal die Reihenfolge vertauscht, z.B.

unsigned char NAME[] EEMEM =
{"ESELCHEN"};
unsigned char Message[] EEMEM =
{"Hallo, Welt..."};
unsigned char Comment[] EEMEM =
{"noch ne Zeile..."}

können so liegen, wie der Compiler gerade "Lust" hat; er selbst weiß
ja über die Namensauflösung die Adresse.

Kann man da so eingreifen, daß das 1. Array z.B. an Adresse 0x10
beginnt, das 2. an Adresse 0x40 und das dritte an 0x60, damit man genau
weiß (auch aus anderen Applikationen), wo man hinadressieren muß??

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.