Forum: Mikrocontroller und Digitale Elektronik AVR-Funktion "write_eeprom_byte": Wo ist Adresse "0"?


von Stephan (Gast)


Lesenswert?

Hallo!

In der AVR Lib AVR/eeprom.h gibt es die Funktion eeprom_write_byte. 
Dieser übergibt man einen Zeiger als Adresse und das zu schreibende 
Byte. Der verwendete µC besitzt ein 4kB-Datenspeicher.

Frage: ist es korrekt, dass für die Speicherung von Daten die Adressen 
0-4085 zur Verfügung stehen?

von spess53 (Gast)


Lesenswert?

Hi

>Frage: ist es korrekt, dass für die Speicherung von Daten die Adressen
>0-4085 zur Verfügung stehen?

Nur wenn dein AVR 4k EEPROM besitzt. Sonst nicht.

MfG Spess

von Stephan (Gast)


Lesenswert?

spess53 schrieb:
> Nur wenn dein AVR 4k EEPROM besitzt. Sonst nicht.

Guut.

von spess53 (Gast)


Lesenswert?

Hi

Es sind natürlich 409

von spess53 (Gast)


Lesenswert?

Hi

Mist zu schnell gedrückt

Es sind natürlich 4095.

MfG Spess

von Stephan (Gast)


Lesenswert?

Warum wird um EEPROM- Nutzung eigentlich so viel Brimbamborium gemacht?
Man sieht die wildesten Beispielcodes und Turorials, dabei nimmt einen 
diese Lib von Atmel doch förmlich alles ab?!

von Falk B. (falk)


Lesenswert?

@ Stephan (Gast)

>In der AVR Lib AVR/eeprom.h gibt es die Funktion eeprom_write_byte.
>Dieser übergibt man einen Zeiger als Adresse und das zu schreibende
>Byte. Der verwendete µC besitzt ein 4kB-Datenspeicher.

Welchen Datenspeicher? Der AVR hat DREI verschiedene! RAM, FLASH und 
EEPROM, siehe Speicher.

Ja, aber man übergibt in C keine absoluten Adressen sondern Namen von 
Variablen im EEPROM. Um die realen, absoluten Adressen kümmert sich der 
Compiler.

von Stephan (Gast)


Lesenswert?

Falk Brunner schrieb:
> Welchen Datenspeicher?

Ich rede zZt immer nur vom EEPROM.

Der Prototyp lautet
void eeprom_write_byte(  uint8_t * __p, uint8_t __value);
"Write a byte __value to EEPROM address __p."

Wie übergibt man denn hier einen Variablennamen?

von Cyblord -. (cyblord)


Lesenswert?

1
uint8_t x EEMEM; //<-- global
2
3
[...]
4
5
eeprom_write_byte(&x, 55);

Du übergibst die ADRESSE einer Variablen im EEPROM.

Die avr-size Ausgabe zeigt dir dann auch gleich den belegten Speicher im 
EEPROM an. Die konkrete Adresse ist dir egal. Die ist dir bei Variablen 
im RAM ja auch egal.

von Stephan (Gast)


Lesenswert?

cyblord ---- schrieb:
> Du übergibst die ADRESSE einer Variablen im EEPROM.

Ooookay, jetzt hab ichs. Danke!!

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
Noch kein Account? Hier anmelden.