Hallo, Leute!
Bevor ihr weiter liest: ja, ich brauche Urlaub, und zwar dringend...
Dann zum Problem... ich habe folgendes Programm für den ATMega8
geschrieben:
1 | struct eepromData
|
2 | {
|
3 | uint8_t number;
|
4 | char str[10];
|
5 | };
|
6 |
|
7 | struct eepromData test;
|
8 | struct eepromData eeTest[1] EEMEM;
|
9 |
|
10 | int main()
|
11 | {
|
12 | memset((&test), '\0', (sizeof(test)));
|
13 | eeprom_read_block(&test, &eeTest[0], sizeof(test));
|
14 | memset((&test.str), '\0', (sizeof(test.str)));
|
15 | itoa(test.number, test.str, 10);
|
16 | test.number++;
|
17 | eeprom_write_block(&test, &eeTest[0], sizeof(test));
|
18 | }
|
Ich habe eine Datei angelegt mit alle 0x00 (also, 512 Bytes = 0).
Ich schreibe diese Datei in die EEPROM mit:
avrdude -pm8 -cstk500v2 -P/dev/ttyACM0 -U eeprom:w:test.eeprom:r
Und ich lese die Werte mit:
avrdude -pm8 -cstk500v2 -P/dev/ttyACM0 -U eeprom:r:out.eeprom:r &&
hexdump -C out.eeprom
Nun, habe ich zwei Probleme:
1) Nachdem ich das Programm wieder flashe, werde die vorige Werte in der
EEPROM scheinbar gelöscht.
2) (vielleicht ist ein anderes Teil desselben Problems) Wenn ich den
ATMega8 ausschalte und wieder einschalte, werden auch die Werte
gelöscht.
In Prinzip, wenn ich die Werte von EEPROM lese kriege ich sowas:
1 | 00000000 03 32 00 00 00 00 00 00 00 00 00 ff ff ff ff ff |.2..............|
|
2 | 00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
|
3 | *
|
4 | 00000200
|
die erste Byte wird immer erhöht und danach wird als String den vorigen
Wert ausgegeben.
Wenn ich mehrmals die Werte lese (und das Programm entsprechend wieder
gestartet) alles sieht es normal aus, aber, sobald ich eine der zwei
vorher erklärte Aktionen durchführe, kriege ich wieder:
1 | 00000000 01 30 00 00 00 00 00 00 00 00 00 ff ff ff ff ff |.0..............|
|
2 | 00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
|
3 | *
|
4 | 00000200
|
Ich freue mich auf eurer Hilfe und werde überhaupt nicht böse, wenn ihr
sagt, daß ich dumm bin und was notwendiges vergessen habe! :D
Grüße
Luca Bertoncello