Hi,
ich habe aktuell folgendes Problem:
Ich möchte Daten nach z.B. einem Stromausfall wieder aus dem EEPROM
laden.
Konkret geht es um folgendes struct:
1 | struct sDigitalOut
|
2 | {
|
3 | uint32_t Preheat[10];
|
4 | uint32_t OnFromSecond[10];
|
5 | uint32_t OffFromSecond[10];
|
6 | uint16_t OnlyInMonth[10];
|
7 | uint8_t OnlyOnWeekday[10];
|
8 | uint8_t NumberOfTimers;
|
9 | };
|
Dieses struct initialisier ich einmal im RAM und einmal mit EEMEM:
1 | struct sDigitalOut DigitalOut = { .NumberOfTimers = 0 };
|
2 |
|
3 | struct sDigitalOut EEMEM EEDigitalOut = { .NumberOfTimers = 0 };
|
Beim start vom Controller möchte ich nun die Daten aus dem EEPROM lesen,
das mache ich mit
1 | eeprom_read_block(&DigitalOut, &EEDigitalOut, sizeof(struct sDigitalOut));
|
Allerdings ist dann .NumberOfTimers immer 255, also 0xFF, was mir sagt
dass der EEPROM leer ist. Ich übertrage beim Flashen mit AVR Studio 6.2
die .elf und die .eep Datei.
Wo liegt mein Fehler? Kommentier ich das eeprom_read_block aus, ist
.NumberOfTimers korrekterweise 0.
Controller ist ein mega88pa mit einem 7,3728MHz Quarz. Programmiert wird
über den originalen AVR ISP MK2.