Forum: Mikrocontroller und Digitale Elektronik EEPROM Array füllen


von Cyrill M. (kerik)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich versuche ein Array, das im EEPROM liegt, mit beliebigen Werten zu 
beschreiben. Das Problem ist aber - die Werte werden einfach so im 
EEPROM verstreut, bzw. mehrmals auf eine Adresse gespeichert. Bei meinem 
kurzem Programm werden, zum Beispiel, die ersten 16 Werte auf die 0x0000 
Adresse gespeichert. Das gleiche Bekomme ich wenn ich das EEPROM aus µC 
auslese.
Hat jemand eine Idee voran das liegen könnte?
1
#include <avr/io.h>
2
#include <avr/eeprom.h>
3
4
unsigned char EEMEM feld[100];
5
6
int main(void)
7
{
8
while(1)
9
  {
10
  
11
  for (unsigned char i=0;i<100;i++)
12
  {
13
    while(eeprom_is_ready()==0);
14
    eeprom_write_byte(feld[i],i);    
15
  }  
16
  }
17
}
MfG

Kerik

von P. S. (Gast)


Lesenswert?

Du willst nicht feld[i] uebergeben, sondern dessen Adresse: &( feld[i]).

von Cyrill M. (kerik)


Lesenswert?

Vielen Dank!!

Und schon wieder war die Lösung leichter, als ich gedacht habe. Ist ja 
schon etwas peinlich sowas, aber ich hatte irgendwie in Errinerung, dass 
Felder schon als Adressen angenommen werden. Hatte wohl falsch gedacht!
Vielen dank noch mal! Jetzt funktioniert einwandfrei!

MfG
Kerik

von spamaufspürer (Gast)


Lesenswert?

int feld[42];

feld ist eine Adresse.
feld[3] ist keine.
&(feld[4]) ist wieder eine.
feld+4 auch.

von Ralf G. (ralg)


Lesenswert?

Cyrill M. schrieb:
> aber ich hatte irgendwie in Errinerung, dass
> Felder schon als Adressen angenommen werden
Aber nur ohne Index. (Wenn man das korrekt so überhaupt sagen darf)

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Cyrill M. schrieb:
> aber ich hatte irgendwie in Errinerung, dass
> Felder schon als Adressen angenommen werden

Das stimmt ja auch, bloß handelt es sich bei feld[i] nicht um ein Array, 
sondern um ein einzelnes Element daraus, in diesem Fall vom Typ unsigned 
char.

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.