Sopest wrote:
> Folgende deklaration für die Variablen wurde getroffen:
>
>
1 | #include <avr/eeprom.h>
|
2 | > #include <avr/io.h>
|
3 | >
|
4 | > #define EEMEM __attribute__ ((section (".eeprom")))
|
5 | >
|
6 | > #define EE_DUMMY 0x000
|
7 | > #define EE_WERT ( 0x000 + sizeof( uint8_t ) )
|
8 | > #define EE_ANZAHL ( EE_WERT + sizeof( uint8_t ) )
|
9 | > #define EE_NAME ( EE_ANZAHL + sizeof( uint16_t ) )
|
10 | > #define EE_WERTIGKEIT ( EE_NAME + 10 * sizeof( uint8_t ) )
|
11 | > #define EE_LAST ( EE_WERTIGKEIT + sizeof( uint8_t ) )
|
>
> Nun habe ich mir das AVR-GCC-Tutorial des öfteren durchgelesen, und bin
> der Meinung, dass der obere Code die Variablen auf dem EEPROM definiert.
Das definiert überhaupt keine Variablen, sondern stellt lediglich
eine Reihe von Zahlen bereit. Im Grunde ist es dasselbe, wie wenn
du geschrieben hättest
1 | #define EE_DUMMY 0
|
2 | #define EE_WERT 1
|
3 | #define EE_ANZAHL 2
|
4 | #define EE_NAME 4
|
5 | #define EE_WERTIGKEIT 14
|
6 | #define EE_LAST 15
|
> Wie kann ich auf diese Variablen zugreifen?
Du kannst eeprom_read_byte / eeprom_read_word benutzen und
dort diese Zahlen als Adresse angeben, von wo im EEPROM gelesen
bzw. geschrieben werden soll.
Nochmal: Du hast hier keine Variablen, du hast lediglich Zahlen
die du als Adresse im EEPROM Speicher benutzen kannst um
von dort zu lesen bzw. zu schreiben.
> Sind sie so richtig definiert? in z.B EE_ANZAHL wie kann ich da eine
> Zahl (z.B 101) hinein schreiben.
>
>
1 | uint8_t temp1;
|
2 | > uint16_t temp2;
|
3 | >
|
4 | > temp1 = eeprom_read_byte(EE_WERT);
|
5 | > temp2 = eeprom_read_word(EE_NAME);
|
6 | >
|
Aufpassen. EE_NAME hat den Wert 4. Die nächste Adresse die du
berechnet hast, EE_WERTIGKEIT, hat den Wert 14, dazwischen liegt
also eine Differnz von 10. 10 Bytes sind aber kein Word.