Forum: Mikrocontroller und Digitale Elektronik eeprom_read_block() liefert 'keine' Daten beim ersten lesen


von yeyo (Gast)


Lesenswert?

Hallo,

beim Mega16 werden die Daten aus EEPROM beim ersten Lesen nach RESET 
nicht gelesen. Beim zweiten Lesen werden alle DAten korrekt gelesen.

Code:
1
uint8_t data[8];
2
eeprom_read_block(&data, 0x00, sizeof(data));

ich verwende:
AVR Studio: 4.14
AVR Libc 1.6.2


Kennt jemand das Problem?

von Michael L. (-mic-)


Lesenswert?

hallo.

> Kennt jemand das Problem?

nein. aber ich kenne ein anderes weit verbreitetes problem:
jemand postet probleme mit der ausführung einer funktion, aber statt der 
funktion selbst gibt er nur deren aufruf preis, noch dazu ohne kontext.

gruß

michael

von Stefan K. (_sk_)


Lesenswert?

Aus der avr_libc:

5.4.3 Function Documentation
5.4.3.1 void eeprom_read_block (void  buf, const void  addr, size_t n)
Read a block of n bytes from EEPROM address addr to buf.

Was heisst denn "nicht gelesen"? Irgendwas wird doch zurückkommen? 
Inhalt falsch? Alle Bytes betroffen?


Gruß, Stefan

von Felix N. (time2ride)


Lesenswert?

yeyo wrote:
> Code:
>
1
> uint8_t data[8];
2
> eeprom_read_block(&data, 0x00, sizeof(data));
3
>

Probier mal:
1
uint8_t data[8];
2
while(!eeprom_is_ready()){}  //Warten bis EEPROM bereit
3
eeprom_read_block(&data, 0x00, sizeof(data));
Wahrscheinlich willst du was aus dem EEPROM lesen, das EEPROM ist aber 
noch gar nicht bereit dafür...

von Oliver (Gast)


Lesenswert?

>Wahrscheinlich willst du was aus dem EEPROM lesen, das EEPROM ist aber
>noch gar nicht bereit dafür...

Das wäre aber nicht im Sínne des (avr-libc-)Erfinders, denn in der Doku 
heisst es dazu:

>Note:
>All of the read/write functions first make sure the EEPROM is ready to >be 
accessed.

Oliver

von Felix N. (time2ride)


Lesenswert?

Oliver wrote:
>>Wahrscheinlich willst du was aus dem EEPROM lesen, das EEPROM ist aber
>>noch gar nicht bereit dafür...
>
> Das wäre aber nicht im Sínne des (avr-libc-)Erfinders, denn in der Doku
> heisst es dazu:

Tatsächlich, da hast du wohl Recht. Mein Fehler...

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.